Outil de création de package de l’application (MakeAppx.exe)

Notes

Pour obtenir des conseils sur l’utilisation de cet outil, consultez Créer un package d’application avec l’outil MakeAppx.exe.

 

Le packageur d’applications (MakeAppx.exe) crée un package d’application à partir de fichiers sur le disque ou extrait les fichiers d’un package d’application sur disque. À compter de Windows 8.1, le packageur d’applications crée également un bundle de packages d’application à partir de packages d’application sur disque ou extrait les packages d’application d’un ensemble de packages d’application sur disque. Il est inclus dans Microsoft Visual Studio et le Kit de développement logiciel (SDK) Windows pour Windows 8 ou Windows Kit de développement logiciel (SDK) pour Windows 8.1 et versions ultérieures. Visitez les téléchargements pour que les développeurs les obtiennent.

L’outil MakeAppx.exe se trouve généralement dans des emplacements spécifiques à la version du système d’exploitation :

  • C:\Program Files (x86)\Windows Kits\10\binbuild< numberarchitecture><>\makeappx.exe

Where = x86, x64, arm, ar64 ou chpe. Il peut également se trouver dans :

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

Utilisation du packager d’application

Notes

Les chemins relatifs sont pris en charge dans l’ensemble de l’outil.

 

Pour créer un package à l’aide d’une structure de répertoires

Placez le AppxManifest.xml à la racine d’un répertoire contenant tous les fichiers de charge utile de votre application. Une structure de répertoire identique est créée pour le package d’application et sera disponible lorsque le package est extrait au moment du déploiement.

  1. Placez tous les fichiers dans une structure de répertoire unique, en créant des sous-répertoires comme vous le souhaitez.

  2. Créez un manifeste de package valide, AppxManifest.xml et placez-le dans le répertoire racine.

  3. Exécutez cette commande :

    MakeAppx pack /dinput_directorypath/pfilepath.appx

Pour créer un package à l’aide d’un fichier de mappage

  1. Créez un manifeste de package valide, AppxManifest.xml.

  2. Créez un fichier de mappage. La première ligne contient la chaîne [Files], et les lignes qui suivent spécifient les chemins source (disque) et de destination (package) dans les chaînes entre guillemets.

    [Files]
    "C:\MyApp\StartPage.htm"     "default.html"
    "C:\MyApp\readme.txt"        "doc\readme.txt"
    "\\MyServer\path\icon.png"   "icon.png"
    "MyCustomManifest.xml"       "AppxManifest.xml"
    
  3. Exécutez cette commande :

    MakeAppx pack /fmapping_filepath/pfilepath.appx

Pour signer le package à l’aide de SignTool

  1. Créez le certificat. L’éditeur répertorié dans le manifeste doit correspondre aux informations d’objet de l’éditeur du certificat de signature. Pour plus d’informations sur la création d’un certificat de signature, consultez Comment créer un certificat de signature de package d’application.

  2. Exécutez SignTool.exe pour signer le package :

    SignTool sign /a /v /fdhashAlgorithm/fcertFileNamefilepath.appx

    Le hashAlgorithm doit correspondre à l’algorithme de hachage utilisé pour créer le blocmap lorsque l’application a été empaquetée. Avec l’utilitaire d’empaquetage MakeAppx, l’algorithme de hachage de mappage de bloc Appx par défaut est SHA256. Exécutez SignTool.exe en spécifiant SHA256 comme algorithme de synthèse de fichier (/fd) :

    SignTool sign /a /v /fd SHA256 /fcertFileNamefilepath.appx

    Pour plus d’informations sur la façon de signer des packages, consultez Comment signer un package d’application à l’aide de SignTool.

Pour extraire des fichiers d’un package

  1. Exécutez cette commande :

    MakeAppx décompresse /pfile.appx/doutput_directory

  2. Le package décompressé a la même structure que le package installé.

Pour créer un bundle de packages à l’aide d’une structure de répertoires

Nous utilisons la commande bundle pour créer un bundle d’applications au <nom> du bundle de sortie en ajoutant tous les packages à partir du répertoire> de <contenu (y compris les sous-dossiers). Si <le répertoire> de contenu contient un manifeste de bundle, AppxBundleManifest.xml, il est ignoré.

  1. Placez tous les packages dans une structure de répertoire unique, en créant des sous-répertoires comme vous le souhaitez.

  2. Exécutez cette commande :

    MakeAppx bundle /dinput_directorypath/pfilepath.appxbundle

