การติดตั้งแอปเดสก์ท็อป

วิธีการติดตั้งแอป 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

  • Windows (x64 และ arm64): ตัวติดตั้ง .exe, แพ็กเกจ .msi หรือไฟล์ .zip ตัวอย่างเช่น antimatter-desktop-<version>-win-x64.exe และ antimatter-desktop-<version>-win-x64.msi
  • macOS: ไฟล์ .dmg หรือ .zip สำหรับ Apple silicon (arm64), Mac ของ Intel (x64) หรือทั้งสอง (universal)
  • Linux (x64 และ arm64): แพ็กเกจ .deb หรือ .rpm, AppImage, Flatpak bundle หรือไฟล์ .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 จะเป็นคีย์ของ managed preferences หรือไฟล์ policy

การตั้งค่าบน 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 รับคุณสมบัติสาธารณะ (public properties) ที่เขียนการตั้งค่าเป็นนโยบายคอมพิวเตอร์ ใน 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 ให้ใช้เครื่องหมายอัญประกาศเดี่ยว (single quotes) ในไฟล์ .bat ให้เขียนว่า %%USERNAME%% หลังจากติดตั้งเพื่อทดสอบแล้ว ให้ตรวจสอบใน registry ว่า DefaultUsername มีค่าเป็น %USERNAME%
  • ส่งคุณสมบัติอีกครั้งในทุกการอัปเกรด. การติดตั้งเวอร์ชันใหม่ของ MSI จะลบเวอร์ชันเก่าพร้อมค่าที่เขียนไว้ จากนั้นจึงเขียนค่าจากบรรทัดคำสั่งใหม่ SCCM และ Intune จะเก็บบรรทัดคำสั่งของแอปพลิเคชันไว้: นำกลับมาใช้ใหม่สำหรับแต่ละเวอร์ชันใหม่ หรือใช้นโยบาย Group Policy หรือ Intune แทน ซึ่งการอัปเกรดจะไม่แตะต้อง
  • MSI และ Group Policy จะเขียนค่า registry เดียวกัน สำหรับแต่ละการตั้งค่า ให้ใช้วิธีใดวิธีหนึ่ง: การถอนการติดตั้ง MSI จะลบค่าที่มันเขียนไว้ แม้ Group Policy จะตั้งค่าเหล่านั้นไว้ก็ตาม
  • 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: Group Policy และ Intune

เทมเพลตการจัดการ antimatter.admx และ en-US\antimatter.adml อยู่ในโฟลเดอร์ gpo ของแอปที่ติดตั้งแล้ว (C:\Program Files\Antimatter\gpo สำหรับ MSI) และในโฟลเดอร์ resources/windows/gpo ของรีพอสิทอรีแอป นโยบายเหล่านี้จะแสดงอยู่ภายใต้ Administrative Templates › Antimatter:

นโยบายค่า Registryการตั้งค่า
เซิร์ฟเวอร์ (DefaultServerList)คีย์ย่อย DefaultServerListคอมพิวเตอร์และผู้ใช้
ชื่อผู้ใช้ที่จะกรอกไว้ล่วงหน้า (DefaultUsername)DefaultUsernameคอมพิวเตอร์และผู้ใช้
อนุญาตให้ผู้ใช้เพิ่มและลบเซิร์ฟเวอร์ (EnableServerManagement)EnableServerManagementคอมพิวเตอร์และผู้ใช้
แจ้งเตือนเกี่ยวกับเวอร์ชันใหม่ (EnableAutoUpdater)EnableAutoUpdaterเฉพาะคอมพิวเตอร์
แหล่งที่มาของสื่อฝังตัวที่เชื่อถือได้ (TrustedEmbeddedMediaOrigins)คีย์ย่อย TrustedEmbeddedMediaOriginsคอมพิวเตอร์และผู้ใช้

Group Policy ในโดเมน

  1. คัดลอก antimatter.admx ไปยังคลังกลาง \\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions และ antimatter.adml ไปยังโฟลเดอร์ en-US ของมัน
  2. ใน Group Policy Management Editor ให้เปิด Computer Configuration (หรือ User Configuration) › Policies › Administrative Templates › Antimatter
  3. แก้ไขนโยบาย เลือก เปิดใช้งาน และกรอกข้อมูล สำหรับ เซิร์ฟเวอร์ ให้คลิก แสดง และเพิ่มหนึ่งบรรทัดต่อเซิร์ฟเวอร์: ชื่อค่าคือชื่อแท็บ ค่าคือ URL ของเซิร์ฟเวอร์ เช่น https://chat.example.com

การเปิดใช้งาน อนุญาตให้ผู้ใช้เพิ่มและลบเซิร์ฟเวอร์ หรือ แจ้งเตือนเกี่ยวกับเวอร์ชันใหม่ จะเขียนค่าเป็น 1; การปิดใช้งานจะเขียนค่าเป็น 0

Intune

ใน Devices › การตั้งค่า ให้ใช้ Import ADMX เพื่ออิมพอร์ต antimatter.admx พร้อม en-US\antimatter.adml จากนั้นสร้างโปรไฟล์จาก Templates › Imported Administrative templates และตั้งค่า policies ของ Antimatter ในนั้น

คอมพิวเตอร์เครื่องเดียว หรือสคริปต์

