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 façons : 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 afin que la conversion fonctionne avec vos paramètres et vos besoins spécifiques. Cet article vous guidera tout au long du processus de génération d’un fichier de modèle qui fonctionne pour vous.

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 prendre 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 le coin supérieur droit de l’application.
  3. Vérifiez 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, les éléments d’exclusion, les 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 de programme d’installation, vous ne pourrez pas générer de fichier de modèle de conversion.
    • Si vous utilisez une exe, vous devez passer un indicateur silencieux à votre programme d’installation pour générer le fichier de modèle de conversion.
  7. À la fin de la conversion, vous disposez 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 désormais réutiliser pour les conversions futures.
    • Par défaut, le fichier de modèle de conversion est 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 dans la page Créer un package.
    • Vous devez toujours apporter certaines modifications en fonction de ce que MSIX 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 pour générer un fichier de modèle qui fonctionne pour vous. Lors de la génération du fichier de modèle de conversion, faites attention aux fonctionnalités que vous ajoutez au fichier de modèle, car certains 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. Nécessite la version 2 du schéma de modèle.
Paramètres :: AddPackageIntegrity [facultatif] Ajoute l’intégrité du package à chaque MSIX généré. Nécessite la version v5 du schéma de modèle.
ValidInstallerExitCodes [facultatif] 0 ou plus éléments ValidInstallerExitCode. Nécessite la version 2 du schéma de modèle.
ValidInstallerExitCodes:: ValidInstallerExitCode [facultatif] Spécifiez les codes de sortie du programme d’installation que l’outil peut ne pas connaître ou nécessiter un redémarrage. Nécessite la version 2 du schéma de modèle.
ValidInstallerExitCodes:: ValidInstallerExitCode:: Reboot [facultatif] Spécifiez si un code de sortie doit déclencher un redémarrage pendant la conversion. Nécessite la version 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 au dossier dans lequel le modèle de ligne de commande résultant 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 transmettre 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] Chemin complet du dossier racine de votre application pour les fichiers installés s’il a été installé (par exemple, « C:\Program Files (x86)\MyAppInstalllocation »).
Installer::IsUnattendedInstallWithoutArgument [facultatif] Cet attribut doit être utilisé si l’application autorise l’installation sans assistance sans arguments silencieux. Cet attribut est utilisé uniquement pour les programmes d’installation .exe.
VirtualMachine [facultatif] Élément spécifiant que la conversion sera exécutée sur une machine virtuelle locale.
VirtualMachine::Name Nom de la machine virtuelle à 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. Nécessite v2 du schéma de modèle.
RemoteMachine:: ComputerName Nom de l’ordinateur distant à utiliser pour l’environnement de conversion. Nécessite v2 du schéma de modèle.
RemoteMachine:: Username Nom d’utilisateur de l’ordinateur distant à utiliser pour l’environnement de conversion. Nécessite v2 du schéma de modèle.
RemoteMachine:: EnableAutoLogon [facultatif] Cela vous reconnecte automatiquement lors de l’exécution d’une conversion qui nécessite un redémarrage sur un ordinateur distant afin que votre conversion continue de manière transparente. Nécessite la version 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 la version v4 du 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 des informations de signature pour la signature Device Guard. Nécessite la version v4 du schéma de modèle.
SigningInformation:: DeviceGuardSigning [facultatif] Élément permettant de spécifier les informations de signature Device Guard. Nécessite la version v4 du schéma de modèle.
DeviceGuardSigning:: TokenFile Jeton d’accès Azure AD requis pour la connexion Device Guard au format JSON. Nécessite un schéma de modèle v4.
DeviceGuardSigning:: TimestampUrl [facultatif] Fournit un horodatage au moment de la signature avec Device Guard pour vous assurer que votre application s’installera au-delà de la durée de vie du certificat. Nécessite la version v4 du 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 », « LPT3 », « 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>