Pour créer un ensemble de packages à l’aide d’un fichier de mappage

Nous utilisons la commande bundle pour créer un bundle d’applications au <nom> du bundle de sortie en ajoutant tous les packages à partir d’une liste de packages dans <le fichier> de mappage. Si <le fichier> de mappage contient un manifeste de bundle, AppxBundleManifest.xml, il est ignoré.

  1. Créez un <fichier> de mappage. La première ligne contient la chaîne [Files] et les lignes qui suivent spécifient les packages à ajouter au bundle. Chaque package est décrit par une paire de chemins entre guillemets, séparés par des espaces ou des onglets. La paire de chemins représente la source du package (sur le disque) et la destination (en bundle). Tous les noms de package de destination doivent avoir l’extension .appx.

        [Files]
        "C:\MyApp\MyApp_x86.appx"                 "MyApp_x86.appx"
        "C:\Program Files (x86)\ResPack.appx"    "resources\resPack.appx"
        "\\MyServer\path\ResPack.appx"           "Respack.appx"
        "my app files\respack.appx"              "my app files\respack.appx"
    
  2. Exécutez cette commande :

    MakeAppx bundle /fmapping_filepath/pfilepath.appxbundle

Pour extraire des packages d’un bundle

  1. Exécutez cette commande :

    MakeAppx unbundle /pbundle_name.appxbundle /doutput_directory

  2. Le bundle décompressé a la même structure que l’ensemble de packages installé.

Pour chiffrer un package avec un fichier de clé

  1. Créez un fichier de clé. Les fichiers de clé doivent commencer par une ligne contenant la chaîne « [Clés] », puis les lignes décrivant les clés avec utilisant le package. Chaque clé est décrite 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é et la deuxième chaîne représente la clé de chiffrement sous forme hexadécimale.

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. Exécutez cette commande :

    MakeAppx.exe chiffrer /ppackage_name.appx /epencrypted_package_name.eappx /kfkeyfile_name.txt

  3. Le package d’entrée est chiffré dans le package chiffré spécifié à l’aide du fichier de clé fourni.

Pour chiffrer un package avec une clé de test globale

  1. Exécutez cette commande :

    MakeAppx.exe chiffrer /ppackage_name.appx /epencrypted_package_name.eappx /kt

  2. Le package d’entrée est chiffré dans le package chiffré spécifié à l’aide de la clé de test globale.

Pour déchiffrer un package avec un fichier de clé

  1. Créez un fichier de clé. Les fichiers de clé doivent commencer par une ligne contenant la chaîne « [Clés] », puis les lignes décrivant les clés avec utilisant le package. Chaque clé est décrite 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é codée en base64 de 32 octets et la deuxième chaîne représente la clé de chiffrement codée en base64 de 32 octets.

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. Exécutez cette commande :

    MakeAppx.exe déchiffrer /ppackage_name.appx /epunencrypted_package_name.eappx /kfkeyfile_name.txt

  3. Le package d’entrée est déchiffré dans le package non chiffré spécifié à l’aide du fichier de clé fourni.

Pour déchiffrer un package avec une clé de test globale

  1. Exécutez cette commande :

    MakeAppx.exe déchiffrer /ppackage_name.appx /epunencrypted_package_name.eappx /kt

  2. Le package d’entrée est déchiffré dans le package non chiffré spécifié à l’aide de la clé de test globale.

Utilisation

L’argument de ligne de commande /p est toujours requis, avec /d, /f ou /ep. Notez que /d, /f et /ep s’excluent mutuellement.

MakeAppx pack [options]/poutput< package name>/dcontent<directory>

MakeAppx pack [options]/poutput< package name>/fmapping< file>

MakeAppx unpack [options]/pinput< package name>/doutput< directory>

Bundle MakeAppx [options]/poutput< bundle name>/dcontent<directory>

MakeAppx bundle [options]/poutput< bundle name>/fmapping< file>

MakeAppx unbundle [options]/pinput< bundle name>/doutput< directory>

MakeAppx encrypt [options]/pinput< package name>/epoutput< package name>

MakeAppx decrypt [options]/pinput< package name>/epoutput< package name>

