Triển khai ứng dụng desktop
Cách cài đặt ứng dụng desktop Antimatter trên máy tính của công ty hoặc trường học, và thiết lập tập trung máy chủ, tên người dùng và kiểm tra cập nhật trên Windows, macOS và Linux.
Tải ứng dụng
Các bản phát hành của ứng dụng desktop nằm trên GitHub, tại github.com/AntimatterChat/desktop-app/releases. Giống như máy chủ, ứng dụng đang ở giai đoạn beta: bản phát hành có hậu tố sau dấu gạch ngang trong phiên bản được đánh dấu Pre-release. Mỗi bản phát hành có tệp SHA256SUMS chứa mã băm của mọi tệp. Kiểm tra tệp đã tải bằng sha256sum --check --ignore-missing SHA256SUMS trên Linux, hoặc so sánh kết quả của Get-FileHash <file> -Algorithm SHA256 trong PowerShell với dòng tương ứng trong SHA256SUMS.
- Windows (x64 và arm64): trình cài đặt
.exe, gói.msi, hoặc tệp lưu trữ.zip. Ví dụantimatter-desktop-<version>-win-x64.exevàantimatter-desktop-<version>-win-x64.msi. - macOS: ảnh đĩa
.dmghoặc tệp.zip, cho Apple silicon (arm64), Mac Intel (x64) hoặc cả hai (universal). - Linux (x64 và arm64): gói .deb hoặc .rpm, AppImage, gói Flatpak hoặc tệp lưu trữ
.tar.gz.
Trình cài đặt Windows nào nên dùng
| Trình cài đặt .exe | Gói .msi | |
|---|---|---|
| Dành cho | Người tự cài đặt ứng dụng | Công ty triển khai ứng dụng trên máy tính của họ |
| Cài đặt | Chỉ cho tài khoản Windows hiện tại, trong %LOCALAPPDATA%\Programs\antimatter-desktop, không cần quyền quản trị viên | Cho mọi người dùng của máy tính, trong C:\Program Files\Antimatter, cần quyền quản trị viên |
| Cập nhật | Ứng dụng kiểm tra phiên bản mới và đề xuất tải xuống tệp .exe mới, cập nhật bản cài đặt hiện có tại chỗ | Ứng dụng không kiểm tra phiên bản mới: bạn tự triển khai chúng |
Ứng dụng kiểm tra các phiên bản mới trên GitHub mỗi giờ trong khi đang chạy, và chỉ xem các bản phát hành hoàn chỉnh, không xem các bản phát hành trước. Khi tìm thấy một bản, ứng dụng sẽ thông báo cho người dùng và cung cấp liên kết để tải xuống. Bản cài đặt bằng MSI không kiểm tra theo mặc định, vì những người sử dụng nó thường không thể cài đặt phần mềm. Bạn có thể bật kiểm tra cho bản này bằng cài đặt EnableAutoUpdater: bản tải xuống được đề xuất sau đó sẽ là tệp .msi mới, cần quyền quản trị viên.
Sử dụng MSI cho triển khai có quản lý bằng SCCM (Configuration Manager), Intune hoặc cài đặt phần mềm bằng Group Policy. Cài đặt MSI sẽ xóa bản .exe của tài khoản đang chạy quá trình cài đặt, nếu có.
Các cài đặt bạn có thể quản lý
Các cài đặt giống nhau tồn tại trên mọi hệ thống. Trên Windows, chúng là các giá trị registry dưới SOFTWARE\Policies\Antimatter, trong HKEY_LOCAL_MACHINE (cho máy tính) hoặc HKEY_CURRENT_USER (cho một người dùng). Trên macOS và Linux, chúng là các khóa của các tùy chọn quản lý hoặc của tệp chính sách.
| Cài đặt | Trên Windows | Trên macOS và Linux | Chức năng |
|---|---|---|---|
DefaultServerList | Một khóa con với một giá trị chuỗi cho mỗi máy chủ: tên giá trị là tên của tab của nó, dữ liệu là URL của nó | Một mảng các từ điển (đối tượng trên Linux) có name và url | Thêm máy chủ vào ứng dụng. Người dùng không thể chỉnh sửa hoặc xóa chúng. |
DefaultUsername | Một chuỗi | Một chuỗi | Điền tên người dùng trên trang đăng nhập của các máy chủ này. |
EnableServerManagement | Một DWORD, 0 hoặc 1 | Một giá trị boolean | 0 hoặc false: người dùng chỉ có thể sử dụng các máy chủ được đặt bằng DefaultServerList, và ứng dụng sẽ ẩn các tùy chọn để thêm, chỉnh sửa và xóa máy chủ. Không đặt: người dùng có thể thêm máy chủ của riêng họ. |
EnableAutoUpdater | Một DWORD, 0 hoặc 1 | Một giá trị boolean | 0 hoặc false: ứng dụng không bao giờ kiểm tra các phiên bản mới và ẩn Kiểm tra bản cập nhật. 1 hoặc true: nó sẽ kiểm tra, ngay cả khi được cài đặt bằng MSI. Không đặt: bản .exe sẽ kiểm tra, bản MSI thì không. |
TrustedEmbeddedMediaOrigins | Một khóa con với các giá trị chuỗi, mỗi giá trị là một đối tượng JSON có serverOrigin và embeddedOrigin | Một mảng các từ điển có serverOrigin và embeddedOrigin | Cho phép nội dung được nhúng trong các trang của máy chủ, chẳng hạn như trang họp video, sử dụng các quyền truy cập camera và microphôn đã được cấp cho máy chủ đó. |
- Tên người dùng chỉ được điền vào trên trang đăng nhập của các máy chủ được cấu hình bằng chính sách, không bao giờ trên máy chủ do người dùng tự thêm, và không bao giờ ghi đè lên nội dung mà người dùng đã nhập. Người dùng vẫn có thể thay đổi tên này. Các biến môi trường nằm giữa dấu phần trăm sẽ được thay thế, do đó một giá trị có thể phù hợp cho tất cả mọi người:
%USERNAME%trên Windows hoặc%USER%trên macOS và Linux sẽ cho ra tên tài khoản, và%USERNAME%@example.comsẽ cho ra một địa chỉ email tuân theo mẫu này. Nếu một biến không được đặt, ứng dụng sẽ không điền gì. - Nếu bạn tắt quản lý máy chủ, hãy đặt ít nhất một máy chủ trong
DefaultServerList. - Trên Windows, chính sách máy tính (
HKEY_LOCAL_MACHINE) có quyền ưu tiên cao hơn chính sách người dùng (HKEY_CURRENT_USER). Danh sách máy chủ của cả hai sẽ được kết hợp lại. - Ứng dụng đọc các cài đặt khi khởi động: sau khi thay đổi, người dùng phải thoát và mở lại ứng dụng.
Windows: cài đặt im lặng bằng MSI
MSI nhận các thuộc tính công khai để ghi các cài đặt như chính sách máy tính, trong HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter. Sử dụng chúng trong ứng dụng SCCM, ứng dụng Intune hoặc một script. Trong PowerShell:
msiexec /i antimatter-desktop-<version>-win-x64.msi /qn SERVERURL=https://chat.example.com SERVERNAME=Chat DEFAULTUSERNAME='%USERNAME%' AUTOUPDATE=0 SERVERMANAGEMENT=0
| Thuộc tính | Ghi | Nếu không được cung cấp |
|---|---|---|
SERVERURL | Một máy chủ trong DefaultServerList, với URL này | Không có máy chủ |
SERVERNAME | Tên của tab máy chủ đó | Antimatter |
DEFAULTUSERNAME | DefaultUsername | Không có gì |
AUTOUPDATE | EnableAutoUpdater, 0 hoặc 1 | Không có gì: bản sao MSI không kiểm tra bản cập nhật |
SERVERMANAGEMENT | EnableServerManagement, 0 hoặc 1 | Không có gì: người dùng có thể thêm máy chủ |
- Một thuộc tính không được cung cấp sẽ không ghi gì, do đó nó không ghi đè lên giá trị được đặt bằng Group Policy.
AUTOUPDATEvàSERVERMANAGEMENTchỉ chấp nhận 0 hoặc 1. MSI đặt một máy chủ: sử dụng Group Policy cho nhiều máy chủ hơn. DEFAULTUSERNAMEphải đến trình cài đặt dưới dạng văn bản%USERNAME%, để ứng dụng thay thế nó cho từng người. Nếu không, shell thực thi việc cài đặt sẽ thay thế nó bằng tên tài khoản của chính nó. Trong PowerShell, giữ nguyên các dấu nháy đơn. Trong tệp.bat, viết%%USERNAME%%. Sau khi cài đặt thử nghiệm, kiểm tra trong registry rằngDefaultUsernamechứa%USERNAME%.- Truyền lại các thuộc tính ở mỗi lần nâng cấp. Cài đặt một phiên bản mới của MSI sẽ gỡ bỏ phiên bản cũ, cùng với các giá trị mà nó đã ghi, sau đó ghi các giá trị của dòng lệnh mới. SCCM và Intune giữ lại dòng lệnh của một ứng dụng: hãy sử dụng lại nó cho mỗi phiên bản mới. Hoặc đặt các chính sách bằng Group Policy hoặc Intune thay vì cách này, vì các lần nâng cấp sẽ không chạm vào chúng.
- MSI và Group Policy ghi cùng các giá trị registry. Đối với mỗi cài đặt, hãy sử dụng một trong hai: gỡ cài đặt MSI sẽ xóa các giá trị mà nó đã ghi, ngay cả khi Group Policy cũng đã thiết lập chúng.
- MSI cũng ghi thư mục cài đặt của nó vào
HKEY_LOCAL_MACHINE\SOFTWARE\Antimatter\Desktop(InstallDir). Đây là cách ứng dụng biết rằng nó đã được cài đặt bằng MSI.
Để gỡ cài đặt: msiexec /x antimatter-desktop-<version>-win-x64.msi /qn. Trong Intune, loại "Windows app (Win32)" sử dụng cùng các dòng lệnh. Đối với loại "Line-of-business app", hãy thêm các thuộc tính vào các tham số dòng lệnh của nó.
Windows: Group Policy và Intune
Các mẫu quản trị, antimatter.admx và en-US\antimatter.adml, nằm trong thư mục gpo của ứng dụng đã cài đặt (C:\Program Files\Antimatter\gpo cho MSI) và trong thư mục resources/windows/gpo của kho ứng dụng. Chúng hiển thị các chính sách này, dưới Administrative Templates › Antimatter:
| Chính sách | Giá trị registry | Cấu hình |
|---|---|---|
| Servers (DefaultServerList) | Thư mục con DefaultServerList | máy tính và người dùng |
| Username to prefill (DefaultUsername) | DefaultUsername | máy tính và người dùng |
| Let people add and remove servers (EnableServerManagement) | EnableServerManagement | máy tính và người dùng |
| Notify about new versions (EnableAutoUpdater) | EnableAutoUpdater | chỉ máy tính |
| Trusted embedded media origins (TrustedEmbeddedMediaOrigins) | Thư mục con TrustedEmbeddedMediaOrigins | máy tính và người dùng |
Group Policy trong miền
- Sao chép
antimatter.admxvào kho lưu trữ tập trung,\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions, vàantimatter.admlvào thư mụcen-UScủa nó. - Trong Group Policy Management Editor, mở Computer Configuration (hoặc User Configuration) › Policies › Administrative Templates › Antimatter.
- Chỉnh sửa một chính sách, chọn Đã bật và điền thông tin. Đối với Servers, nhấp vào Hiển thị và thêm một dòng cho mỗi máy chủ: tên giá trị là tên tab, giá trị là URL của máy chủ, chẳng hạn như
https://chat.example.com.
Bật Let people add and remove servers hoặc Notify about new versions sẽ ghi 1; tắt nó sẽ ghi 0.
Intune
Trong Thiết bị › Cấu hình, sử dụng Nhập ADMX để nhập antimatter.admx cùng với en-US\antimatter.adml. Sau đó, tạo một hồ sơ từ Mẫu › Mẫu quản trị đã nhập và thiết lập các chính sách Antimatter trong đó.
Một máy tính đơn lẻ, hoặc một script
Sao chép các mẫu vào C:\Windows\PolicyDefinitions để sử dụng chúng trong gpedit.msc (Windows Pro và Enterprise). Hoặc ghi trực tiếp các giá trị registry bằng cách nhập tệp .reg với quyền quản trị viên (reg import antimatter-policies.reg), chẳng hạn như tệp này. Tệp example-policies.reg trong cùng thư mục chứa các giá trị này, kèm theo chú thích.
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: hồ sơ cấu hình
Trên macOS, ứng dụng đọc cài đặt của nó từ các tùy chọn được quản lý của định danh gói (bundle identifier) của nó, chat.antimatter.desktop, với các khóa của bảng cài đặt. Triển khai chúng bằng MDM của bạn (Jamf, Intune, Kandji, Mosyle và các công cụ khác) dưới dạng hồ sơ cấu hình.
- Thư mục resources/mac/mdm trong kho lưu trữ của ứng dụng có một hồ sơ mẫu,
antimatter.mobileconfig. Chỉnh sửa các giá trị của nó, gán cho nó các giá trịPayloadIdentifiervàPayloadUUIDcủa riêng bạn (uuidgentạo UUID mới), và tải lên như một hồ sơ tùy chỉnh. - Hầu hết các MDM cũng chấp nhận chỉ các khóa, dưới dạng tải (payload) "cài đặt tùy chỉnh" hoặc "lĩnh vực tùy chọn" cho
chat.antimatter.desktop. Cùng thư mục đó có chúng trongexample-managed-preferences.plist.
Các cài đặt bên trong tải (payload) của hồ sơ:
<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/>
Các giá trị boolean cũng có thể được cho dưới dạng các số nguyên 0 và 1.
Linux: tệp chính sách
Trên Linux, ứng dụng đọc /etc/antimatter-desktop/policies.json, một đối tượng JSON với các khóa của bảng cài đặt:
{
"DefaultServerList": [
{"name": "Chat", "url": "https://chat.example.com"}
],
"DefaultUsername": "%USER%",
"EnableServerManagement": false,
"EnableAutoUpdater": false,
"TrustedEmbeddedMediaOrigins": []
}
Triển khai nó bằng công cụ quản lý cấu hình của bạn (Ansible, Puppet, Salt và các công cụ khác), thuộc về root, có thể đọc bởi tất cả mọi người và chỉ có thể ghi bởi root:
sudo install -d /etc/antimatter-desktop
sudo install -m 644 policies.json /etc/antimatter-desktop/policies.json
Một tệp không phải là JSON hợp lệ sẽ bị bỏ qua, kèm theo một cảnh báo trong nhật ký của ứng dụng. Phiên bản Flatpak không nhìn thấy /etc của hệ thống: hãy cấp quyền đọc cho nó, và nó sẽ đọc tệp từ /run/host/etc/antimatter-desktop/policies.json:
sudo flatpak override --system --filesystem=host-etc:ro chat.antimatter.desktop
Các chính sách được thiết lập cho ứng dụng desktop Mattermost
Trên Windows, ứng dụng cũng đọc các chính sách được thiết lập cho ứng dụng desktop Mattermost, dưới SOFTWARE\Policies\Mattermost, như một phương án dự phòng. Nó đọc chúng theo vị trí: các giá trị trực tiếp dưới khóa chính sách, khóa con DefaultServerList và khóa con TrustedEmbeddedMediaOrigins. Đối với mỗi trong ba vị trí này, nó chỉ đọc khóa Mattermost khi khóa Antimatter không có giá trị ở đó, trong bất kỳ hive nào. Vì vậy, một khi một giá trị được thiết lập trực tiếp dưới khóa Antimatter, chẳng hạn bằng thuộc tính AUTOUPDATE của MSI, thì không có giá trị nào trực tiếp dưới khóa Mattermost được đọc. Hãy di chuyển tất cả các chính sách của bạn sang khóa Antimatter cùng một lúc.
Trên macOS, các tùy chọn quản lý của ứng dụng desktop Mattermost (com.mattermost.desktop) không được đọc: hãy thiết lập chúng cho chat.antimatter.desktop.
Các bản dựng không có chữ ký
Các bản dựng của ứng dụng desktop hiện chưa được ký bằng chứng chỉ của nhà phát hành.
- Windows. Khi một người mở một tệp
.exehoặc.msiđã tải xuống, Microsoft Defender SmartScreen sẽ thông báo rằng Windows đã bảo vệ máy tính và nêu tên một nhà phát hành không xác định. Người dùng chọn Thông tin thêm, sau đó chọn Chạy bất chấp. SmartScreen kiểm tra các tệp mà người dùng mở sau khi tải xuống, vì vậy người dùng sẽ không thấy cảnh báo này khi bạn triển khai ứng dụng thông qua SCCM, Intune hoặc Group Policy. Nếu máy tính của bạn chỉ chạy phần mềm từ các nhà phát hành được phê duyệt (quy tắc AppLocker hoặc App Control for Business), hãy cho phép ứng dụng bằng đường dẫn cài đặt hoặc băm tệp của nó. - macOS. Ứng dụng được ký ad hoc, nhưng chưa được Apple chứng nhận (notarised). Lần đầu tiên một người mở một bản sao đã tải xuống, macOS sẽ thông báo rằng nó không thể xác minh ứng dụng không chứa phần mềm độc hại và sẽ không mở nó. Trên macOS 15 trở lên, người dùng mở Cài đặt hệ thống › Quyền riêng tư & Bảo mật và chọn Mở bất chấp. Trên các phiên bản trước đó, họ nhấn giữ Control và nhấp chuột vào ứng dụng, sau đó chọn Mở. Gatekeeper chỉ kiểm tra các tệp được đánh dấu là đã tải xuống (có thuộc tính cách ly): khi bạn cài đặt ứng dụng bằng công cụ của riêng mình, hãy xóa dấu này trong script cài đặt của bạn bằng
xattr -dr com.apple.quarantine /Applications/Antimatter.app.