איך לחתום דיגיטלית כל קובץ באמצעות Inno Setup

Inno Setup הוא כלי פשוט ורב עוצמה ליצירת התקנות מותאמות אישית.
אני אורז בו התקנות לתוכנות המיועדות ל-Desktop .

הוא יוצר קבצי exe.
ואם אנו רוצים לחתום דיגיטלית את קבצי ה-Exe , (בהנחה שיש לכם חתימה כמובן)
אפשר לעשות זאת "ידנית" באמצעות הכלי SignTool של windows.
או לעשות זאת אוטומטית כחלק מהסקריפט של Inno Setup.

ככה:
1. כנסו ל- Tools
2. כנסו ל- Configure Sign Tools
3. לחצו על Add
4. תנו שם קצר לכלי החתימה של windows – נניח, נקרא לו signtool
5. הקלידו את הפקודה שחותמת במלואה, כולל נתיב *מלא* של כלי החתימה.
6. במקום בו צריך להקליד את שם הקובץ – שימו $f – זה יגרום לו להחליף את זה בזמן הריצה בשם הקובץ
אצלי זה ככה :

"C:Program Files (x86)Windows Kits8.0binx86signtool.exe" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll /v "$f"

אחרי שהגדרנו את הכלי – הגיע זמן לשים אותו בתוך הסקריפט של Inno Setup

אז בתוך הסקריפט – בחלק שנקרא Setup
נשים שורה כזאת :

SignTool=SignTool

כמובן – אם קראת לכלי שלכם בשם אחר (בשלב 4) אז תשנו בהתאם.

ועכשיו נשאר לכם להריץ
קחו סקריפט עם השורה הנוספת הזאת – ותעשו Compile
שימו לב לשורה האחרונה בזמן ה-Complile – אתם תראו שהיא שורה של הפעלת הכלי (חוץ מזה שרואים את המסך השחור של ה-CMD קופץ לשניה אחת פעמיים במהלך הריצה – פעם אחת הוא חותם את ה-Uninstall , ופעם את ה-Install).

למי שרוצה הסבר עם תמונות יש כאן

איך לחתום דיגיטלית קובץ בצורה הכי פשוטה

בתוך מערכת ההפעלה windows
יש כלי מובנה שמאפשר חתימה דיגיטלית של קבצים.

הוא נקרא signtool

תחפשו אותו, כי לפעמים יש 2 גירסאות (64/32 ביט)
אז אצלי למשל הוא נמצא כאן :

"C:Program Files (x86)Windows Kits8.0binx86signtool.exe"

עכשיו, כנסו לשורת הפקודה של windows (כפתור התחל > הקלידו CMD > ולחצו Enter )

כעת גילשו אל התיקיה המתאימה שבה יושב ה-SignTool (פקודות CD וכו')

וכעת הדביקו את הפקודה הבאה, כאשר בסוף הפקודה – שימו כמובן את שם הקובץ שלכם, עם הנתיב המלא

signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll /v ""

התגית /a גורמת לו לבחור את החתימה הטובה ביותר על המחשב.
כלומר אם למשל יש לכם
1. חתימה שיצרתם עצמאית (שלא מאומתת על ידי גורם מוסמך)
2. חתימה שהופקה על ידי גורם מוסמך

אז הוא יבחר את 2 – החתימה שהופקה על ידי גורם מוסמך.

בהצלחה.