הפצת אפליקציית Windows ללא חתימת קוד מבטיחה בעיות עם SmartScreen ו-Windows Defender. גם אם האפליקציה בטוחה לחלוטין, המשתמשים רואים אזהרת 'מפרסם לא ידוע' — ובכ-30% מהמקרים, הם נוטשים את ההתקנה. עבור מוצרים מסחריים, כל מתקין שאבד משמעותו הכנסה שהוחמצה. לפי מיקרוסופט, אפליקציות חתומות נחסמות בתדירות נמוכה יותר. אפליקציה החתומה עם תעודת EV מסירה את כל האזהרות; תעודת OV בונה מוניטין לאורך זמן. אנו מגדירים את תהליך הבנייה והחתימה כך שההתקנה תתבצע ללא חלונות נוספים, מה שגורם למוצר שלך להיראות מקצועי. עלות התעודה היא כמה מאות דולרים בשנה, אך היא משתלמת דרך אמון המשתמשים.
כיצד להגדיר בניית אפליקציית Desktop עבור Windows
Electron + electron-builder הוא הסטack הנפוץ ביותר עבור אפליקציות חוצות-פלטפורמות. הוא מאפשר ליצור מתקינים עבור Windows, macOS ו-Linux מקוד בסיס אחד. תצורה טיפוסית נראית כך:
---
# electron-builder.yml
appId: com.company.appname
productName: AppName
win:
target:
- target: nsis # стандартный установщик
- target: zip # портативная версия
icon: build/icon.ico
sign: true
nsis:
oneClick: false
perMachine: true
allowToChangeInstallationDirectory: true
---
WiX Toolset משמש ליצירת חבילות MSI הנדרשות בסביבות ארגוניות עם SCCM/Intune. MSI מאפשר התקנה ועדכונים מרכזיים. דוגמה פשוטה לקובץ .wxs:
<!-- product.wxs -->
<Product Id="*" Name="AppName" Version="1.0.0" Manufacturer="Company">
<Package Compressed="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="AppName" />
</Directory>
</Directory>
<Component Id="MainExecutable" Directory="INSTALLFOLDER">
<File Source="AppName.exe" KeyPath="yes" />
</Component>
</Product> כיצד לבחור סוג מתקין
| מתקין | יתרונות | חסרונות | מומלץ עבור |
|---|---|---|---|
| NSIS | קל להגדרה, גודל קטן, ניתן לתכנות | תמיכה ארגונית מוגבלת | פרויקטים קטנים עד בינוניים, התחלה מהירה |
| MSI (WiX) | אינטגרציה עם SCCM/Intune, מדיניות קבוצתית, גלגול לאחור | תצורה מורכבת, גודל גדול יותר | ארגונים גדולים, הפצה תאגידית |
הבחירה תלויה בקהל היעד שלך. אם המוצר שלך מוכוון ארגונים, לך עם MSI. עבור משתמשים המוניים, NSIS מספיק.
מדוע חתימת קוד היא חובה
SmartScreen מנתח את החתימה הדיגיטלית ואת מוניטין המפרסם. ללא חתימה, המוניטין הוא אפס, והמערכת חוסמת את ההתקנה. אפליקציה חתומה עם תעודת EV מקבלת 'אור ירוק' מיידי. אנו עוזרים לך לבחור את סוג התעודה הנכון ולהגדיר את התהליך.
| סוג תעודה | זמן רכישה | אמון SmartScreen | עלות (בערך) |
|---|---|---|---|
| EV (Extended Validation) | 3–7 ימים | מיידי, ללא אזהרות | גבוהה יותר |
| OV (Organization Validation) | 1–3 ימים | דורש בניית מוניטין | נמוכה יותר |
EV עדיפה על OV: היא מספקת התקנה חלקה מיידית, בעוד OV זקוקה לזמן כדי לבנות מוניטין. עבור רוב המוצרים המסחריים, אנו ממליצים על EV.
הליך חתימת קוד
החתימה מתבצעת באמצעות # electron-builder.yml appId: com.company.appname productName: AppName win: target: - target: nsis # стандартный установщик - target: zip # портативная версия icon: build/icon.ico sign: true nsis: oneClick: false perMachine: true allowToChangeInstallationDirectory: true מ-Windows SDK. דוגמה:
# Подписание через signtool.exe
signtool sign `
/fd SHA256 `
/tr http://timestamp.digicert.com `
/td SHA256 `
/f certificate.pfx `
/p $env:CERT_PASSWORD `
"dist\AppName-Setup.exe"
# Проверка подписи
signtool verify /pa "dist\AppName-Setup.exe" חתימה אוטומטית ב-CI/CD (GitHub Actions)
---
- name: Sign Windows executable
env:
CERTIFICATE_BASE64: ${{ secrets.WINDOWS_CERTIFICATE_BASE64 }}
CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
run: |
$cert = [Convert]::FromBase64String($env:CERTIFICATE_BASE64)
[IO.File]::WriteAllBytes("certificate.pfx", $cert)
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe" `
sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 `
/f certificate.pfx /p $env:CERTIFICATE_PASSWORD `
"dist\AppName-Setup.exe"
עדכון אוטומטי
חתימת המתקין היא רק הצעד הראשון; אספקת עדכונים חשובה לא פחות. <!-- product.wxs --> <Product Id="*" Name="AppName" Version="1.0.0" Manufacturer="Company"> <Package Compressed="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLFOLDER" Name="AppName" /> </Directory> </Directory> <Component Id="MainExecutable" Directory="INSTALLFOLDER"> <File Source="AppName.exe" KeyPath="yes" /> </Component> </Product> תומך ב-GitHub Releases, S3 ושרתי עדכונים מותאמים אישית. עדכונים מורידים ברקע, והמשתמש מקבל הודעה להפעיל מחדש בנוחיותו — ללא הפרעה כפויה. עבור הפצות MSI, אנו משתמשים בתיקון של Windows Installer או בחבילה מלאה שנבנתה מחדש עם הגרסה החדשה. חבילת העדכון חייבת להיות חתומה גם היא — אחרת SmartScreen יחסום את התקנת התיקון. עדכוני Delta מפחיתים את גודל ההורדה ב-60-70%, קריטי עבור משתמשים עם חיבורים איטיים. אנו מקימים מערכת ערוצים: stable, beta, nightly — כל ערוץ מקבל ענף עדכון משלו ומפתח חתימה נפרד.
מה כוללת העבודה
- ביקורת על תהליך הבנייה הנוכחי שלך — זיהוי צווארי בקבוק ותצורות לא אופטימליות.
- בחירת סוג מתקין ותעודה — בהתבסס על קהל היעד שלך.
- הגדרת סקריפטים של בנייה — הגדרת electron-builder או WiX לחתימה אוטומטית.
- אינטגרציה של חתימה לתוך CI/CD — הגדרת GitHub Actions, GitLab CI או Jenkins לחתימה מאובטחת על כל שחרור.
- בדיקת התקנה — אימות שהאפליקציה מותקנת ללא אזהרות.
- מסירת תיעוד — תיאור התהליך ומתן המלצות לחידוש תעודה.
אנו מטפלים בכל דבר turnkey תוך 2–3 ימי עבודה. לצוות שלנו יש 5 שנות ניסיון באריזת אפליקציות Desktop ומעל 50 פרויקטים מוצלחים. צור קשר לייעוץ — נעריך את הפרויקט שלך ונציע את הפתרון האופטימלי. הזמן הגדרת בנייה כך שהאפליקציה שלך תיראה מקצועית ותעורר אמון.
המלצות נוספות
- אחסן את התעודה בכספת מאובטחת כמו Azure Key Vault או AWS KMS.
- השתמש בתעודות נפרדות עבור סביבות dev ו-prod.
- בדוק באופן קבוע את תפוגת התעודה — תפוגה יכולה לחסום שחרור.
- חיסכון בתמיכת משתמשים לאחר יישום חתימה יכול להגיע ל-20%.
ללימוד מעמיק, עיין בתיעוד הרשמי: signtool ו-WiX Toolset.







