Partager via


Créer un package ou un bundle MSIX avec MakeAppx.exe

MakeAppx.exe crée des packages d’application (.msix ou .appx) et des bundles de packages d’application (.msixbundle ou .appxbundle). MakeAppx.exe extrait également des fichiers à partir d’un package d’application ou d’un bundle et chiffre ou déchiffre les packages d’application et les bundles. Cet outil est inclus dans le Kit de développement logiciel (SDK) Windows 10 et peut être utilisé à partir d’une invite de commandes ou d’un fichier de script.

Pour plus d’informations sur l’utilisation deMakeApp.exe pour empaqueter une application de bureau, consultez Packager une application de bureau manuellement.

Important

Si vous avez utilisé Visual Studio pour développer votre application, il est recommandé d’utiliser l’Assistant Visual Studio pour créer votre package d’application. Pour plus d’informations, consultez Packager une application UWP avec Visual Studio et Empaqueter une application de bureau à partir du code source à l’aide de Visual Studio.

Important

Notez que MakeAppx.exe ne génère pas un fichier de téléchargement de package d'application (.appxupload ou .msixupload), qui est le type recommandé de package d'application valide pour les soumissions à l'Espace partenaires. Le fichier de chargement du package d’application est généralement créé dans le cadre du processus d’empaquetage Visual Studio, même s’il peut également être créé manuellement.

Utilisation de MakeAppx.exe

En fonction de votre chemin d’installation du Kit de développement logiciel (SDK), c’est là queMakeAppx.exe se trouve sur votre PC Windows 10 :

  • C :\Program Files (x86)\Windows Kits\10\bin\<numéro de build>\<architecture>\makeappx.exe

où <architecture> = x86, x64, arm, arm64 ou chpe. Vous pouvez également le trouver dans :

  • C :\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe

syntaxe et options MakeAppx.exe

Syntaxe généraleMakeAppx.exe :

MakeAppx <command> [options]      

Le tableau suivant décrit les commandes pour MakeAppx.exe.

Commande Description
paquet Crée un paquet.
déballer Extrait tous les fichiers du package spécifié vers le répertoire de sortie spécifié.
paquet Crée un groupe.
Dégrouper Dépaquète tous les packages dans un sous-répertoire sous le chemin de sortie spécifié, nommé d'après le nom complet du bundle ou du package.
chiffrer Crée un package d’application ou un bundle chiffré à partir du package/bundle d’entrée au niveau du package/bundle de sortie spécifié.
déchiffrer Crée un package d’application ou un bundle d’applications déchiffrés à partir du package/bundle d’application d’entrée au niveau du package/bundle de sortie spécifié.

Cette liste d’options s’applique à toutes les commandes :

Option Description
/d Spécifie l’entrée, la sortie ou le répertoire de contenu.
/l Utilisé pour les packages localisés. Les voyages de validation par défaut sur les packages localisés. Cette option désactive uniquement cette validation spécifique, sans exiger que toutes les validations soient désactivées.
/kf Chiffre ou déchiffre le package ou le bundle à l’aide de la clé du fichier de clé spécifié. Cela ne peut pas être utilisé avec /kt.
/Kt Chiffre ou déchiffre le package ou le lot à l'aide de la clé de test globale. Cela ne peut pas être utilisé avec /kf.
/Non Empêche un remplacement du fichier de sortie s’il existe. Si vous ne spécifiez pas cette option ou l’option /o, l’utilisateur est invité à remplacer le fichier.
/Nv Ignore la validation sémantique. Si vous ne spécifiez pas cette option, l’outil effectue une validation complète du package.
/o Remplace le fichier de sortie s’il existe. Si vous ne spécifiez pas cette option ou l’option /no, l'utilisateur est invité à décider s'il veut remplacer le fichier.
/p Spécifie le package ou l’offre groupée de l’application.
/v Active la sortie de journalisation détaillée dans la console.
/? Affiche le texte d’aide.

