Comment générer un fichier de modèle pour les conversions de ligne de commande

Avec l’outil d’empaquetage MSIX, vous pouvez effectuer la conversion de deux manières : via l’interface utilisateur interactive ou via notre option de ligne de commande. Lorsque vous utilisez la ligne de commande, vous devez fournir un fichier de modèle pour que la conversion fonctionne avec vos paramètres et vos besoins spécifiques. Cet article vous guide tout au long du processus de génération d’un fichier de modèle qui vous convient.

Il existe deux façons d’obtenir un fichier de modèle qui fonctionne pour vous :

  • Vous pouvez utiliser l’interface utilisateur de l’outil d’empaquetage MSIX. Dans les paramètres de l’outil, vous pouvez spécifier que vous souhaitez générer un fichier de modèle de conversion avec chaque package MSIX que vous créez.
  • Vous pouvez utiliser un exemple de modèle et entrer manuellement les configurations dont vous avez besoin pour chaque conversion.

Générer un fichier de modèle de conversion à partir de l’outil d’empaquetage MSIX

  1. Lancez l’outil d’empaquetage MSIX.
  2. Accédez aux paramètres dans l’angle supérieur droit de l’application.
  3. Assurez-vous que l’option « générer un fichier de ligne de commande avec chaque package » est sélectionnée.
  4. Apportez d’autres modifications ou modifications à vos paramètres dont vous avez besoin (par exemple, des éléments d’exclusion, des codes de sortie).
  5. Enregistrez les paramètres.
  6. Parcourez le flux de travail du package d’application à l’aide d’un programme d’installation.
    • Si vous ne sélectionnez pas un programme d’installation, vous ne serez pas en mesure de générer un fichier de modèle de conversion.
    • Si vous utilisez un fichier exe, vous devrez transmettre un indicateur Silent à votre programme d’installation pour générer le fichier de modèle de conversion.
  7. À la fin de la conversion, vous disposerez d’un fichier de modèle configuré en fonction du programme d’installation que vous avez choisi, et de vos paramètres actuels que vous pouvez maintenant réutiliser pour les conversions ultérieures.
    • Par défaut, le fichier de modèle de conversion sera enregistré dans le même emplacement que votre package MSIX, mais vous pouvez spécifier un emplacement d’enregistrement distinct pour votre fichier de modèle sur la page créer un package.
    • Vous devrez tout de même apporter des modifications en fonction de ce que MSIX vous souhaitez générer à la fin de chaque conversion.

Modifier manuellement le fichier de modèle de conversion

Vous pouvez modifier manuellement les paramètres de modèle pour le fichier de modèle de conversion afin de générer un fichier de modèle qui vous convient. Lors de la génération du fichier de modèle de conversion, soyez attentif aux fonctionnalités que vous ajoutez au fichier de modèle, car certaines peuvent nécessiter des références de schéma supplémentaires pour fonctionner.

Référence des paramètres de modèle de conversion

Voici la liste complète des paramètres que vous pouvez utiliser dans le fichier de modèle de conversion.

