Distribuzione dell'app desktop

Come installare l'app desktop di Antimatter sui computer di un'azienda o di una scuola e impostare centralmente i server, il nome utente e le verifiche degli aggiornamenti su Windows, macOS e Linux.

Scarica l'app

Le release dell'app desktop sono disponibili su GitHub, all'indirizzo github.com/AntimatterChat/desktop-app/releases. Come il server, l'app è in fase beta: una release la cui versione ha un suffisso dopo un trattino è contrassegnata come Pre-release. Ogni release include un file SHA256SUMS con il checksum di ogni file. Verifica il download con sha256sum --check --ignore-missing SHA256SUMS su Linux, oppure confronta l'output di Get-FileHash <file> -Algorithm SHA256 in PowerShell con la riga corrispondente in SHA256SUMS.

  • Windows (x64 e arm64): l'installatore .exe, il pacchetto .msi o un archivio .zip. Ad esempio antimatter-desktop-<version>-win-x64.exe e antimatter-desktop-<version>-win-x64.msi.
  • macOS: un'immagine disco .dmg o un .zip, per Apple silicon (arm64), Mac Intel (x64) o entrambi (universal).
  • Linux (x64 e arm64): un pacchetto .deb o .rpm, un AppImage, un bundle Flatpak o un archivio .tar.gz.

Quale installatore Windows utilizzare

L'installatore .exeIl pacchetto .msi
PerPer chi installa l'app da soloPer le aziende che la distribuiscono sui propri computer
InstallazioneSolo per l'account Windows corrente, in %LOCALAPPDATA%\Programs\antimatter-desktop, senza diritti di amministratorePer tutti gli utenti del computer, in C:\Program Files\Antimatter, con diritti di amministratore
AggiornamentiL'app verifica la presenza di nuove versioni e propone di scaricare il nuovo .exe, che aggiorna la copia installata in locoL'app non verifica la presenza di nuove versioni: sono distribuite da te

L'app verifica la presenza di nuove versioni su GitHub ogni ora durante l'esecuzione, rilevando solo le release complete e non quelle preliminari. Quando ne trova una, lo comunica all'utente e offre un link per il download. Una copia installata tramite MSI non esegue la verifica di default, poiché gli utenti che la utilizzano di solito non possono installare software. È possibile abilitare le verifiche per questa copia tramite l'impostazione EnableAutoUpdater: in tal caso, il download proposto sarà il nuovo file .msi, che richiede i diritti di amministratore.

Utilizza il file MSI per una distribuzione gestita tramite SCCM (Configuration Manager), Intune o l'installazione software tramite Criteri di gruppo. L'installazione del MSI rimuove la copia .exe dell'account che esegue l'installazione, se presente.

Le impostazioni gestibili

Le stesse impostazioni sono presenti su tutti i sistemi. Su Windows si tratta di valori di registro sotto SOFTWARE\Policies\Antimatter, in HKEY_LOCAL_MACHINE (per il computer) o in HKEY_CURRENT_USER (per un singolo utente). Su macOS e Linux sono chiavi delle preferenze gestite o del file di policy.

ImpostazioneSu WindowsSu macOS e LinuxFunzione
DefaultServerListUna sottochiave con un valore stringa per ogni server: il nome del valore è il nome della sua scheda, i dati sono il relativo URLUn array di dizionari (oggetti su Linux) con name e urlAggiunge server all'app. Gli utenti non possono modificarli o rimuoverli.
DefaultUsernameUna stringaUna stringaCompila il nome utente nella pagina di accesso di questi server.
EnableServerManagementUn DWORD, 0 o 1Un booleano0 o false: gli utenti possono utilizzare solo i server impostati tramite DefaultServerList e l'app nasconde le opzioni per aggiungere, modificare o rimuovere i server. Non impostato: gli utenti possono aggiungere i propri server.
EnableAutoUpdaterUn DWORD, 0 o 1Un booleano0 o false: l'app non verifica mai la presenza di nuove versioni e nasconde Verifica aggiornamenti. 1 o true: esegue la verifica, anche se installata tramite MSI. Non impostato: la copia .exe esegue la verifica, la copia MSI no.
TrustedEmbeddedMediaOriginsUna sottochiave con valori stringa, ciascuno un oggetto JSON con serverOrigin e embeddedOriginUn array di dizionari con serverOrigin e embeddedOriginPermette al contenuto incorporato nelle pagine di un server, come una pagina di videochiamata, di utilizzare i permessi per fotocamera e microfono concessi a quel server.
  • Il nome utente viene compilato solo nella pagina di accesso dei server impostati dalla policy, mai su un server aggiunto manualmente da una persona e mai sovrascrivendo ciò che qualcuno ha digitato. Le persone possono comunque modificarlo. Le variabili di ambiente tra parentesi percentuali vengono sostituite, in modo che un unico valore funzioni per tutti: %USERNAME% su Windows o %USER% su macOS e Linux restituisce il nome dell'account, mentre %USERNAME%@example.com genera un indirizzo e-mail che segue questo schema. Se una variabile non è impostata, l'app non compila nulla.
  • Se disattivi la gestione dei server, imposta almeno un server in DefaultServerList.
  • Su Windows, una policy del computer (HKEY_LOCAL_MACHINE) ha la precedenza su una policy dell'utente (HKEY_CURRENT_USER). Gli elenchi dei server di entrambe vengono combinati.
  • L'app legge le impostazioni all'avvio: dopo una modifica, le persone devono uscire e riaprirla.