La liste suivante contient les arguments possibles :

argument Description
<nom du package de sortie> Nom du package créé. Il s’agit du nom de fichier ajouté avec .msix ou .appx.
<Nom du package de sortie chiffré> Nom du package chiffré créé. Il s’agit du nom de fichier ajouté avec .emsix ou .eappx.
<nom du package d’entrée> Nom du package. Il s’agit du nom de fichier ajouté avec .msix ou .appx.
<Nom du package d’entrée chiffré> Nom du package chiffré. Il s’agit du nom de fichier ajouté avec .emsix ou .eappx.
<nom de paquet de sortie> Nom de l’offre groupée créée. Il s’agit du nom de fichier ajouté avec .msixbundle ou .appxbundle.
<Nom du bundle de sortie chiffré> Nom du bundle chiffré créé. Il s’agit du nom de fichier ajouté avec .emsixbundle ou .eappxbundle.
<nom du bundle d’entrée> Nom de l’offre groupée. Il s’agit du nom de fichier ajouté avec .msixbundle ou .appxbundle.
<Nom du bundle d’entrée chiffré> Nom du bundle chiffré. Il s’agit du nom de fichier ajouté avec .emsixbundle ou .eappxbundle.
<répertoire de contenu> Chemin d’accès au package d’application ou au contenu groupé.
<fichier de mappage> Nom de fichier qui spécifie la source et la destination du package.
<répertoire de sortie> Chemin d’accès au répertoire des packages de sortie et des bundles.
<fichier clé> Nom du fichier contenant une clé pour le chiffrement ou le déchiffrement.
<ID d’algorithme> Algorithmes utilisés lors de la création d’une carte de blocs. Les algorithmes valides sont les suivants : SHA256 (valeur par défaut), SHA384, SHA512.

Créer un package d’application

Un package d’application est un ensemble complet des fichiers de l’application inclus dans un fichier de package .msix ou .appx. Pour créer un package d’application à l’aide de la commande pack , vous devez fournir un répertoire de contenu ou un fichier de mappage pour l’emplacement du package. Vous pouvez également chiffrer un package lors de sa création. Si vous souhaitez chiffrer le package, vous devez utiliser /ep et spécifier si vous utilisez un fichier de clé (/kf) ou la clé de test globale (/kt). Pour plus d’informations sur la création d’un package chiffré, consultez Chiffrer ou déchiffrer un package ou un bundle.

Options spécifiques à la commande pack :

Option Description
/f Spécifie le fichier de mappage.
par heure Spécifie l’algorithme de hachage à utiliser lors de la création de la carte de blocs. Cela ne peut être utilisé qu’avec la commande pack. Les algorithmes valides sont les suivants : SHA256 (valeur par défaut), SHA384, SHA512.
/m Spécifie le chemin d’accès à un manifeste d’application d’entrée qui sera utilisé comme base pour générer le package d’application de sortie ou le manifeste du package de ressources. Lorsque vous utilisez cette option, vous devez également utiliser /f et inclure une section [ResourceMetadata] dans le fichier de mappage pour spécifier les dimensions de ressource à inclure dans le manifeste généré.
/Nc Empêche la compression des fichiers de package. Par défaut, les fichiers sont compressés en fonction du type de fichier détecté.
/r Génère un package de ressources. Cela doit être utilisé avec /m et implique l’utilisation de l’option /l.

Les exemples d’utilisation suivants montrent certaines options de syntaxe possibles pour la commande pack :

MakeAppx pack [options] /d <content directory> /p <output package name>
MakeAppx pack [options] /f <mapping file> /p <output package name>
MakeAppx pack [options] /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /r /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kf <key file>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kt

Voici des exemples de ligne de commande pour la commande pack :

MakeAppx pack /v /h SHA256 /d "C:\My Files" /p MyPackage.msix
MakeAppx pack /v /o /f MyMapping.txt /p MyPackage.msix
MakeAppx pack /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p AppPackage.msix
MakeAppx pack /r /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p ResourcePackage.msix
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kf MyKeyFile.txt
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kt

