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

Notes

Pour obtenir des conseils UWP 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 le disque. À compter de Windows 8.1, app packager 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 le Kit de développement logiciel (SDK) Windows pour Windows 8.1 et versions ultérieures. Consultez Téléchargements pour les développeurs pour les obtenir.

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

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

Où <architecture> = 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 packageur d’applications

Notes

Les chemins d’accès 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épertoires identique est créée pour le package d’application et sera disponible lorsque le package sera extrait au moment du déploiement.

  1. Placez tous les fichiers dans une structure de répertoires 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 d’accès 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 blockmap lorsque l’application a été empaquetée. Avec l’utilitaire d’empaquetage MakeAppx, l’algorithme de hachage de la carte 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 signature de 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’application 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épertoires unique, en créant des sous-répertoires comme vous le souhaitez.

  2. Exécutez cette commande :

    Bundle MakeAppx /dinput_directorypath/pfilepath.appxbundle

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

Nous utilisons la commande bundle pour créer un bundle d’application 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 d’accès représente la source du package (sur le disque) et la destination (dans l’offre groupée). 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 :

    Bundle MakeAppx /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 le bundle de packages installé.

Pour chiffrer un package avec un fichier de clé

  1. Créez un fichier de clé. Les fichiers de clés doivent commencer par une ligne contenant la chaîne « [Clés] », suivie de lignes décrivant les clés avec 100 clés avec 1000 clés. Chaque clé est décrite par une paire de chaînes entre guillemets, séparées par des espaces ou des tabulations. 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és doivent commencer par une ligne contenant la chaîne « [Clés] », suivie de lignes décrivant les clés avec 100 clés avec 1000 clés. Chaque clé est décrite par une paire de chaînes entre guillemets, séparées par des espaces ou des tabulations. 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échiffrez /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 sera 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]/p<output package name>/d<content directory>

MakeAppx pack [options]/p<output package name>/f<mapping file>

MakeAppx décompresse [options]/p<nom du package> d’entrée/répertoire>de sortie d<

MakeAppx bundle [options]/p<output bundle name>/d<content directory>

MakeAppx bundle [options]/p<output bundle name>/f<mapping file>

MakeAppx unbundle [options]/p<input bundle name>/d<output directory>

MakeAppx encrypt [options]/p<input package name>/ep<output package name>

MakeAppx decrypt [options]/p<input package name>/ep<output package name>

Syntaxe de ligne de commande

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

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

MakeAppx empaque ou décompresse les fichiers d’un package, regroupe ou dissocie les packages d’un bundle, ou chiffre ou déchiffre le package d’application ou l’offre groupée 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, à l’unpack MakeAppx, à l’offre groupée MakeAppx, à l’unbundle 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 exiger que toute la validation soit désactivée.

/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.

/non

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é à savoir s’il souhaite 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.

/C

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.

Algorithme /h

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

SHA256 (par défaut)
SHA384
SHA512

Vous ne pouvez pas utiliser cette option avec la commande unpack .

Unpack 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épertoires 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 .

Unbundle MakeAppx [pfn]

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

/pfn

Spécifie un répertoire nommé avec le nom complet de l’offre groupée de package. 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 declé> /kf<

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

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.

Déchiffrage MakeAppx [kf, kt]

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

Fichier declé> /kf<

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 la validité du package d’application.

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 dans cette liste : SMB , FILE, MS-WWA-WEB, MS-WWA.

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