התקנת אפליקציית שולחן העבודה

כיצד להתקין את אפליקציית שולחן העבודה של Antimatter במחשבי חברה או בית ספר, וכיצד להגדיר באופן מרכזי את השרתים, שם המשתמש ובדיקות עדכון ב-Windows, macOS ו-Linux.

הורדת האפליקציה

הגרסאות של אפליקציית שולחן העבודה זמינות ב-GitHub, בכתובת github.com/AntimatterChat/desktop-app/releases. כמו השרת, האפליקציה נמצאת בשלב בטא: גרסה שיש לה סיומת אחרי מקף מסומנת כ-Pre-release. לכל גרסה יש קובץ SHA256SUMS המכיל את סכום הבקרה (checksum) של כל קובץ. ניתן לבדוק הורדה באמצעות הפקודה sha256sum --check --ignore-missing SHA256SUMS ב-Linux, או להשוות את הפלט של Get-FileHash <file> -Algorithm SHA256 ב-PowerShell עם השורה המתאימה ב-SHA256SUMS.

  • חלונות (x64 ו-arm64): מתקין .exe, חבילת .msi או ארכיון .zip. לדוגמה antimatter-desktop-<version>-win-x64.exe ו-antimatter-desktop-<version>-win-x64.msi.
  • macOS: דיסק .dmg או .zip, עבור Apple silicon (arm64), מחשבי Intel (x64) או שניהם (universal).
  • Linux (x64 ו-arm64): חבילת .deb או .rpm, AppImage, חבילת Flatpak או ארכיון .tar.gz.

איזה מתקין Windows לבחור

מתקין .exeחבילת .msi
מתאים למשתמשים שמקינים את האפליקציה בעצמםחברות שמפיצות אותה במחשביהן
התקנהלחשבון Windows הנוכחי בלבד, ב-%LOCALAPPDATA%\Programs\antimatter-desktop, ללא הרשאות מנהללכל משתמשי המחשב, ב-C:\Program Files\Antimatter, עם הרשאות מנהל
עדכוניםהאפליקציה בודקת גרסאות חדשות ומציעה להוריד את ה-.exe החדש, שמתעדכן במקום ההתקנה הקודמתהאפליקציה אינה בודקת גרסאות חדשות: אתם מפצים אותן

האפליקציה בודקת גרסאות חדשות ב-GitHub, כל שעה במהלך הרצתה, ורואה רק שחרורים מלאים, לא גרסאות נסיוניות. כאשר היא מוצאת גרסה חדשה, היא מודיעה על כך למשתמש ומציעה קישור להורדה. העותק שנוסע באמצעות MSI אינו בודק גרסאות חדשות כברירת מחדל, משום שהמשתמשים בו בדרך כלל אינם יכולים להתקין תוכנה. ניתן להפעיל את הבדיקות עבורו באמצעות ההגדרה EnableAutoUpdater: ההורדה שתוצע תהיה אז ה-.msi החדש, הדורש הרשאות מנהל.

יש להשתמש ב-MSI להתקנה מנוהלת באמצעות SCCM (Configuration Manager), Intune או התקנת תוכנה דרך Group Policy. התקנת ה-MSI מסירה את העותק ב-.exe של החשבון המבצע את ההתקנה, אם הוא קיים.

ההגדרות שניתן לנהל

אותן הגדרות קיימות בכל מערכת. ב-Windows הן ערכי רישטריאטור תחת SOFTWARE\Policies\Antimatter, ב-HKEY_LOCAL_MACHINE (עבור המחשב) או ב-HKEY_CURRENT_USER (עבור משתמש בודד). ב-macOS וב-Linux הן מפתחות של העדפות מנוהלות או של קובץ המדיניות.