Syntaxe de ligne de commande

Voici la syntaxe d’utilisation courante de la ligne de commande pour MakeAppx.

MakeAppx [pack|unpack|bundle|unbundle|encrypt|decrypt] [/h/kf/kt/l/o/no/nv/v/pfn/?]

MakeAppx packs ou décompresse les fichiers dans un package, regroupe ou désactive les packages d’un bundle, ou chiffre ou déchiffre le package d’application ou le bundle dans le répertoire d’entrée ou le fichier de mappage spécifié. Voici la liste des paramètres qui s’appliquent au pack MakeAppx, au package MakeAppx, à l’offre groupée MakeAppx, au décodage MakeAppx, au chiffrement MakeAppx ou au déchiffrement MakeAppx.

/l

Cette option est utilisée pour les packages localisés. La valeur par défaut se déclenche sur les packages localisés. Cette option désactive uniquement cette validation spécifique, sans nécessiter la désactivation de toutes les validations.

/o

Remplacez le fichier de sortie s’il existe. Si vous ne spécifiez pas cette option ou l’option /no , l’utilisateur est invité à indiquer s’il souhaite remplacer le fichier.

Vous ne pouvez pas utiliser cette option avec /no.

/no

Empêche le 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.

Vous ne pouvez pas utiliser cette option avec /o.

/nv

Ignorez la validation sémantique. Si vous ne spécifiez pas cette option, l’outil effectue une validation complète du package.

/v

Activez la sortie de journalisation détaillée dans la console.

/?

Afficher le texte d’aide.

MakeAppx pack , MakeAppx unpack , MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt et MakeAppx decrypt sont des commandes mutuellement exclusives. Voici les paramètres de ligne de commande qui s’appliquent spécifiquement à chaque commande :

MakeAppx pack [h]

Crée un package.

/halgorithm

Spécifie l’algorithme de hachage à utiliser lors de la création du mappage de bloc. Voici les valeurs valides pour l’algorithme :

SHA256 (par défaut)
SHA384
SHA512

Vous ne pouvez pas utiliser cette option avec la commande de décompression .

Déballage MakeAppx [pfn]

Extrait tous les fichiers du package spécifié dans le répertoire de sortie spécifié. La sortie a la même structure de répertoire que le package.

/pfn

Spécifie un répertoire nommé avec le nom complet du package. Ce répertoire est créé sous l’emplacement de sortie fourni. Vous ne pouvez pas utiliser cette option avec la commande pack .

MakeAppx unbundle [pfn]

Décompresse tous les packages dans un sous-répertoire sous le chemin de sortie spécifié, nommé après le nom complet de l’offre groupée. La sortie a la même structure de répertoires que l’ensemble de packages installé.

/pfn

Spécifie un répertoire nommé avec le nom complet de l’offre groupée de packages. Ce répertoire est créé sous l’emplacement de sortie fourni. Vous ne pouvez pas utiliser cette option avec la commande bundle .

MakeAppx encrypt [kf, kt]

Crée un package d’application chiffré à partir du package d’application d’entrée spécifié au package de sortie spécifié.

Fichier /kfkey<>

Chiffre le package ou le bundle à l’aide de la clé du fichier de clé spécifié. Vous ne pouvez pas utiliser cette option avec kt.

/kt

Chiffre le package ou le bundle à l’aide de la clé de test globale. Vous ne pouvez pas utiliser cette option avec kf.

Déchiffrer MakeAppx [kf, kt]

Crée un package d’application non chiffré à partir du package d’application d’entrée spécifié au package de sortie spécifié.

Fichier /kfkey<>

Déchiffre le package ou l’offre groupée à l’aide de la clé du fichier de clé spécifié. Vous ne pouvez pas utiliser cette option avec kt.

/kt

Déchiffre le package ou l’offre groupée à l’aide de la clé de test globale. Vous ne pouvez pas utiliser cette option avec kf.

Validation sémantique effectuée par MakeAppx

MakeAppx effectue une validation sémantique limitée conçue pour intercepter les erreurs de déploiement les plus courantes et garantir que le package d’application est valide.

Cette validation vérifie 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 de cette liste : SMB, FILE, MS-WWA-WEB, MS-WWA.

Cette validation sémantique n’est pas terminée et les packages générés par MakeAppx ne sont pas garantis pour être installables.