คัดลอกเทมเพลตไปยัง C:\Windows\PolicyDefinitions เพื่อใช้งานใน gpedit.msc (Windows Pro และ Enterprise) หรือเขียนค่า registry โดยตรง ด้วยไฟล์ .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 แอปจะอ่านค่าการตั้งค่าจาก managed preferences ของ bundle identifier ของแอป chat.antimatter.desktop โดยใช้คีย์จากตารางการตั้งค่า จัดการ deploy ด้วย MDM ของคุณ (เช่น Jamf, Intune, Kandji, Mosyle และอื่นๆ) ในรูปแบบโปรไฟล์การตั้งค่า

  • โฟลเดอร์ resources/mac/mdm ใน repository ของแอปมีตัวอย่างโปรไฟล์ antimatter.mobileconfig แก้ไขค่าต่างๆ ให้เป็นของคุณเอง พร้อมค่า PayloadIdentifier และ PayloadUUID (uuidgen ใช้สร้าง UUID ใหม่) จากนั้นอัปโหลดเป็นโปรไฟล์แบบ custom
  • MDM ส่วนใหญ่ยังยอมรับคีย์เดี่ยวๆ ในรูปแบบ "custom settings" หรือ "preference domain" payload สำหรับ 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/>

ค่า boolean สามารถระบุเป็นจำนวนเต็ม 0 และ 1 ได้ด้วย

Linux: ไฟล์ policy

บน Linux แอปจะอ่าน /etc/antimatter-desktop/policies.json ซึ่งเป็น JSON object ที่มีคีย์จากตารางการตั้งค่า:

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

Deploy ด้วยเครื่องมือจัดการการตั้งค่าของคุณ (เช่น Ansible, Puppet, Salt และอื่นๆ) โดยให้ root เป็นเจ้าของไฟล์ อ่านได้ทุกคน และเขียนได้เฉพาะ root:

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

ไฟล์ที่ไม่เป็น JSON ที่ถูกต้องจะถูกเพิกเฉย พร้อมคำเตือนใน log ของแอป เวอร์ชัน Flatpak จะไม่มองเห็น /etc ของ host: ให้สิทธิ์การอ่าน และมันจะอ่านไฟล์จาก /run/host/etc/antimatter-desktop/policies.json:

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

Policies ที่ตั้งค่าไว้สำหรับแอป Mattermost desktop

บน Windows แอปยังอ่านนโยบายที่ตั้งไว้สำหรับแอปเดสก์ท็อป Mattermost ภายใต้ SOFTWARE\Policies\Mattermost เป็นค่าสำรอง โดยจะอ่านตามตำแหน่ง: ค่าที่อยู่โดยตรงภายใต้คีย์นโยบาย, คีย์ย่อย DefaultServerList และคีย์ย่อย TrustedEmbeddedMediaOrigins สำหรับแต่ละตำแหน่งทั้งสามนี้ แอปจะอ่านคีย์ Mattermost เฉพาะเมื่อคีย์ Antimatter ไม่มีค่าในตำแหน่งนั้นใน hive ใด hive หนึ่ง ดังนั้น เมื่อตั้งค่าใดค่าหนึ่งไว้โดยตรงภายใต้คีย์ Antimatter แล้ว เช่น ผ่านคุณสมบัติ AUTOUPDATE ของ MSI ค่าที่อยู่โดยตรงภายใต้คีย์ Mattermost จะไม่ถูกอ่านเลย กรุณาย้ายนโยบายทั้งหมดของคุณไปยังคีย์ Antimatter ในครั้งเดียว

บน macOS ค่า managed preferences ของแอปเดสก์ท็อป Mattermost (com.mattermost.desktop) จะไม่ถูกอ่าน: กรุณาตั้งค่าสำหรับ chat.antimatter.desktop แทน

การติดตั้งที่ไม่ได้ลงนาม

การติดตั้งของแอปเดสก์ท็อปยังไม่ได้ลงนามด้วยใบรับรองของผู้เผยแพร่

  • Windows. เมื่อผู้ใช้เปิดไฟล์ .exe หรือ .msi ที่ดาวน์โหลดมา Microsoft Defender SmartScreen จะแจ้งว่า Windows ได้ปกป้องคอมพิวเตอร์ไว้ และระบุชื่อผู้เผยแพร่ที่ไม่รู้จัก ผู้ใช้ต้องเลือก More info จากนั้นเลือก Run anyway SmartScreen จะตรวจสอบไฟล์ที่ผู้ใช้เปิดหลังจากดาวน์โหลด ดังนั้นผู้ใช้จึงจะไม่เห็นคำเตือนนี้เมื่อคุณติดตั้งแอปผ่าน SCCM, Intune หรือ Group Policy หากคอมพิวเตอร์ของคุณรันซอฟต์แวร์จากผู้เผยแพร่ที่ได้รับอนุญาตเท่านั้น (กฎ AppLocker หรือ App Control for Business) ให้อนุญาตแอปโดยใช้เส้นทางติดตั้งหรือแฮชของไฟล์แทน
  • macOS. แอปได้รับการลงนามแบบ ad hoc แต่ไม่ได้ผ่านการรับรอง (notarise) จาก Apple ครั้งแรกที่ผู้ใช้เปิดสำเนาที่ดาวน์โหลดมา macOS จะแจ้งว่าไม่สามารถตรวจสอบได้ว่าแอปปลอดจากมัลแวร์ และไม่เปิดแอป บน macOS 15 และใหม่กว่า ผู้ใช้ต้องเปิด System Settings › Privacy & Security และเลือก Open Anyway บนเวอร์ชันก่อนหน้า ให้ผู้ใช้ Control-click ที่แอปแล้วเลือก Open Gatekeeper จะตรวจสอบเฉพาะไฟล์ที่ถูกระบุว่าเป็นไฟล์ที่ดาวน์โหลด (มี quarantine attribute) เท่านั้น: เมื่อคุณติดตั้งแอปด้วยเครื่องมือของคุณเอง ให้ลบการระบุนี้ในสคริปต์การติดตั้งของคุณ โดยใช้ xattr -dr com.apple.quarantine /Applications/Antimatter.app