部署桌面应用

如何在企业或学校的计算机上安装 Antimatter 桌面应用,并在 Windows、macOS 和 Linux 上集中设置其服务器、用户名和更新检查。

下载应用

桌面应用的发布版本位于 GitHub,地址为 github.com/AntimatterChat/desktop-app/releases。与服务器一样,该应用目前处于测试阶段:版本号中带有连字符后缀的发布版本被标记为 预发布。每个发布版本都包含一个 SHA256SUMS 文件,其中列出了所有文件的校验和。在 Linux 上,可以使用 sha256sum --check --ignore-missing SHA256SUMS 来验证下载;或者在 PowerShell 中运行 Get-FileHash <file> -Algorithm SHA256,并将其输出与 SHA256SUMS 中对应的行进行比较。

  • Windows(x64 和 arm64):.exe 安装程序、.msi 软件包或 .zip 压缩包。例如 antimatter-desktop-<version>-win-x64.exe 和 antimatter-desktop-<version>-win-x64.msi。
  • macOS:.dmg 磁盘映像或 .zip 压缩包,适用于 Apple 芯片(arm64)、Intel Mac(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 或组策略软件安装功能管理的部署。安装 MSI 时,如果存在,将移除正在执行安装的用户账户的 .exe 副本。

可管理的设置

所有系统上都存在相同的设置。在 Windows 上,它们是位于 SOFTWARE\Policies\Antimatter 下的注册表值,分别位于 HKEY_LOCAL_MACHINE(针对计算机)或 HKEY_CURRENT_USER(针对单个用户)。在 macOS 和 Linux 上,它们是托管偏好设置或策略文件中的键。

设置项在 Windows 上在 macOS 和 Linux 上功能说明
DefaultServerList一个子键,每个服务器对应一个字符串值:值名称为其选项卡名称,数据为其 URL一个包含 name 和 url 的字典(在 Linux 上为对象)数组向应用添加服务器。用户无法编辑或删除这些服务器。
DefaultUsername一个字符串一个字符串在这些服务器的登录页面上自动填充用户名。
EnableServerManagement一个 DWORD,值为 0 或 1一个布尔值0 或 false:用户只能使用由 DefaultServerList 设置的服务器,且应用会隐藏添加、编辑和删除服务器的选项。未设置:用户可以添加自己的服务器。
EnableAutoUpdater一个 DWORD,值为 0 或 1一个布尔值0 或 false:应用从不检查新版本,并隐藏检查更新。1 或 true:应用会执行检查,即使是通过 MSI 安装的。未设置:.exe 副本会执行检查,MSI 副本则不会。
TrustedEmbeddedMediaOrigins一个子键,包含字符串值,每个值都是一个包含 serverOrigin 和 embeddedOrigin 的 JSON 对象一个包含 serverOrigin 和 embeddedOrigin 的字典数组允许嵌入在服务器页面中的内容(例如视频会议页面)使用该服务器已授予的摄像头和麦克风权限。
  • 用户名仅在策略指定的服务器的登录页上自动填充,不会在用户自行添加的服务器上填充,也不会覆盖用户手动输入的内容。用户仍可修改该字段。百分号之间的环境变量会被替换,因此一个值即可适用于所有人:Windows 上的 %USERNAME% 或 macOS 和 Linux 上的 %USER% 会填入账户名,而 %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
属性写入内容如果未提供
SERVERURLDefaultServerList 中的一个服务器,使用此 URL无服务器
SERVERNAME该服务器选项卡的名称Antimatter
DEFAULTUSERNAMEDefaultUsername无
AUTOUPDATEEnableAutoUpdater,0 或 1无:MSI 副本不会检查更新
SERVERMANAGEMENTEnableServerManagement,0 或 1无:用户可以添加服务器
  • 未提供的属性不会写入任何内容,因此不会覆盖由组策略设置的值。AUTOUPDATE 和 SERVERMANAGEMENT 仅接受 0 或 1。MSI 仅设置一个服务器:如需设置更多,请使用组策略。
  • DEFAULTUSERNAME 必须以文本 %USERNAME% 的形式传递给安装程序,以便应用程序为每个人进行替换。否则,运行安装程序的 shell 会将其替换为其自身的账户名。在 PowerShell 中,请保留单引号。在 .bat 文件中,请写为 %%USERNAME%%。测试安装后,请在注册表中检查 DefaultUsername 是否包含 %USERNAME%。
  • 每次升级时都需重新传递属性。 安装新版本的 MSI 时会移除旧版本及其写入的值,然后写入新命令行中的值。SCCM 和 Intune 会保留应用程序的命令行:请为每个新版本重用该命令行。或者,改用组策略或 Intune 设置策略,升级操作不会影响这些设置。
  • MSI 和组策略写入相同的注册表值。对于每个设置,请仅使用其中一种方式:卸载 MSI 会删除其写入的值,即使组策略也设置了这些值。
  • MSI 还会在 HKEY_LOCAL_MACHINE\SOFTWARE\Antimatter\Desktop(InstallDir)中记录其安装文件夹。应用程序通过此方式得知它是通过 MSI 安装的。

要卸载,请运行:msiexec /x antimatter-desktop-<version>-win-x64.msi /qn。在 Intune 中,“Windows 应用 (Win32)” 类型使用相同的命令行。对于“行业应用”类型,请将属性添加到其命令行参数中。

Windows:组策略和 Intune

管理模板 antimatter.admx 和 en-US\antimatter.adml 位于已安装应用的 gpo 文件夹中(对于 MSI,位于 C:\Program Files\Antimatter\gpo),以及应用仓库的 resources/windows/gpo 文件夹中。它们在 管理模板 › Antimatter 下显示以下策略:

策略注册表值配置
服务器 (DefaultServerList)DefaultServerList 子项计算机和用户
预填用户名 (DefaultUsername)DefaultUsername计算机和用户
允许用户添加和移除服务器 (EnableServerManagement)EnableServerManagement计算机和用户
通知新版本 (EnableAutoUpdater)EnableAutoUpdater仅计算机
受信任的嵌入媒体来源 (TrustedEmbeddedMediaOrigins)TrustedEmbeddedMediaOrigins 子项计算机和用户

域中的组策略

  1. 将 antimatter.admx 复制到中央存储区 \\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions,并将 antimatter.adml 复制到其 en-US 文件夹。
  2. 在组策略管理编辑器中,打开 计算机配置(或 用户配置)› 策略 › 管理模板 › Antimatter。
  3. 编辑策略,选择 已启用 并填写内容。对于 服务器,点击 显示 并为每个服务器添加一行:值名称是选项卡名称,值是服务器 URL,例如 https://chat.example.com。

启用 允许用户添加和移除服务器 或 通知新版本 会写入 1;禁用则写入 0。

Intune

在 设备 › 配置 中,使用 导入 ADMX 导入 antimatter.admx 和 en-US\antimatter.adml。然后从 模板 › 导入的管理模板 创建配置文件,并在其中设置 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 上,应用程序从其捆绑标识符 chat.antimatter.desktop 的管理偏好设置中读取设置,使用设置表中的键。请通过您的 MDM(Jamf、Intune、Kandji、Mosyle 等)将其作为配置文件部署。

  • 应用程序仓库的 resources/mac/mdm 文件夹中包含一个示例配置文件 antimatter.mobileconfig。请编辑其值,为其指定您自己的 PayloadIdentifier 和 PayloadUUID 值(uuidgen 可生成新的 UUID),然后将其作为自定义配置文件上传。
  • 大多数 MDM 也接受单独的键,作为 chat.antimatter.desktop 的“自定义设置”或“偏好设置域”负载。同一文件夹中的 example-managed-preferences.plist 包含这些键。

配置文件负载中的设置:

<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/>

布尔值也可以表示为整数 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 桌面应用程序设置的策略

在 Windows 上,如果 Antimatter 策略未设置,应用程序还会回退读取 Mattermost 桌面应用程序的策略,这些策略位于 SOFTWARE\Policies\Mattermost 下。它按位置读取:策略键直接下的值、DefaultServerList 子键以及 TrustedEmbeddedMediaOrigins 子键。对于这三个位置中的每一个,只有当 Antimatter 键在任一注册表配置单元中都没有值时,它才会读取 Mattermost 键。因此,一旦直接在 Antimatter 键下设置了某个值(例如通过 MSI 的 AUTOUPDATE 属性),则不会读取 Mattermost 键直接下的任何值。请一次性将所有策略迁移到 Antimatter 键下。

在 macOS 上,不会读取 Mattermost 桌面应用程序的托管偏好设置(com.mattermost.desktop):请为 chat.antimatter.desktop 设置它们。

未签名构建

桌面应用程序的构建版本尚未使用发布者证书进行签名。

  • Windows。 当用户打开下载的 .exe 或 .msi 文件时,Microsoft Defender SmartScreen 会提示 Windows 已保护计算机,并指出发布者未知。用户需选择更多信息,然后选择仍要运行。SmartScreen 会检查用户在下载后打开的文件,因此通过 SCCM、Intune 或组策略部署应用程序时,用户不会看到此警告。如果您的计算机仅运行来自已批准发布者的软件(AppLocker 或 App Control for Business 规则),请通过安装路径或文件哈希来允许该应用程序。
  • macOS。 该应用程序经过临时签名,但未通过 Apple 公证。用户首次打开下载的副本时,macOS 会提示无法验证该应用程序是否不含恶意软件,并且不会打开它。在 macOS 15 及更高版本中,用户需打开系统设置 › 隐私与安全性,然后选择仍要打开。在更早的版本中,用户需控制点击该应用程序,然后选择打开。Gatekeeper 仅检查标记为已下载(具有隔离属性)的文件:当您使用自己的工具安装应用程序时,请在安装脚本中移除该标记,使用 xattr -dr com.apple.quarantine /Applications/Antimatter.app。