Créer un ensemble d’applications

Un ensemble d’applications est similaire à un package d’application, mais un bundle peut réduire la taille de l’application que les utilisateurs téléchargent. Les offres groupées d’applications sont utiles pour les ressources spécifiques au langage, les ressources à l’échelle de l’image variables ou les ressources qui s’appliquent à des versions spécifiques de Microsoft DirectX, par exemple. Comme pour créer un package d’application chiffré, vous pouvez également chiffrer le bundle d’applications tout en le regroupant. Pour chiffrer le bundle d’applications, utilisez l’option /ep et spécifiez si vous utilisez un fichier de clé (/kf) ou la clé de test globale (/kt). Pour plus d’informations sur la création d’un bundle chiffré, consultez Chiffrer ou déchiffrer un package ou un bundle.

Options spécifiques à la commande bundle :

Option Description
/Bv Spécifie le numéro de version du bundle. Le numéro de version doit être en quatre parties séparées par des points sous la forme : <Major>.<Mineur>.<Générer>.<Révision>.
/f Spécifie le fichier de mappage.

Notez que si la version de l’offre groupée n’est pas spécifiée ou si elle est définie sur « 0.0.0.0 », le bundle est créé à l’aide de la date-heure actuelle.

Les exemples d’utilisation suivants montrent certaines options de syntaxe possibles pour la commande bundle :

MakeAppx bundle [options] /d <content directory> /p <output bundle name>
MakeAppx bundle [options] /f <mapping file> /p <output bundle name>
MakeAppx bundle [options] /d <content directory> /ep <encrypted output bundle name> /kf MyKeyFile.txt
MakeAppx bundle [options] /f <mapping file> /ep <encrypted output bundle name> /kt

Le bloc suivant contient des exemples pour la commande bundle :

MakeAppx bundle /v /d "C:\My Files" /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kf MyKeyFile.txt
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kt

Extraire des fichiers d’un package ou d’un bundle

Outre l’empaquetage et le regroupement d’applications, MakeAppx.exe peuvent également décompresser ou dissocier les packages existants. Vous devez fournir le répertoire de contenu comme destination pour les fichiers extraits. Si vous essayez d’extraire des fichiers à partir d’un package ou d’un bundle chiffré, vous pouvez déchiffrer et extraire les fichiers en même temps à l’aide de l’option /ep et spécifier s’il doit être déchiffré à l’aide d’un fichier de clé (/kf) ou de la clé de test globale (/kt). Pour plus d’informations sur le déchiffrement d’un package ou d’un bundle, consultez Chiffrer ou déchiffrer un package ou un bundle.

Options propres à décompresser et dissocier les commandes :

Option Description
/Nd N’effectue pas de déchiffrement lors de la décompression ou du déballage du paquet/bundle.
/pfn Décompresse/dégroupe tous les fichiers dans un sous-répertoire sous le chemin de sortie spécifié, portant le nom complet du paquet ou de l'ensemble.

Les exemples d’utilisation suivants montrent certaines options de syntaxe possibles pour les commandes décompresser et dissocier :

MakeAppx unpack [options] /p <input package name> /d <output directory>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kf <key file>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kt

MakeAppx unbundle [options] /p <input bundle name> /d <output directory>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kf <key file>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kt

Le bloc suivant contient des exemples d’utilisation des commandes de décompression et de décompression :

MakeAppx unpack /v /p MyPackage.msix /d "C:\My Files"
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kt

MakeAppx unbundle /v /p MyBundle.msixbundle /d "C:\My Files"
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kt

Chiffrer ou déchiffrer un package ou un bundle

L’outilMakeAppx.exe peut également chiffrer ou déchiffrer un package ou un bundle existant. Vous devez simplement fournir le nom du package, le nom du package de sortie et si le chiffrement ou le déchiffrement doit utiliser un fichier de clé (/kf) ou la clé de test globale (/kt).

