תוכנית התקנה

עוד משהו שימושי

שנזכרתי בו... מנוע ההתקנה צריך בהרבה *מאוד* מקרים תמיכה בקריאה לפונקציות חיצוניות.... בד"כ כדי לברר פרטים על המערכת, שמנוע ההתקנה לא חשב על לבדוק. מה לעשות, אתה אף פעם לא יכול לדעת מה יצטרך המשתמש להוסיף להתקנה שלו... לדוגמה, באחת ההתקנות שכתבתי, היתה חתיכת קוד שבודקת האם פורט IP מסויים תפוס, ואם כן ע"י איזה תהליך/SERVICE. היא היתה מחזירה את שם התהליך/SERVICE לתוך משתנה מקומי במנוע ההתקנה, וזה היה מנוצל מאוחר יותר בכדי לשנות SERVICE DEPENDENCIES ועוד כמה דברים. קוד זה נכתב לתוך DLL וניצל בכלל API קרנליסטי, לא פחות ולא יותר.... זה גם תומך בגישת ההתקנה המינימליסטית שתיארתי קודם לכן, כי אחרת הייתי צריך להציג למשתמש חלון ששואל אותו לשם התהליך/SERVICE (וזאת בהנחה כמובן, שמנוע ההתקנה מסוגל לבדוק את תקינות הרלט מהמשתמש במקרה כזה).
 

gilad_no

New member
PLUGINS

כבר אמרתי, שאחד הדברים הראשונים שאני אוסיף זה אפשרות לPLUGINS חיצוניים שיהיה אפשר להשתמש בהם מתוך המערכת (בצורה שקופה - כמובן).
 
מודל שהכנתי לפני חצי שנה

אולי זה יעזור לך, גלעד. אני הייתי בוחר את המודל הבא כמשהו שמתקרב לאידאל של שילוב בין מנוע התקנה לעניין ההגדרות. לגבי מנוע ההתקנה כבר פירטתי. הדרישה היחידה ממנו כדי לתקשר עם תוכנת ה-CONFIG, היא שיהיה מסוגל לקרוא לפונקציות חיצוניות (להעביר/להחזיר טיפוסים סטנדרטיים). HERE GOES.... יוגדר API סטנדרטי לעבודה עם תוכנת CONFIG כלשהי. סביבת הפיתוח של ההתקנה תגיע עם תוכנת CONFIG סטנדרטית (לפי ה-API הנ"ל) וחינמית, שאפשר להתקין עם המוצר שלי. מפתח ההתקנה יגדיר בתוך סביבת הפיתוח את כל ההגדרות הדרושות לתוכנה שלו, כאשר הוא יפריד בין הגדרות PUBLIC (כאלה שמותר למשתמש לשנות) והגדרות PRIVATE (כאלה שהן חלק מתשתית המוצר, ואינן בשליטת המשתמש). מטעמי SECURITY, עדיף שההגדרות "יתקמפלו" יחד עם GUI כשלהו לתוכנת CONFIG אחת, וזו תותקן יחד עם המוצר שלי. אבל אפשר כמובן לוותר על העניין, לפחות בהתחלה, ולספק תוכנת CONFIG מקומפלת מראש, שרק מקבלת קובץ הגדרות כקלט. תוכנת ה-CONFIG תתמוך ב-SILENT CONFIG, REMOVE CONFIG, COMMAND LINE וכן ב-INIT CONFIG (מאתחל הגדרות PRIVATE) וכמובן ב-GET CONFIG, SET CONFIG. אפשר לתמוך גם ב-INIT BY SCRIPT, כדי לשנות הרבה הגדרות בבת אחת. תוכנת ההגדרות תציג GUI סטנדרטי שיאפשר לי להגדיר את כל מה שצריך במוצר (הגדרות PUBLIC). לדוגמה, משהו בסגנון ה-GUI של ICQ. יהיה אפשר להרחיב את תוכנת ה-CONFIG כדי לבצע עוד דברים יותר ספציפיים או כדי להשפיע על ה-GUI שלה - זאת ע"י DLLS או משהו בסגנון. מנוע ההתקנה, יוכל להפעיל את תוכנת ה-CONFIG בסיום ההתקנה: קודם כל הוא יבצע INIT CONFIG, ואח"כ יפעיל אותה כ-GUI (או SILENT במידה ומשתמשים בהגדרות DEFAULT). מנוע ההתקנה יוכל לבצע קריאות API לתוכנת ה-CONFIG אפילו בזמן ההתקנה עצמה במקרה הכי גרוע, כדי לתקשר עם הגדרות מוצר קיימות בזמן UPGRADES. ד"א, אני כרגע גם מנסה לדחוף את המודל הזה לגירסה הבאה של המוצר שאנחנו מפתחים בעבודה, שכן כרגע אנחנו עובדים כבר במודל ביניים שפיתחתי בשנה האחרונה, והסקתי ממנו הרבה מסקנות... WISH ME LUCK
 

eyalbd

New member
תוכניות התקנה

אני חושב שאם תוכנית דורשת משהו יותר מורכב מ xcopy + כמה סקריפטים לקונפיגורציה שלאחר ההעתקה אז משהו לא בסדר באותה תוכנית. - כל שאר הקונפיגורציות צריכות להתבצע מתוך התוכנית עצמה או כלי נלווה. - כתיבה לרגיסרי רק אם חייב (למשל file extension(. רצוי להימנע מרגיסטרי. הוא מיותר לתוכניות רגילות. - שאר הקונפיגורציה צריכה להשמר ב all users לכולם, או עבור משתמש ספציפי כאשר הוא בוחר לשנות. קבצי טקסט עושים את העבודה יופי. - התוכנית צריכה להיות גמישה. אפשר יהיה להריץ אותה מ command line או GUI עוטף. - התוכנית לא צריכה לשאול יותר מדי למשל התקנה ל %PROGRAM_FILES% ללא אופציה לשנות - תוכנית ההתקנה תסרב לרוץ אלא אם המשתמש הוא admin או שייך לקבוצת admin.
 

אלדד28

New member
התקנה מיידית ל-PROGRAM FILES

למה?? מה פתאום? לא לתת למשתמש יכולת להחליט איפה לשים את התוכנה? גם לגבי ה-admin אני חולק עליך. תוכנות שמיועדות ל-USER ספציפי לא חייבות להיות מותקנות על ידי ה-ADMIN. אתה יוצר ככה הרבה כאב ראש ל-SYSADMIN-ים המסכנים.
 
לא חובה ADMIN!

אתה יוצר SECURITY BREACH אם אתה מאפשר התקנה אדמיניסטרטיבית בלבד. ולמה? כי התקנות מגיעות כיום בהרבה צורות וסוגים. יש כאלה שמנוהלות ע"י מנגנוני הפצה, המיושמים כ-SERVICES (זה היישום הכי נפוץ כיום), והטעות הכי גדולה היא לתת למנגנונים כאלה כח מיותר. אם התקנה של מוצר מסויים דורשת הרשאות ADMIN, אז ורק אז תחוייב לתת הרשאות אלה. בד"כ מספיק הרבה פחות, לדוגמה, הרישום של האפליקציה במערכת ההפעלה יכול להתבצע גם כשאתה לא ADMIN (אני לא זוכר בדיוק את ההרשאות המינימליות, אבל בוודאות לא ADMIN).
 
למעלה