Развёртывание настольного приложения

Как установить настольное приложение 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СтрокаСтрокаЗаполняет имя пользователя на странице входа для этих серверов.
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Ничего: пользователи могут добавлять серверы
  • Свойство, которое не задано, ничего не записывает, поэтому не перезаписывает значение, установленное групповой политикой. 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компьютер и пользователь

Групповая политика в домене

  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

В разделе Устройства › Настройки используйте Импорт 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.