איך לקמפל JSON לתוך EXE
-
יצירתי EXE, אך שמירת הנתונים שלו מתבצעת ב JSON חיצוני, מה שאומר שהלקוח יצטרך כל הזמן לסחוב איתו קובץ EXE וקובץ JSON..
איך אפשר להכניס את הJSON לתוך ה EXE?
דוגמאות למה שאני רוצה:
באקסל אם אני שומר את הנתונים קובץ האקסל עצמו גודל, בלי להשתמש בקובץ חיצוני.
וכן בוורד ואקסס. הם פשוט נהיים יותר כבדים.(אשמח לתשובות גם משפות אחרות, כדי לדעת מה לחפש ואיך לעבוד. אני ספציפית פיתחתי עם RUST בספריית TAURI)
-
@Y-Excel-Access לא נהוג לשמור נתונים משתנים בתוך קובץ EXE
יש כמה בעיות בזה
א) אם הקובץ חתום, שינוי התוכן יפסול את החתימה
ב) אם ה EXE בתקיית program files הגלובלי, צריך הרשאות מנהל לכתוב אליה
ג) על פי רוב הקובץ זמין לשימוש לכמה משתמשים וצריך לשמור את המידע של כל משתמש בנפרדמידע ססטי אפשר לשמור באזור ה-resources של ה-EXE. אני לא יודע איך עושים את זה ב-tauri
בעקרון אם אתה מתעקש תוכל לשמור גם מידע משתנה שם, אבל אני לא כל כך ממליץ.
כדי לעשות את זה תצטרך למצוא ספרייה שיודע לכתוב לאזור ה-resources של EXE.נ.ב. לכאורה יש קצת בעיה שבווינדוס קובץ בעת ריצה נעול לכתיבה, צריך עיון איך מתגברים על זה.
-
פוסט זה נמחק!
-
@yossiz
לכאורה כאן - https://tauri.app/v1/guides/building/sidecar/ ספריית TAURI מטפלת בזה. אני צודק?
אך זה https://tauri.app/v1/guides/building/resources/ לא קשור, למרות שקוראים לזה "resources".אשמח אם תרפרף על זה 10 שניות כדי לוודא שזה באמת זה (אני לא מכיר מספיק את המושגים... ולכן שאלתי ). ותודה רבה על התשובה המפורטת והברורה.
-
אני רוצה להיות בטוח שהבנתי את המקרה
נא להרחיב:@Y-Excel-Access כתב באיך לקמפל JSON לתוך EXE:
יצרתי EXE
אתה מדבר על קובץ התקנה או התוכנה עצמה? (אני הבנתי שמדובר על התוכנה עצמה, כלומר תוכנה ניידת שהיא קובץ EXE יחיד)
אך שמירת הנתונים שלו מתבצעת ב JSON
האם מדובר בנתונים שמתעדכנים מהרצה להרצה או נתונים סטטיים? (אני הבנתי שאתה רוצה לשמור נתונים משתנים בתוך ה-EXE, לכן כתבתי את הדרשה הארוכה למה לא לשמור ב-EXE)
-
@yossiz תודה רבה, ואסביר.
אני חוש שההבנה הראשונית שלך מצוינת.
יצרתי תוכנה, לא קובץ התקנה.
בשלב הראשון לא שמרתי את הנתונים, אז התוכנה קומפלה ל EXE והיא עבדה בכל מקום ללא תלות בשום קובץ.אח"כ הוספתי בתוך הקוד שלי פקודה לשמור את הנתונים בתוך JSON, וכעת התוכנה לא תעבוד אלא אם כן יש קובץ JSON באותה תיקייה בה ממוקמת התוכנה (ה EXE).
הבעיה בזה
- שזה מסורבל למשתמש - הכי פשוט להשתמש עם קובץ בודד ולא תיקייה שלימה.
- זה חושף את הנתונים שנשמרו:
- יכול להיות בהם דברים שצנעת הפרט חשובה, או שיש קוד כניסה או תנאים שלי למשתמש וכד', ועם הJSON יהיה אפשר לראות את כל הנתונים.
- יכול להיות שאיזה משתמש יפתח את ה JSON וישנה שם נתונים, ואז התוכנה לא תוכל לקרוא יותר מה JSON (כי הנתונים בו לא יהיו מסודרים בסדר שקבעתי מראש), ויאבדו נתונים חשובים.
לכן חשבתי על האפשרות לשמור בתוך ה EXE עצמו, וכנ"ל.
-
-
אפשרי להצפין את הקובץ, עם מפתח סטטי שנמצא בתוך הexe.
-
אפשר לשמור את המידע הזה בregistry, או לשמור במיקום קבוע בתוך %localappdata% וכדומה, המיקום תלוי אם זה גלובלי למחשב או לכל משתמש בנפרד.
אין בעיה בזה שתוכנה יוצרת קובץ במחשב, זה הגיוני ונורמלי. -
בכל דרך פעולה שהיא, בין הנוכחית ובין המוצעת לך כאן, צריך לבדוק ששכפול של הקובץ (ו\או הקבצים הנוספים) לא יאפשר שכפול של פעילות התוכנה (אם התוכנה בתשלום).
בכל מקרה כדאי וצריך להצפין את הנתונים באיזה שהוא אופן, אפשר למשל שהמפתח יהיה משהו סטטי שנמצא בתוך התוכנה + משהו מהמחשב כמו שם משתמש ושם מחשב וכדומה (יש גם API ייעודי לזה של win)
ברור שזה מסבך את הפיתוח בהרבה, אבל אלו הצרכים שהצגת. -
-
@Y-Excel-Access כתב באיך לקמפל JSON לתוך EXE:
וכעת התוכנה לא תעבוד אלא אם כן יש קובץ JSON באותה תיקייה בה ממוקמת התוכנה
התוכנה צריכה להתייחס בסלחנות למקרה שאין לו קובץ נתונים וליצור את הקובץ בעצמו עם ערכי ברירת מחדל
@Y-Excel-Access כתב באיך לקמפל JSON לתוך EXE:
שזה מסורבל למשתמש - הכי פשוט להשתמש עם קובץ בודד ולא תיקייה שלימה.
אם זו תוכנה שאמורה להתנייד ממחשב למחשב אין מנוס, צריך לשמור את הנתונים איפשהו, ובתוך ה-EXE לא אופציה (לפחות לא אופציה נורמלית, בנוסף, בווינדוס זה יהיה אתגר כי ה-EXE נעול לכתיבה בזמן ריצה)
אם התוכנה לא אמור להתנייד אז הפתרון פשוט לשמור את הקובץ בתקיית appdata שמיועד בדיוק עבור זה.
ב-tauri ספציפית יש לך עוד אופציה להשתמש באחסון localstorage של ה"דפדפן" (webview)
@Y-Excel-Access כתב באיך לקמפל JSON לתוך EXE:
יכול להיות בהם דברים שצנעת הפרט חשובה, או שיש קוד כניסה או תנאים שלי למשתמש וכד', ועם הJSON יהיה אפשר לראות את כל הנתונים.
גם שמירה בתוך ה-EXE לא ימנע ממשתמש נחוש להגיע לסודות שאתה רוצה להסתיר. אם זה לא מידע ממש רגיש ורק שיש עדיפות שמשתמשים לא יגיעו אליו בקלות אז שמירה ב-localstorage יכול להספיק לך
-
@Y-Excel-Access כתב באיך לקמפל JSON לתוך EXE:
לכאורה כאן - https://tauri.app/v1/guides/building/sidecar/ ספריית TAURI מטפלת בזה. אני צודק?
לכאורה לא. זה מיועד לקבצי הרצה שאתה רוצה להריץ ביחד עם האפליקציה שלך.
אך זה https://tauri.app/v1/guides/building/resources/ לא קשור, למרות שקוראים לזה "resources".
זה יותר קשור אבל לא לגמרי קשור כי מדובר שם בקבצים סטטיים, ואתה מדבר על נתונים דינאמיים.
בשתי הדרכים הקובץ ארוז בתוך קובץ ההתקנה אבל לא בתוך ה-EXE של התוכנה