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

Remarque

Pour obtenir des conseils sur l'utilisation de cet outil dans le cadre de l'architecture UWP, consultez la section Créer un package d'application à l'aide de l'outil MakeAppx.exe.

 

L'application packagée (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. À partir de Windows 8.1, App packager crée également un bundle de paquets d'applications à partir de paquets d'applications sur le disque ou extrait les paquets d'applications d'un bundle de paquets d'applications sur le disque. Il est inclus dans Microsoft Visual Studio et dans le kit de développement logiciel Windows (SDK) pour Windows 8 ou le kit de développement logiciel Windows (SDK) pour Windows 8.1, ainsi que dans les versions plus récentes. Visitez la page Téléchargements pour les développeurs afin de les obtenir.

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\bin<build number><architecture>\makeappx.exe

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

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

Utilisation de l'application packagée

Remarque

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épertoire

Placez le fichier AppxManifest.xml à la racine d'un répertoire contenant tous les fichiers utiles de votre application. Une structure de répertoire identique est créée pour le package de l'application et sera disponible lorsque le package sera 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 si nécessaire.

  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 /d input_directorypath /p filepath.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 suivantes spécifient les chemins d'accès de la source (disque) et de la destination (package) sous forme de chaînes de caractères 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 /f mapping_filepath /p filepath.appx

Pour signer le package à l'aide de SignTool

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

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

    SignTool sign /a /v /fd hashAlgorithm /f certFileName filepath.appx

    Le hashAlgorithm doit correspondre à l'algorithme de hachage utilisé pour créer la blockmap lorsque l'application a été packagée. Avec l'utilitaire de packaging MakeAppx, l'algorithme de hachage par défaut d'Appx blockmap est SHA256. Exécutez SignTool.exe en spécifiant SHA256 comme algorithme de résumé de fichier (/fd) :

    SignTool sign /a /v /fd SHA256 /f certFileName filepath.appx

    Pour plus d'informations sur la manière de signer les packages, voir Comment signer un package d'application à l'aide de SignTool.

Pour extraire des fichiers d'un package

  1. Exécutez cette commande :

    MakeAppx unpack /p file.appx /d output_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 du <répertoire content> (y compris les sous-dossiers). Si le <répertoire content> 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 /d input_directorypath /p filepath.appxbundle

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

Nous utilisons la commande bundle pour créer une application packagée au <nom du bundle de sortie> en ajoutant tous les packages 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 suivantes spécifient les packages à ajouter au bundle. Chaque package est décrit par un appairage de chemins entre guillemets, séparés par des espaces ou des tabulations. L'appairage représente la source (sur le disque) et la destination (dans le bundle) du package. Tous les noms de package de destination doivent porter 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 /f mapping_filepath /p filepath.appxbundle

Pour extraire des packages d'un bundle

  1. Exécutez cette commande :

    MakeAppx unbundle /p bundle_name.appxbundle /d output_directory

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

Pour chiffrer un package à l'aide d'un fichier clé

  1. Créez un fichier clé. Les fichiers de clés doivent commencer par une ligne contenant la chaîne « [Keys] » suivie de lignes décrivant les clés avec lesquelles le package doit être chiffré. Chaque clé est décrite par une appairage de chaînes entre guillemets, séparées par des espaces ou des tabulations. La première chaîne représente l'ID de la clé et la seconde la clé de chiffrement sous forme hexadécimale.

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

    MakeAppx.exe encrypt /p package_name.appx /ep encrypted_package_name.eappx /kf keyfile_name.txt

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

Pour chiffrer un package avec une clé de test globale

  1. Exécutez cette commande :

    MakeAppx.exe encrypt /p package_name.appx /ep encrypted_package_name.eappx /kt

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

Pour déchiffrer un package avec un fichier clé

  1. Créez un fichier clé. Les fichiers de clés doivent commencer par une ligne contenant la chaîne « [Keys] » suivie de lignes décrivant les clés avec lesquelles le package doit être chiffré. Chaque clé est décrite par une appairage de chaînes entre guillemets, séparées par des espaces ou des tabulations. La première chaîne représente l'ID de la clé de 32 octets codé en base64 et la deuxième chaîne représente la clé de chiffrement de 32 octets codée en base64.

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

    MakeAppx.exe decrypt /p package_name.appx /ep unencrypted_package_name.eappx /kf keyfile_name.txt

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

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

  1. Exécutez cette commande :

    MakeAppx.exe decrypt /p package_name.appx /ep unencrypted_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 sont mutuellement exclusifs.

MakeAppx pack [options] /p <nom du package de sortie> /d <répertoire de contenu>

MakeAppx pack [options] /p <nom du package de sortie> /f <fichier de mappage>

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

bundle MakeAppx [options] /p <nom du paquet de sortie> /d <répertoire de contenu>

MakeAppx bundle [options] /p <nom du bundle de sortie> /f <fichier de mappage>

MakeAppx unbundle [options] /p <nom du bundle d'entrée> /d <répertoire de sortie>

MakeAppx encrypt [options] /p <nom du package d'entrée> /ep <nom du package de sortie>

MakeAppx decrypt [options] /p <nom du package d'entrée> /ep <nom du package de sortie>

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 emballe ou déballe les fichiers d'un package, regroupe ou dissocie les packages d'un bundle, ou chiffre ou déchiffre le package ou le bundle de l'application dans le répertoire d'entrée ou le fichier de mappage spécifié. Voici la liste des paramètres qui s'appliquent à MakeAppx pack, MakeAppx unpack, MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt, ou MakeAppx decrypt.

/l

Cette option est utilisée 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 toute la validation soit désactivée.

/o

Écraser 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 écraser le fichier.

Vous ne pouvez pas utiliser cette option avec /no.

/no

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é à indiquer s'il souhaite écraser le fichier.

Vous ne pouvez pas utiliser cette option avec /o.

/nv

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

/v

Activer la sortie du journal détaillé sur 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 la ligne de commande qui s'appliquent spécifiquement à chaque commande :

MakeAppx pack [h]

Crée un package.

/h algorithm

Spécifie l’algorithme de hachage à utiliser lors de la création de la carte de blocs. Voici les valeurs valables pour l'algorithme :

SHA256 (valeur par défaut)
SHA384
SHA512

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

MakeAppx unpack [pfn]

Extrait tous les fichiers du package spécifié vers 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 l'emplacement de sortie indiqué, nommé d'après le nom complet du bundle. La sortie a la même structure de répertoire que le package installé.

/pfn

Spécifie un répertoire nommé d'après 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 bundle.

MakeAppx encrypt [kf, kt]

Crée un package d'applications chiffré à partir du package d'applications d'entrée spécifié vers le package de sortie spécifié.

Fichier de clé /kf <>

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.

MakeAppx decrypt [kf, kt]

Crée un package d'application non chiffré à partir du package d'application d'entrée spécifié dans le package de sortie spécifié.

Fichier de clé /kf <>

Déchiffre le package ou l'ensemble à l'aide de la clé du fichier de clés spécifié. Vous ne pouvez pas utiliser cette option avec kt.

/kt

Déchiffre le package ou le bundle en utilisant 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 qui est conçue pour attraper les erreurs de déploiement les plus courantes et aider à assurer que le package de l'application est valide.

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'enregistre pas pour un protocole interdit de cette liste : SMB , FILE, MS-WWA-WEB, MS-WWA.

Cette validation sémantique n'est pas complète, et les packages construits par MakeAppx ne sont pas garantis d'être installables.