Развёртывание настольного приложения
Как установить настольное приложение Antimatter на компьютеры компании или школы и централизованно настроить его серверы, имя пользователя и проверку обновлений на Windows, macOS и Linux.
Скачивание приложения
Релизы настольного приложения доступны на GitHub по адресу github.com/AntimatterChat/desktop-app/releases. Как и сервер, приложение находится в бета-версии: релиз, версия которого содержит суффикс после дефиса, помечен как Pre-release. В каждом релизе есть файл SHA256SUMS с контрольными суммами всех файлов. Проверьте скачанный файл с помощью 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), 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 | Массив словарей (объектов на Linux) с полями name и url | Добавляет серверы в приложение. Пользователи не могут их редактировать или удалять. |
DefaultUsername | Строка | Строка | Заполняет имя пользователя на странице входа для этих серверов. |
EnableServerManagement | DWORD, 0 или 1 | Логическое значение | 0 или false: пользователи могут использовать только серверы, заданные в DefaultServerList, а приложение скрывает опции добавления, редактирования и удаления серверов. Не задано: пользователи могут добавлять свои серверы. |
EnableAutoUpdater | DWORD, 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 |
DEFAULTUSERNAME | DefaultUsername | Ничего |
AUTOUPDATE | EnableAutoUpdater, 0 или 1 | Ничего: копия MSI не проверяет обновления |
SERVERMANAGEMENT | EnableServerManagement, 0 или 1 | Ничего: пользователи могут добавлять серверы |
- Свойство, которое не задано, ничего не записывает, поэтому не перезаписывает значение, установленное групповой политикой.
AUTOUPDATEиSERVERMANAGEMENTпринимают только 0 или 1. MSI задаёт один сервер: для нескольких используйте групповую политику. DEFAULTUSERNAMEдолжен дойти до установщика в виде текста%USERNAME%, чтобы приложение заменило его для каждого пользователя. Иначе оболочка, запускающая установку, заменит его именем своей учётной записи. В 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 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 | компьютер и пользователь |
Групповая политика в домене
- Скопируйте
antimatter.admxв центральный хранилище,\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions, аantimatter.adml— в его папкуen-US. - В редакторе управления групповой политикой откройте Computer Configuration (или User Configuration) › Policies › Administrative Templates › Antimatter.
- Измените политику, выберите Включено и заполните поля. Для Серверов нажмите Показать и добавьте по одной строке на сервер: имя значения — это имя вкладки, а значение — 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 приложение читает свои настройки из управляемых предпочтений (managed preferences) для идентификатора пакета chat.antimatter.desktop, используя ключи из таблицы настроек. Разверните их с помощью вашего MDM (Jamf, Intune, Kandji, Mosyle и других) в виде профиля конфигурации.
- В папке resources/mac/mdm репозитория приложения есть пример профиля
antimatter.mobileconfig. Измените его значения, задайте собственные значенияPayloadIdentifierиPayloadUUID(новые UUID можно сгенерировать с помощьюuuidgen) и загрузите его как пользовательский профиль. - Большинство MDM также принимают сами ключи в качестве полезной нагрузки «настраиваемых параметров» (custom settings) или «домена предпочтений» (preference domain) для
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 приложение также читает политики, установленные для настольного приложения Mattermost, в разделе SOFTWARE\Policies\Mattermost, в качестве резервного варианта. Оно читает их по местам: значения непосредственно под ключом политики, подключ DefaultServerList и подключ TrustedEmbeddedMediaOrigins. Для каждого из этих трёх мест оно читает ключ Mattermost только в том случае, если в ключе Antimatter нет значений в любом из хивов. Таким образом, как только одно значение будет установлено непосредственно под ключом Antimatter, например, с помощью свойства AUTOUPDATE MSI, ни одно из значений непосредственно под ключом 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. Приложение подписано ad hoc, но не нотариально заверено Apple. При первом открытии загруженной копии macOS сообщает, что не может проверить приложение на наличие вредоносного ПО, и не открывает его. На macOS 15 и новее пользователи открывают Системные настройки › Конфиденциальность и безопасность и выбирают Открыть в любом случае. На более ранних версиях они нажимают Control и щёлкают по приложению, затем выбирают Открыть. Gatekeeper проверяет только файлы, помеченные как загруженные (с атрибутом карантина): при установке приложения с помощью собственных инструментов снимите эту метку в сценарии установки с помощью
xattr -dr com.apple.quarantine /Applications/Antimatter.app.