Windows: installazione silenziosa tramite MSI

L'MSI accetta proprietà pubbliche che scrivono le impostazioni come policy del computer, in HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Antimatter. Usale in un'applicazione SCCM, in un'app Intune o in uno script. In PowerShell:

msiexec /i antimatter-desktop-<version>-win-x64.msi /qn SERVERURL=https://chat.example.com SERVERNAME=Chat DEFAULTUSERNAME='%USERNAME%' AUTOUPDATE=0 SERVERMANAGEMENT=0
ProprietàScriveSe non specificato
SERVERURLUn server in DefaultServerList, con questo URLNessun server
SERVERNAMEIl nome della scheda di quel serverAntimatter
DEFAULTUSERNAMEDefaultUsernameNiente
AUTOUPDATEEnableAutoUpdater, 0 o 1Niente: la copia MSI non verifica gli aggiornamenti
SERVERMANAGEMENTEnableServerManagement, 0 o 1Niente: le persone possono aggiungere server
  • Una proprietà non specificata non scrive nulla, quindi non sovrascrive un valore impostato da Group Policy. AUTOUPDATE e SERVERMANAGEMENT accettano solo 0 o 1. L'MSI imposta un solo server: usa Group Policy per più server.
  • DEFAULTUSERNAME deve raggiungere l'installatore come il testo %USERNAME%, in modo che l'app lo sostituisca per ciascuna persona. Altrimenti la shell che esegue l'installazione lo sostituisce con il proprio nome account. In PowerShell, mantieni le virgolette singole. In un file .bat, scrivi %%USERNAME%%. Dopo un'installazione di prova, verifica nel registro che DefaultUsername contenga %USERNAME%.
  • Passa di nuovo le proprietà a ogni aggiornamento. L'installazione di una nuova versione dell'MSI rimuove quella precedente, insieme ai valori scritti, e poi scrive i valori della nuova riga di comando. SCCM e Intune mantengono la riga di comando di un'applicazione: riutilizzala per ogni nuova versione. Oppure imposta le policy con Group Policy o Intune, che gli aggiornamenti non toccano.
  • L'MSI e la Group Policy scrivono gli stessi valori di registro. Per ogni impostazione, usa uno o l'altro: la disinstallazione dell'MSI elimina i valori scritti da quest'ultimo, anche se la Group Policy li ha impostati.
  • L'MSI registra anche la cartella di installazione in HKEY_LOCAL_MACHINE\SOFTWARE\Antimatter\Desktop (InstallDir). Questo è il modo in cui l'app sa di essere stata installata tramite MSI.

Per disinstallare: msiexec /x antimatter-desktop-<version>-win-x64.msi /qn. In Intune, il tipo "Windows app (Win32)" accetta le stesse righe di comando. Per il tipo "Line-of-business app", aggiungi le proprietà ai suoi argomenti della riga di comando.

Windows: Group Policy e Intune

I modelli amministrativi, antimatter.admx e en-US\antimatter.adml, si trovano nella cartella gpo dell'app installata (C:\Program Files\Antimatter\gpo per l'MSI) e nella cartella resources/windows/gpo del repository dell'app. Mostrano queste policy, sotto Administrative Templates › Antimatter:

PolicyValore di registroConfigurazione
Servers (DefaultServerList)Sottocle DefaultServerListcomputer e utente
Username to prefill (DefaultUsername)DefaultUsernamecomputer e utente
Let people add and remove servers (EnableServerManagement)EnableServerManagementcomputer e utente
Notify about new versions (EnableAutoUpdater)EnableAutoUpdatersolo computer
Trusted embedded media origins (TrustedEmbeddedMediaOrigins)Sottocle TrustedEmbeddedMediaOriginscomputer e utente

Group Policy in un dominio

  1. Copia antimatter.admx nell'archivio centrale, \\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions, e antimatter.adml nella sua cartella en-US.
  2. Nell'Editor di gestione Group Policy, apri Computer Configuration (o User Configuration) › Policies › Administrative Templates › Antimatter.
  3. Modifica una policy, scegli Abilitato e compila i campi. Per Servers, fai clic su Mostra e aggiungi una riga per ogni server: il nome del valore è il nome della scheda, il valore è l'URL del server, ad esempio https://chat.example.com.