הגדרהב-Windowsב-macOS וב-Linuxמה היא עושה
DefaultServerListמפתח משנה עם ערך מחרוזת אחד לכל שרת: שם הערך הוא שם הלשונית שלו, והנתונים הם כתובת האתר (URL) שלומערך של מילונים (אובייקטים ב-Linux) עם name ו-urlמוסיף שרתים לאפליקציה. משתמשים אינם יכולים לערוך או להסיר אותם.
DefaultUsernameמחרוזתמחרוזתממלא את שם המשתמש בדף ההתחברות של השרתים האלה.
EnableServerManagementDWORD, 0 או 1ערך בוליאני0 או false: משתמשים יכולים להשתמש רק בשרתים שנקבעו על ידי DefaultServerList, והאפליקציה מסתירה את האפשרויות להוספה, לעריכה ולהסרה של שרתים. לא מוגדר: משתמשים יכולים להוסיף שרתים משלהם.
EnableAutoUpdaterDWORD, 0 או 1ערך בוליאני0 או false: האפליקציה אינה בודקת מעולם גרסאות חדשות, ומסתירה את בדיקת עדכונים. 1 או true: היא בודקת, גם כאשר הותקנה באמצעות MSI. לא מוגדר: העותק ב-.exe בודק, העותק ב-MSI אינו בודק.
TrustedEmbeddedMediaOriginsמפתח משנה עם ערכי מחרוזת, כל אחד מהם אובייקט JSON עם serverOrigin ו-embeddedOriginמערך של מילונים עם serverOrigin ו-embeddedOriginאפשר לתוכן מוטמע בדפי שרת, כגון דף פגישת וידאו, להשתמש בהרשאות המצלמה והמיקרופון שניתנו לשרת זה.
  • שם המשתמש מלא רק בדף ההתחברות של שרתים שנקבעו במדיניות, מעולם לא בשרת שהמשתמש הוסיף בעצמו, ומעולם לא על גבי מה שהמשתמש הקליד. המשתמשים עדיין יכולים לשנות אותו. משתני סביבה בין סימני אחוזים מוחלפים, כך שערך אחד מתאים לכולם: %USERNAME% ב-Windows או %USER% ב-macOS וב-Linux נותנים את שם החשבון, ו-%USERNAME%@example.com כתובת דוא"ל שמתאימה לתבנית זו. אם משתנה לא מוגדר, האפליקציה לא ממלאת שום דבר.
  • אם אתה מכבה את ניהול השרתים, הגדר לפחות שרת אחד ב-DefaultServerList.
  • ב-Windows, מדיניות מחשב (HKEY_LOCAL_MACHINE) גוברת על מדיניות משתמש (HKEY_CURRENT_USER). רשימות השרתים של שתי המדיניות משולבות.
  • האפליקציה קוראת את ההגדרות בעת ההתחלה: לאחר שינוי, המשתמשים חייבים לסגור אותה ולפתוח אותה מחדש.

Windows: התקנה שקטה באמצעות MSI

ה-MSI מקבל תכונות ציבוריות שכותבות את ההגדרות כמדיניות מחשב, ב-HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter. השתמש בהן באפליקציית SCCM, באפליקציית Intune או בסקריפט. ב-PowerShell:

msiexec /i antimatter-desktop-<version>-win-x64.msi /qn SERVERURL=https://chat.example.com SERVERNAME=Chat DEFAULTUSERNAME='%USERNAME%' AUTOUPDATE=0 SERVERMANAGEMENT=0
תכונהכותבאם לא נותנים
SERVERURLשרת ב-DefaultServerList, עם כתובת URL זואין שרת
SERVERNAMEשם לשונית של השרת הזהAntimatter
DEFAULTUSERNAMEDefaultUsernameשום דבר
AUTOUPDATEEnableAutoUpdater, 0 או 1שום דבר: העתקת ה-MSI לא בודקת עדכונים
SERVERMANAGEMENTEnableServerManagement, 0 או 1שום דבר: המשתמשים יכולים להוסיף שרתים
  • תכונה שלא ניתנת לא כותבת שום דבר, ולכן אינה מכסה ערך שנקבע על ידי Group Policy. AUTOUPDATE ו-SERVERMANAGEMENT מקבלים רק 0 או 1. ה-MSI מגדיר שרת אחד: השתמש ב-Group Policy עבור יותר.
  • DEFAULTUSERNAME חייב להגיע להתקין כטקסט %USERNAME%, כך שהאפליקציה תחליף אותו לכל משתמש. אחרת, ה-shell שרץ את ההתקנה יחליף אותו בשם החשבון שלו. ב-PowerShell, שמור על גרש אחד. בקובץ .bat, כתוב %%USERNAME%%. לאחר התקנת בדיקה, בדוק ברשומות (Registry) ש-DefaultUsername מכיל %USERNAME%.
  • עביר את התכונות שוב בכל שדרוג. התקנת גרסה חדשה של ה-MSI מסירה את הישנה, יחד עם הערכים שהיא כתבה, ואז כותבת את הערכים של שורת הפקודה החדשה. SCCM ו-Intune שומרים את שורת הפקודה של אפליקציה: שחזר אותה לכל גרסה חדשה. או הגדר את המדיניות באמצעות Group Policy או Intune במקום זאת, ששדרוגים לא נוגעים בה.
  • ה־MSI ומדיניות הקבוצה כותבים את אותם ערכי רישטרי. עבור כל הגדרה, יש להשתמש באחד מהם: הסרת ה־MSI מחקה את הערכים שכתב, גם אם מדיניות הקבוצה הגדירה אותם.
  • ה־MSI רושם גם את תיקיית ההתקנה ב־HKEY_LOCAL_MACHINE\SOFTWARE\Antimatter\Desktop (InstallDir). כך האפליקציה יודעת שהיא הותקנה באמצעות ה־MSI.