ConversionSettings Description
Paramètres :: AllowTelemetry [facultatif] Active la journalisation des données de télémétrie pour cet appel de l’outil.
Paramètres :: ApplyAllPrepareComputerFixes [facultatif] Applique tous les correctifs de préparation de l’ordinateur recommandés. Ne peut pas être défini quand d’autres attributs sont utilisés.
Paramètres :: GenerateCommandLineFile [facultatif] Copie l’entrée du fichier de modèle dans le répertoire SaveLocation pour une utilisation ultérieure.
Paramètres :: AllowPromptForPassword [facultatif] Fait en sorte que l’outil invite l’utilisateur à entrer les mots de passe de la machine virtuelle et du certificat de signature s’ils sont nécessaires et non spécifiés.
Paramètres :: EnforceMicrosoftStoreVersioningRequirements [facultatif] Fait en sorte que l’outil applique le schéma de gestion de versions de package nécessaire pour le déploiement à partir du Microsoft Store et du Microsoft Store pour Entreprises.
Paramètres :: ServerPortNumber facultatif Utilisé lors de la connexion à un ordinateur distant. Requiert V2 du schéma de modèle.
Paramètres :: AddPackageIntegrity facultatif Ajoute l’intégrité du package à chaque MSIX généré. Requiert v5 du schéma de modèle.
ValidInstallerExitCodes [facultatif] 0 ou plusieurs éléments ValidInstallerExitCode. Requiert V2 du schéma de modèle.
ValidInstallerExitCodes:: ValidInstallerExitCode facultatif Spécifiez les codes de sortie du programme d’installation que l’outil n’est pas familiarisé avec ou qui nécessitent un redémarrage. Requiert V2 du schéma de modèle.
ValidInstallerExitCodes :: ValidInstallerExitCode :: reboot facultatif Spécifiez si un code de sortie doit déclencher un redémarrage lors de la conversion. Requiert v3 du schéma de modèle.
ExclusionItems [facultatif] 0, 1 ou plusieurs éléments FileExclusion ou RegistryExclusion. Tous les éléments FileExclusion doivent apparaître avant les éléments RegistryExclusion.
ExclusionItems::FileExclusion [facultatif] Fichier à exclure de l’empaquetage.
ExclusionItems::FileExclusion::ExcludePath Chemin du fichier à exclure de l’empaquetage.
ExclusionItems::RegistryExclusion [facultatif] Clé de Registre à exclure de l’empaquetage.
ExclusionItems::RegistryExclusion:: ExcludePath Chemin du Registre à exclure de l’empaquetage.
PrepareComputer::DisableDefragService [facultatif] Désactive le Défragmenteur de Windows pendant que l’application est en cours de conversion. Si la valeur est false, remplace ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableWindowsSearchService [facultatif] Désactive Windows Search pendant que l’application est en cours de conversion. Si la valeur est false, remplace ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableSmsHostService [facultatif] Désactive l’hôte SMS pendant que l’application est en cours de conversion. Si la valeur est false, remplace ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableWindowsUpdateService [facultatif] Désactive Windows Update pendant que l’application est en cours de conversion. Si la valeur est false, remplace ApplyAllPrepareComputerFixes.
SaveLocation [facultatif] Élément spécifiant l’emplacement d’enregistrement de l’outil. Si vous ne le définissez pas, le package sera enregistré sous le dossier Bureau.
SaveLocation::PackagePath [facultatif] Chemin du fichier ou dossier où le package MSIX obtenu est enregistré.
SaveLocation::TemplatePath facultatif Chemin d’accès au fichier ou dossier où le modèle de ligne de commande obtenu est enregistré.
Installer::Path Chemin du programme d’installation de l’application.
Installer::Arguments [facultatif] Arguments à passer au programme d’installation. L’outil exécute automatiquement les programmes d’installation MSI en mode silencieux à l’aide de l’argument « /qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1 ». Remarque : vous devez passer les arguments pour forcer votre programme d’installation à s’exécuter en mode silencieux si vous utilisez des programmes d’installation .exe.
Installer::InstallLocation facultatif Le chemin d’accès complet au dossier racine de votre application pour les fichiers installés, s’il a été installé (par exemple, « C:\Program Files (x86) \MyAppInstalllocation »).
VirtualMachine [facultatif] Élément spécifiant que la conversion sera exécutée sur une machine virtuelle locale.
VirtualMachine :: Name Nom de l’ordinateur virtuel à utiliser pour l’environnement de conversion.
VirtualMachine::Username Nom d’utilisateur de la machine virtuelle à utiliser pour l’environnement de conversion.
RemoteMachine facultatif Élément permettant de spécifier que la conversion sera exécutée sur un ordinateur distant. Requiert V2 du schéma de modèle.
RemoteMachine :: ComputerName Nom de la machine distante à utiliser pour l’environnement de conversion. Requiert V2 du schéma de modèle.
RemoteMachine :: username Nom d’utilisateur de la machine distante à utiliser pour l’environnement de conversion. Requiert V2 du schéma de modèle.
RemoteMachine :: EnableAutoLogon facultatif Cette opération vous reconnectera automatiquement lors d’une conversion nécessitant un redémarrage sur une machine distante pour que votre conversion continue. Requiert v3 du schéma de modèle.
PackageInformation::PackageName Nom de votre package MSIX.
PackageInformation::PackageDisplayName Nom complet de votre package MSIX.
PackageInformation::PublisherName Éditeur de votre package MSIX.
PackageInformation::PublisherDisplayName Nom complet de l’éditeur de votre package MSIX.
PackageInformation::Version Numéro de version de votre package MSIX.
PackageInformation ::P ackageDescription facultatif Description de votre package MSIX. Nécessite v4 pour le schéma de modèle.
PackageInformation:: MainPackageNameForModificationPackage [facultatif] Nom d’identité de package du nom du package principal. Il est utilisé lors de la création d’un package de modification qui prend une dépendance envers une application principale (parente).
SigningInformation facultatif Élément permettant de spécifier les informations de signature pour la signature Device Guard. Nécessite v4 pour le schéma de modèle.
SigningInformation:: DeviceGuardSigning facultatif Élément permettant de spécifier les informations de signature de Device Guard. Nécessite v4 pour le schéma de modèle.
DeviceGuardSigning:: TokenFile Le jeton d’accès Azure ad requis pour la signature au format JSON de Device Guard. Requiert un schéma de modèle v4.
DeviceGuardSigning:: TimestampUrl facultatif Fournit un horodateur au moment de la signature avec Device Guard pour s’assurer que votre application sera installée au-delà de la durée de vie du certificat. Nécessite v4 pour le schéma de modèle.
Applications [facultatif] 0, 1 ou plusieurs éléments Application pour configurer les entrées Application dans votre package MSIX.
Application::Id ID de votre application MSIX. Cet ID sera utilisé pour l’entrée d’application détectée qui correspond à l’ExecutableName spécifié. Vous pouvez avoir plusieurs valeurs d’ID d’application pour les exécutables dans le package.