L'abilitazione di Let people add and remove servers o Notify about new versions scrive 1; la disabilitazione scrive 0.

Intune

In Dispositivi › Configurazione, usa Importa ADMX per importare antimatter.admx con en-US\antimatter.adml. Quindi crea un profilo da Modelli › Modelli amministrativi importati e imposta le policy di Antimatter al suo interno.

Un singolo computer, o uno script

Copia i modelli in C:\Windows\PolicyDefinitions per usarli in gpedit.msc (Windows Pro e Enterprise). Oppure scrivi i valori del registro direttamente, con un file .reg importato come amministratore (reg import antimatter-policies.reg), come questo. Il file example-policies.reg nella stessa cartella contiene questi valori, con commenti.

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: un profilo di configurazione

Su macOS, l'app legge le sue impostazioni dalle preferenze gestite del suo identificativo bundle, chat.antimatter.desktop, con le chiavi di la tabella delle impostazioni. Distribuiscile con il tuo MDM (Jamf, Intune, Kandji, Mosyle e altri) come profilo di configurazione.

  • La cartella resources/mac/mdm del repository dell'app contiene un profilo di esempio, antimatter.mobileconfig. Modifica i suoi valori, assegnagli i tuoi valori PayloadIdentifier e PayloadUUID (uuidgen genera nuovi UUID) e caricalo come profilo personalizzato.
  • La maggior parte degli MDM accetta anche solo le chiavi, come payload "impostazioni personalizzate" o "dominio preferenze" per chat.antimatter.desktop. La stessa cartella le contiene in example-managed-preferences.plist.

Le impostazioni all'interno del payload del profilo:

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

I valori booleani possono anche essere forniti come interi 0 e 1.

Linux: il file di policy

Su Linux, l'app legge /etc/antimatter-desktop/policies.json, un oggetto JSON con le chiavi di la tabella delle impostazioni:

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

Distribuiscilo con il tuo strumento di gestione della configurazione (Ansible, Puppet, Salt e altri), di proprietà di root, leggibile da tutti e scrivibile solo da root:

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

Un file che non è un JSON valido viene ignorato, con un avviso nel log dell'app. La versione Flatpak non vede la cartella /etc dell'host: concedile l'accesso in lettura e leggerà il file da /run/host/etc/antimatter-desktop/policies.json:

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

Policy impostate per l'app desktop di Mattermost

Su Windows, l'app legge anche le policy configurate per l'app desktop Mattermost, sotto SOFTWARE\Policies\Mattermost, come fallback. Le legge in base alla posizione: i valori direttamente sotto la chiave di policy, la sottochiave DefaultServerList e la sottochiave TrustedEmbeddedMediaOrigins. Per ciascuna di queste tre posizioni, legge la chiave Mattermost solo quando la chiave Antimatter non ha valori lì, in entrambi gli hive. Quindi, una volta impostato un valore direttamente sotto la chiave Antimatter, ad esempio tramite la proprietà AUTOUPDATE dell'MSI, nessuno dei valori direttamente sotto la chiave Mattermost viene letto. Sposta tutte le tue policy nella chiave Antimatter in un'unica volta.

Su macOS, le preferenze gestite dell'app desktop Mattermost (com.mattermost.desktop) non vengono lette: impostale per chat.antimatter.desktop.

Build non firmate

Le build dell'app desktop non sono ancora firmate con un certificato del publisher.

  • Windows. Quando una persona apre un file .exe o .msi scaricato, Microsoft Defender SmartScreen avvisa che Windows ha protetto il computer e indica un publisher sconosciuto. La persona sceglie Maggiori informazioni, poi Esegui comunque. SmartScreen controlla i file che le persone aprono dopo un download, quindi non vedranno questo avviso se distribuisci l'app tramite SCCM, Intune o Group Policy. Se i tuoi computer eseguono solo software da publisher approvati (regole AppLocker o App Control for Business), autorizza l'app tramite il percorso di installazione o l'hash del file.
  • macOS. L'app è firmata ad hoc, ma non è stata notarizzata da Apple. La prima volta che una persona apre una copia scaricata, macOS avvisa che non può verificare che l'app sia priva di malware e non la apre. Su macOS 15 e versioni successive, la persona apre Impostazioni di Sistema › Privacy e Sicurezza e sceglie Apri comunque. Su versioni precedenti, fa clic di controllo sull'app e sceglie Apri. Gatekeeper controlla solo i file contrassegnati come scaricati (con l'attributo di quarantena): quando installi l'app con i tuoi strumenti, rimuovi il contrassegno nel tuo script di installazione, con xattr -dr com.apple.quarantine /Applications/Antimatter.app.