להסרה: msiexec /x antimatter-desktop-<version>-win-x64.msi /qn. ב־Intune, סוג ה־"Windows app (Win32)" מקבל את אותן שורות פקודה. עבור סוג ה־"Line-of-business app", יש להוסיף את התכונות לטעמי שורת הפקודה.

Windows: מדיניות קבוצה ו־Intune

התבניות הניהוליות, antimatter.admx ו־en-US\antimatter.adml, נמצאות בתיקיית gpo של האפליקציה המותקנת (C:\Program Files\Antimatter\gpo עבור ה־MSI) ובתיקיית resources/windows/gpo במאגר האפליקציה. הן מציגות את המדיניות הבאה, תחת Administrative Templates › Antimatter:

מדיניותערך רישטריהתאמה
שרתים (DefaultServerList)מפתח המשנה DefaultServerListמחשב ומשתמש
שם משתמש למילוי מראש (DefaultUsername)DefaultUsernameמחשב ומשתמש
לאפשר למשתמשים להוסיף ולהסיר שרתים (EnableServerManagement)EnableServerManagementמחשב ומשתמש
להתריע על גרסאות חדשות (EnableAutoUpdater)EnableAutoUpdaterמחשב בלבד
מקורות מדיה מוטמעים אמינים (TrustedEmbeddedMediaOrigins)מפתח המשנה TrustedEmbeddedMediaOriginsמחשב ומשתמש

מדיניות קבוצה בתחום

  1. יש להעתיק את antimatter.admx לאחסון המרכזי, \\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions, ואת antimatter.adml לתיקיית en-US שלו.
  2. בעורך ניהול מדיניות הקבוצה, יש לפתוח את Computer Configuration (או User Configuration) › Policies › Administrative Templates › Antimatter.
  3. יש לערוך מדיניות, לבחור מופעל ולמלא את הערך. עבור שרתים, יש ללחוץ על הצגה ולהוסיף שורה לכל שרת: שם הערך הוא שם הלשונית, והערך הוא כתובת ה־URL של השרת, למשל https://chat.example.com.

הפעלת לאפשר למשתמשים להוסיף ולהסיר שרתים או להתריע על גרסאות חדשות כותבת 1; ביטול ההפעלה כותב 0.

Intune

בDevices › Configuration, השתמשו בImport ADMX כדי לייבא את antimatter.admx יחד עם en-US\antimatter.adml. לאחר מכן, צרו פרופיל מתוך Templates › Imported Administrative templates, והגדירו בו את מדיניות Antimatter.

מחשב יחיד, או סקריפט

העתיקו את התבניות לC:\Windows\PolicyDefinitions כדי להשתמש בהן בgpedit.msc (Windows Pro ו-Enterprise). או כתבו ישירות את ערכי הרשמת עם קובץ .reg שייובא כמנהל (reg import antimatter-policies.reg), כמו זה. קובץ example-policies.reg באותה תיקייה מכיל את הערכים האלה, עם הערות.

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter]
"EnableServerManagement"=dword:00000000
"EnableAutoUpdater"=dword:00000000
"DefaultUsername"="%USERNAME%"

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter\DefaultServerList]
"Chat"="https://chat.example.com"

macOS: פרופיל התאמה

ב-macOS, האפליקציה קוראת את הגדרותיה מההעדפות המנוהלות של מזהה ה-bundle שלה, chat.antimatter.desktop, עם המפתחות של טבלת ההגדרות. הפעילו אותן באמצעות MDM (Jamf, Intune, Kandji, Mosyle ואחרים) כפרופיל התאמה.

  • תיקיית resources/mac/mdm במאגר האפליקציה מכילה פרופיל לדוגמה, antimatter.mobileconfig. ערכו את הערכים שלו, הוסיפו לו ערכים ייחודיים של PayloadIdentifier ו-PayloadUUID (uuidgen יוצר UUIDs חדשים), והעלו אותו כפרופיל מותאם אישית.
  • רוב MDMs מקבלים גם את המפתחים בלבד, כ-payload של "custom settings" או "preference domain" עבור chat.antimatter.desktop. באותה תיקייה יש אותם בexample-managed-preferences.plist.

ההגדרות בתוך ה-payload של הפרופיל:

<key>PayloadType</key>
<string>chat.antimatter.desktop</string>
<key>DefaultServerList</key>
<array>
    <dict>
        <key>name</key>
        <string>Chat</string>
        <key>url</key>
        <string>https://chat.example.com</string>
    </dict>
</array>
<key>DefaultUsername</key>
<string>%USER%</string>
<key>EnableServerManagement</key>
<false/>
<key>EnableAutoUpdater</key>
<false/>

ערכי Booleans יכולים גם להיות נתונים כמספרים השלמים 0 ו-1.

Linux: קובץ המדיניות

ב-Linux, האפליקציה קוראת את /etc/antimatter-desktop/policies.json, אובייקט JSON עם המפתחות של טבלת ההגדרות:

{
    "DefaultServerList": [
        {"name": "Chat", "url": "https://chat.example.com"}
    ],
    "DefaultUsername": "%USER%",
    "EnableServerManagement": false,
    "EnableAutoUpdater": false,
    "TrustedEmbeddedMediaOrigins": []
}

העבירו אותו עם כלי ניהול ההתאמה שלכם (Ansible, Puppet, Salt ואחרים), בבעלות root, קריא לכולם וכתב רק ל-root:

sudo install -d /etc/antimatter-desktop
sudo install -m 644 policies.json /etc/antimatter-desktop/policies.json

קובץ שאינו JSON תקין יתעלם, עם אזהרה ביומן האפליקציה. גרסת Flatpak אינה רואה את /etc של המארח: העניקו לה גישה לקריאה, והיא תקרא את הקובץ מ/run/host/etc/antimatter-desktop/policies.json:

sudo flatpak override --system --filesystem=host-etc:ro chat.antimatter.desktop

מדיניות שהוגדרה לאפליקציית Mattermost

במערכת חלונות, האפליקציה קוראת גם את המדיניות שהוגדרה לאפליקציית Mattermost לשולחן העבודה, תחת SOFTWARE\Policies\Mattermost, כגיבוי. היא קוראת אותן לפי מיקום: הערכים ישירות תחת מפתח המדיניות, תת־המפתח DefaultServerList ותת־המפתח TrustedEmbeddedMediaOrigins. בכל אחד משלושת המיקומים האלה, היא קוראת את מפתח Mattermost רק אם אין ערכים תחת מפתח Antimatter, בשני המחסנים. לכן, ברגע שנקבע ערך אחד ישירות תחת מפתח Antimatter, למשל באמצעות תכונת AUTOUPDATE של קובץ ה־MSI, אף אחד מהערכים תחת מפתח Mattermost לא יקרא. העבירו את כל המדיניות למפתח Antimatter בבת אחת.

במערכת macOS, ההעדפות המנוהלות של אפליקציית Mattermost לשולחן העבודה (com.mattermost.desktop) אינן נקראות: הגדירו אותן עבור chat.antimatter.desktop.

בנייה ללא חתימה

בניית האפליקציה לשולחן העבודה עדיין אינה חתומה בחותמת מפרסם.

  • חלונות. כאשר אדם פותח קובץ .exe או .msi שהורד, Microsoft Defender SmartScreen מציג הודעה שחלונות הגן על המחשב ומציין מפרסם לא ידוע. האדם בוחר במידע נוסף, ואז בהרצה בכל זאת. SmartScreen בודק קבצים שאנשים פותחים לאחר הורדה, ולכן האזהרה לא מופיעה כאשר אתם פורסים את האפליקציה באמצעות SCCM, Intune או מדיניות קבוצה. אם המחשבים שלכם מריצים תוכנה רק ממפרסמים מאושרים (כללי AppLocker או App Control for Business), אפשרו את האפליקציה לפי נתיב ההתקנה או לפי טביעת האצבע של הקובץ.
  • macOS. האפליקציה חתומה באופן זמני (ad hoc), אך לא עברה אישור (notarisation) של Apple. בפעם הראשונה שאדם פותח עותק שהורד, macOS מציגה הודעה שאינה יכולה לוודא שהאפליקציה חופשית מוירוסים, ואינה פותחת אותה. במערכת macOS 15 ומעלה, האדם פותח את הגדרות מערכת › פרטיות ואבטחה ובוחר בפתיחה בכל זאת. בגרסאות קודמות, האדם לוחץ עם מקש Control על האפליקציה ובוחר בפתיחה. Gatekeeper בודק רק קבצים שסומנו כהורדה (עם תכונת ה־quarantine): כאשר אתם מתקינים את האפליקציה עם הכלים שלכם, הסירו את הסימון בסקריפט ההתקנה, באמצעות xattr -dr com.apple.quarantine /Applications/Antimatter.app.