Aller au contenu principal

Préinstaller XFA avec tout autre système

XFA n'est lié à aucun système de gestion en particulier. Tout ce qui peut installer un paquet et soit passer une propriété MSI, soit exécuter une commande en tant qu'utilisateur connecté, peut le déployer. La préinstallation est une fonctionnalité Enterprise.

Windows

Passez le token de rattachement comme propriété MSI :

msiexec /i XFA.msi /qn ENROLLMENT_TOKEN=<your-enrollment-token>

ENROLLMENT_TOKEN est une propriété publique, donc elle fonctionne depuis tout outil qui exécute msiexec, et elle ne change pas la signature du programme d'installation. N'ajoutez EMAIL=person@example.com que pour une installation sur un seul appareil : cela fixe une seule adresse, donc dans un déploiement de parc chaque appareil serait rattaché à cette personne. Sur tout un parc, XFA lit l'adresse de chaque appareil dans Active Directory. Installez pour l'utilisateur connecté ; XFA est une application par utilisateur.

L'installation échoue si le rattachement échoue. Via msiexec, c'est une erreur d'installation générique, pas le code propre à XFA : le motif (2 pour un token refusé, 3 quand XFA n'a pas pu être joint) se trouve dans %TEMP%\xfa\xfa-enrollment.log. Installez d'abord et rattachez séparément (ci-dessous) pour récupérer le code directement.

macOS

Installez XFA.pkg pour l'utilisateur connecté, et fournissez le token de l'une de ces deux façons :

  • un profil de configuration avec le preference domain com.xfa.desktop et la clé EnrollmentToken ; ou
  • le fichier /Library/Application Support/XFA/enrollment-token, qui ne contient que le token. XFA ne le lit que s'il appartient à root et n'est modifiable par personne d'autre (mode 644), ce qu'une politique exécutée en tant que root écrit de toute façon. Ce fichier décide de l'organisation que le Mac rejoint, donc un fichier qui échoue à ces vérifications est ignoré.

XFA lit celui qui est présent à son démarrage, et rattache l'utilisateur connecté. Le profil a la priorité.

Si le rattachement échoue, le motif est écrit dans /tmp/xfa/xfa-enrollment.log sur le Mac.

Installer d'abord, rattacher séparément

Si votre outil installe les paquets et exécute les commandes en deux étapes distinctes, rattachez avec :

xfa enroll --token <your-enrollment-token>

Exécutez-le en tant qu'utilisateur connecté, car les identifiants sont conservés dans le trousseau ou le Credential Manager de cet utilisateur. Ajoutez --email <address> quand l'adresse propre au compte n'est pas la bonne.

Le relancer est sans risque et ne coûte aucune requête : XFA reconnaît le token et vérifie le rattachement localement.

xfa se trouve dans %LOCALAPPDATA%\XFA\xfa-backend.exe sous Windows et dans /Applications/XFA.app/Contents/MacOS/xfa sous macOS.

Attendre XFA sous Windows

XFA est une application fenêtrée, donc aucune invite de commande n'apparaît à l'écran de l'utilisateur pendant son travail. Par conséquent, un shell ne l'attend pas, ne reçoit jamais son code de sortie et n'a pas de console à lire. Lancez-le et attendez-le :

$run = Start-Process "$env:LOCALAPPDATA\XFA\xfa-backend.exe" -Wait -PassThru `
-ArgumentList 'enroll', '--token', '<your-enrollment-token>'
$run.ExitCode

Le lancer directement rend la main aussitôt, sans sortie et sans code de sortie, ce qui se lit comme une réussite quoi qu'il soit arrivé. Tout ce qui décide en fonction du résultat (une étape de déploiement, une règle de détection, une vérification de conformité) doit attendre le processus.

Le motif d'un échec est écrit dans %TEMP%\xfa\xfa-enrollment.log, avec la commande et l'heure de chaque exécution. Le token de rattachement n'y est jamais écrit.

Vérifier le résultat

xfa enrollment-status

Le code de sortie 0 signifie que l'appareil est rattaché, 10 qu'il ne l'est pas. Ajoutez --organization-id <id> pour interroger une organisation précise. Il lit les identifiants locaux de l'appareil, donc il n'a besoin ni du réseau ni de droits d'administrateur, ce qui le rend utilisable comme vérification de détection ou de conformité.

Sous Windows, exécutez-le de la même façon que ci-dessus. Une règle de détection qui n'attend pas le processus lit le code de sortie qui la précède, et rapporte une conformité qu'elle n'a jamais mesurée.