Le chiffrement et le déchiffrement ne sont pas disponibles via l’Assistant Empaquetage Visual Studio.

Options spécifiques au chiffrement et au déchiffrement des commandes :

Option Description
/Ep Spécifie un package ou un bundle d’application chiffré.

Les exemples d’utilisation suivants montrent certaines options de syntaxe possibles pour les commandes de chiffrement et de déchiffrement :

MakeAppx encrypt [options] /p <package name> /ep <output package name> /kf <key file>
MakeAppx encrypt [options] /p <package name> /ep <output package name> /kt

MakeAppx decrypt [options] /ep <package name> /p <output package name> /kf <key file>
MakeAppx decrypt [options] /ep <package name> /p <output package name> /kt

Le bloc suivant contient des exemples d’utilisation des commandes de chiffrement et de déchiffrement :

MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

MakeAppx.exe decrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe decrypt p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

Fichiers clés

Les fichiers clés doivent commencer par une ligne contenant la chaîne « [Clés] », puis les lignes décrivant les clés pour chiffrer chaque package. Chaque clé est représentée par une paire de chaînes entre guillemets, séparées par des espaces ou des onglets. La première chaîne représente l’ID de clé 32 octets codée en base64 et la deuxième représente la clé de chiffrement 32 octets encodée en base64. Un fichier de clé doit être un fichier texte simple.

Exemple de fichier de clé :

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

Fichiers de mappage

Les fichiers de mappage doivent commencer par une ligne contenant la chaîne « [Fichiers] » suivie de lignes décrivant les fichiers à ajouter au package. Chaque fichier est décrit par une paire de chemins entre guillemets, séparés par des espaces ou des onglets. Chaque fichier représente sa source (sur disque) et sa destination (dans le package). Un fichier de mappage doit être un fichier texte simple.

Exemple de fichier de mappage (sans l’option /m) :

[Files]
"C:\MyApp\StartPage.html"               "default.html"
"C:\Program Files (x86)\example.txt"    "misc\example.txt"
"\\MyServer\path\icon.png"              "icon.png"
"my app files\readme.txt"               "my app files\readme.txt"
"CustomManifest.xml"                    "AppxManifest.xml"

Lorsque vous utilisez un fichier de mappage, vous pouvez choisir si vous souhaitez utiliser l’option /m. L’option /m permet à l’utilisateur de spécifier les métadonnées de ressource dans le fichier de mappage à inclure dans le manifeste généré. Si vous utilisez l’option /m, le fichier de mappage doit contenir une section commençant par la ligne « [ResourceMetadata] », suivie de lignes qui spécifient « ResourceDimensions » et « ResourceId ». Il est possible qu’un package d’application contienne plusieurs « ResourceDimensions », mais il ne peut jamais y avoir qu’un seul « ResourceId ».

Exemple de fichier de mappage (avec l’option /m) :

[ResourceMetadata]
"ResourceDimensions"                    "language-en-us"
"ResourceId"                            "English"

[Files]
"images\en-us\logo.png"                 "en-us\logo.png"
"en-us.pri"                             "resources.pri"

Validation sémantique effectuée par MakeAppx.exe

MakeAppx.exe effectue une validation sématique limitée conçue pour intercepter les erreurs de déploiement les plus courantes et vous assurer que le package d’application est valide. Consultez l’option /nv si vous souhaitez ignorer la validation lors de l’utilisation deMakeAppx.exe.

Cette validation garantit que :

  • Tous les fichiers référencés dans le manifeste du package sont inclus dans le package d’application.
  • Une application n’a pas deux clés identiques.
  • Une application ne s’inscrit pas pour un protocole interdit à partir de cette liste : SMB, FILE, MS-WWA-WEB, MS-WWA.

Il ne s’agit pas d’une validation sémantique complète, car elle est conçue uniquement pour intercepter les erreurs courantes. Les packages générés par MakeAppx.exe ne sont pas garantis pour être installables.