Cette valeur est l’identificateur unique de l’application au sein du package. Elle est parfois appelée « identificateur relatif au package d’application » (ou PRAID, Package-Relative App Identifier). L’ID doit être unique au sein du package (le même ID ne peut pas être utilisé plusieurs fois dans le même package). Toutefois, il n’est pas obligatoire qu’il soit unique au niveau global. Il peut y avoir un autre package sur le système qui utilise le même ID.

Cette chaîne contient des champs alphanumériques séparés par des points. Chaque champ doit commencer par un caractère alphabétique ASCII. Vous ne pouvez pas les utiliser comme valeurs de champ : « CON », « PRN », « aux », « NUL », « COM1 », « COM2 », « COM3 », « COM4 », « COM5 », « COM6 », « COM7 », « COM8 », « COM9 », « LPT1 », « LPT2 », « », «LPT4 », « lpt5 », « lpt6 », « lpt7 », « LPT8 » et « LPT9 ».
Application::DisplayName Nom complet de l’application pour votre package MSIX. Ce nom complet sera utilisée pour l’entrée d’application détectée qui correspond à l’ExecutableName spécifié.
Application::ExecutableName Nom de l’exécutable de l’application MSIX qui sera ajoutée au manifeste du package. L’entrée d’application correspondante sera ignorée si aucune application portant ce nom n’est détectée.
Application::Description [facultatif] Description de votre application MSIX. Si vous ne spécifiez rien, la valeur DisplayName de l’application sera utilisée. Cette description sera utilisée pour l’entrée d’application détectée qui correspond à l’ExecutableName spécifié.
Fonctionnalités [facultatif] 0, 1 ou plusieurs éléments de fonctionnalité pour ajouter des fonctionnalités personnalisées à votre package MSIX. La fonctionnalité « runFullTrust » est ajoutée par défaut lors de la conversion.
Capability::Name Fonctionnalité à ajouter à votre package MSIX.

Exemple de fichier de modèle de conversion

<MsixPackagingToolTemplate
    xmlns="http://schemas.microsoft.com/appx/msixpackagingtool/template/2018"
    xmlns:V2="http://schemas.microsoft.com/msix/msixpackagingtool/template/1904"
    xmlns:V3="http://schemas.microsoft.com/msix/msixpackagingtool/template/1907"
    xmlns:V4="http://schemas.microsoft.com/msix/msixpackagingtool/template/1910"
    xmlns:V5="http://schemas.microsoft.com/msix/msixpackagingtool/template/2001">
<!--Note: You only need to include xmlns:v2 - xmlns:v5 if you are using one of the features that use those schemas -->

    <Settings
        AllowTelemetry="true"
        ApplyAllPrepareComputerFixes="true"
        GenerateCommandLineFile="true"
        AllowPromptForPassword="false" 
        EnforceMicrosoftStoreVersioningRequirements="false"
        v2:ServerPortNumber="1599"
        v5:AddPackageIntegrity="true">    

    <!--Note: Exclusion items are optional and if declared take precedence over the default tool exclusion items
        <ExclusionItems>
            <FileExclusion ExcludePath="[{CryptoKeys}]" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Crypto" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Search\Data" />
            <FileExclusion ExcludePath="[{Cookies}]" />
            <FileExclusion ExcludePath="[{History}]" />
            <FileExclusion ExcludePath="[{Cache}]" />
            <FileExclusion ExcludePath="[{Personal}]" />
            <FileExclusion ExcludePath="[{Profile}]\Local Settings" />
            <FileExclusion ExcludePath="[{Profile}]\NTUSER.DAT.LOG1" />
            <FileExclusion ExcludePath="[{Profile}]\ NTUSER.DAT.LOG2" />
            <FileExclusion ExcludePath="[{Recent}]" />
            <FileExclusion ExcludePath="[{Windows}]\debug" />
            <FileExclusion ExcludePath="[{Windows}]\Logs\CBS" />
            <FileExclusion ExcludePath="[{Windows}]\Temp" />
            <FileExclusion ExcludePath="[{Windows}]\WinSxS\ManifestCache" />
            <FileExclusion ExcludePath="[{Windows}]\WindowsUpdate.log" />
        <FileExclusion ExcludePath="[{Windows}]\Installer" />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\$Recycle.Bin " />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\System Volume Information" />
        <FileExclusion ExcludePath="[{AppVPackageDrive}]\Config.Msi" />
            <FileExclusion ExcludePath="[{AppData}]\Microsoft\AppV" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Antimalware" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Windows Defender" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Windows Defender" />
        <FileExclusion ExcludePath="[{ProgramFiles}]\WindowsApps" />
            <FileExclusion ExcludePath="[{Local AppData}]\Temp" />
        <FileExclusion ExcludePath="[{Local AppData}]\Microsoft\Windows" />
        <FileExclusion ExcludePath="[{Local AppData}]\Packages" />

            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware Setup" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Security Client" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\AppV" />
        </ExclusionItems>
    -->
    
    <!--Note: Specifying an installer exit code will allow you to automatically trigger a reboot during your conversion
      <v2:ValidInstallerExitCodes>
        <V2:ValidInstallerExitCode ExitCode="3010" V3:Reboot="true"/>
        <V2:ValidInstallerExitCode ExitCode="1641"/>
      </v2:ValidInstallerExitCodes>
    -->
        
    </Settings>

    <!--Note: this section takes precedence over the Settings::ApplyAllPrepareComputerFixes attribute and is optional
    <PrepareComputer
        DisableDefragService="true"
        DisableWindowsSearchService="true"
        DisableSmsHostService="true"
        DisableWindowsUpdateService="true"/>
    -->

    <SaveLocation
        PackagePath="C:\users\user\Desktop\MyPackage.msix" 
        TemplatePath="C:\users\user\Desktop\MyTemplate.xml" />

    <Installer
        Path="C:\MyAppInstaller.msi"
        InstallLocation="C:\Program Files\MyAppInstallLocation" />
    
    <!--NOTE: This section specifies that the conversion will be run on a local Virtual Machine. This is optional if you want to change your conversion environment from the default local machine.
    <VirtualMachine Name="vmname" Username="vmusername"/>
    -->

    <!--NOTE: This section specifies that the conversion will be run on a remote machine.This is optional if you want to change your conversion environment from the default local machine.
    <v2:RemoteMachine ComputerName="vmname" Username="vmusername" v3:EnableAutoLogon="true"/>
    -->

    <PackageInformation
        PackageName="MyAppPackageName"
        PackageDisplayName="MyApp Display Name"
        PublisherName="CN=MyPublisher"
        PublisherDisplayName="MyPublisher Display Name"
        Version="1.1.0.0"
        MainPackageNameForModificationPackage="MainPackageIdentityName">

    <!--Note: This is optional, if you want to sign your package with Device Guard signing
        <v4:SigningInformation>
            <v4:DeviceGuardSigning
                Tokenfile="tokenfile.json"
                TimestampUrl="https://mytimestamp.com"/>
        </v4:SigningInformation>
    -->
        
    <!--NOTE: This ID will be used if the Application entry detected matches the specified ExecutableName
        <Applications>
            <Application
                Id="MyApp1"
                Description="MyApp"
                DisplayName="My App"
                ExecutableName="MyApp.exe"/>
        </Applications>
    -->

    <!--NOTE: This is optional as “runFullTrust” capability is added by default during conversion
        <Capabilities>
            <Capability Name="runFullTrust" />
        </Capabilities>
    -->
        
    </PackageInformation>
</MsixPackagingToolTemplate>