Génération de composants de package MSIX

Cet article explique comment générer des composants de package MSIX pour empaqueter votre application avec des outils en ligne de commande (sans utiliser Visual Studio ni MSIX Packaging Tool).

Pour empaqueter manuellement votre application, vous devez créer un fichier manifeste du package, ajouter des composants de package, puis exécuter l’outil en ligne de commande MakeAppx.exe afin de générer un package MSIX.

D’abord, préparer le package

Si vous ne l’avez pas encore fait, consultez cette section sur ce qu’il faut savoir avant d’empaqueter votre application.

Créer un manifeste de package

Créez un fichier, nommez-le appxmanifest.xml, puis ajoutez-lui ce code XML.

Il s’agit d’un modèle de base qui contient les éléments et attributs dont votre package a besoin. Nous ajouterons des valeurs dans la section suivante.

<?xml version="1.0" encoding="utf-8"?>
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="" Version="" Publisher="" ProcessorArchitecture="" />
  <Properties>
    <DisplayName></DisplayName>
    <PublisherDisplayName></PublisherDisplayName>
    <Description></Description>
    <Logo></Logo>
  </Properties>
  <Resources>
    <Resource Language="" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="" MaxVersionTested="" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust"/>
  </Capabilities>
  <Applications>
    <Application Id="" Executable=""
      uap10:RuntimeBehavior="packagedClassicApp"
      uap10:TrustLevel="mediumIL">
      <uap:VisualElements DisplayName="" Description=""	Square150x150Logo=""
        Square44x44Logo="" BackgroundColor="" />
    </Application>
  </Applications>
</Package>

Remarque

Si votre package s’installe sur des systèmes antérieurs à Windows 10, version 2004 (10.0 ; Build 19041), puis utilisez l’attribut EntryPoint au lieu de uap10:RuntimeBehavior et uap10:TrustLevel. Pour plus d’informations et des exemples, voir uap10 a été introduit dans Windows 10, version 2004 (10.0 ; Build 19041).

Renseigner les éléments au niveau du package de votre fichier

Renseignez ce modèle avec des informations décrivant votre package.

Informations d’identité

Voici un exemple d’élément Identity avec des espaces réservés pour les attributs. Vous pouvez définir l’attribut ProcessorArchitecture sur x64, x86, arm (c’est-à-ARM 32 bits), arm64 ou neutral

<Identity Name="MyCompany.MySuite.MyApp"
          Version="1.0.0.0"
          Publisher="CN=MyCompany, O=MyCompany, L=MyCity, S=MyState, C=MyCountry"
			    ProcessorArchitecture="x64">

Remarque

Si vous avez réservé le nom de votre application dans le Microsoft Store, vous pouvez obtenir le nom et l’éditeur à l’aide de l’Espace partenaires. Si vous prévoyez de charger votre application en sideloading sur d’autres systèmes, vous pouvez fournir vos propres noms tant que le nom d’éditeur que vous choisissez correspond au nom indiqué sur le certificat utilisé pour signer votre application.

Propriétés

L’élément Properties comprend 3 éléments enfants obligatoires. Voici un exemple de nœud Properties avec des espaces réservés pour les éléments. DisplayName est le nom de votre application (ce nom peut être réservé dans le Store pour les applications qui y sont chargées).

<Properties>
  <DisplayName>MyApp</DisplayName>
  <PublisherDisplayName>MyCompany</PublisherDisplayName>
  <Logo>images\icon.png</Logo>
</Properties>

Ressources

Voici un exemple de nœud Resources.

<Resources>
  <Resource Language="en-us" />
</Resources>

Dépendances

Pour les applications de bureau pour lesquelles vous créez un package, définissez toujours l’attribut Name avec la valeur Windows.Desktop.

<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>

Fonctionnalités

Pour un package qui contient une ou plusieurs applications de confiance totale, vous devez déclarer la runFullTrust fonctionnalité restreinte, comme indiqué ci-dessous. Pour obtenir des détails complets et une définition de l’application full-trust, recherchez le niveau d’autorisation de confiance totale dans les déclarations de capacité d’application.

<Capabilities>
  <rescap:Capability Name="runFullTrust"/>
</Capabilities>

Renseigner les éléments au niveau de l’application

Renseignez ce modèle avec des informations décrivant votre application.

Élément d’application

Pour les applications de bureau pour lesquelles vous créez un package, configurez l’élément Application comme suit :

<Applications>
  <Application Id="MyApp" Executable="MyApp.exe"
		 uap10:RuntimeBehavior="packagedClassicApp"
     uap10:TrustLevel="mediumIL">
   </Application>
</Applications>

Remarque

Si votre package s’installe sur des systèmes antérieurs à Windows 10, version 2004 (10.0 ; Build 19041), puis utilisez l’attribut EntryPoint au lieu de uap10:RuntimeBehavior et uap10:TrustLevel. Pour plus d’informations et des exemples, voir uap10 a été introduit dans Windows 10, version 2004 (10.0 ; Build 19041).

Éléments visuels

Voici un exemple de nœud VisualElements.

<uap:VisualElements
	BackgroundColor="#464646"
	DisplayName="My App"
	Square150x150Logo="images\icon.png"
	Square44x44Logo="images\small_icon.png"
	Description="A useful description" />

(Facultatif) Ajouter des ressources sans plaque basées sur la cible

Les ressources basées sur des cibles sont pour les icônes et les vignettes qui s’affichent dans la barre des tâches Windows, les applications actives, ALT+TAB, l'alignement automatique et le coin inférieur droit des vignettes de démarrage. Vous trouverez davantage de détails ici.

  1. Obtenez les images 44 x 44 correctes, puis copiez-les dans le dossier qui contient vos images (c’est-à-dire Assets).

  2. Pour chaque image 44 x 44, créez une copie dans le même dossier et ajoutez .targetsize-44_altform-unplated au nom de fichier. Vous devez avoir deux copies de chaque icône, chacune nommée d’une manière spécifique. Par exemple, à la fin du processus, votre dossier Assets peut contenir MYAPP_44x44.png et MYAPP_44x44.targetsize-44_altform-unplated.png.

    Remarque

    Dans cet exemple, l’icône nommée MYAPP_44x44.png est celle que vous devez référencer dans l’attribut de logo Square44x44Logo de votre package MSIX.

  3. Dans le fichier manifeste, définissez BackgroundColor pour chaque icône que vous rendez transparente.

  4. Passez à la sous-section suivante pour générer un nouveau fichier d’index de ressource de package.

Générer un fichier d’index de ressource de package (PRI) avec MakePri

Si vous créez des ressources basées sur une cible comme décrit dans la section ci-dessus ou modifiez les actifs visuels de votre application après avoir créé le package, vous devez générer un nouveau fichier PRI.

Selon votre chemin d’installation du SDK, voici où se trouve MakePri.exe sur votre PC Windows :

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

Il n’existe aucune version ARM de cet outil.

  1. Ouvrez une invite de commandes ou une fenêtre PowerShell.

  2. Accédez au dossier racine du package, puis exécutez la commande <path>\makepri.exe createconfig /cf priconfig.xml /dq en-US pour créer un fichier priconfig.xml.

  3. Créez le ou les fichiers resources.pri à l’aide de la commande <path>\makepri.exe new /pr <PHYSICAL_PATH_TO_FOLDER> /cf <PHYSICAL_PATH_TO_FOLDER>\priconfig.xml.

    Par exemple, la commande pour votre application peut ressembler à ceci : <path>\makepri.exe new /pr c:\MYAPP /cf c:\MYAPP\priconfig.xml.

  4. Empaquetez votre application en suivant les instructions de l’étape suivante.

Tester votre application avant l’empaquetage

Vous pouvez déployer votre application non empaquetée et la tester avant de l’empaqueter ou de la signer. Pour cela, exécutez l’applet de commande ci-dessous à partir d’une fenêtre PowerShell. Veillez à passer le fichier manifeste de votre application situé à la racine de votre répertoire de package avec tous les autres composants du package :

Add-AppxPackage –Register AppxManifest.xml

Ceci fait, votre application doit être déployée sur le système et vous pouvez la tester pour vérifier que tout fonctionne avant l’empaquetage. Pour mettre à jour les fichiers .exe ou .dll de votre application, remplacez les fichiers existants dans votre package par les nouveaux, augmentez le numéro de version dans AppxManifest.xml, puis réexécutez la commande ci-dessus.

Créer un package MSIX de vos composants

L’étape suivante consiste à utiliser MakeAppx.exe afin de générer un package MSIX pour votre application. Makeappx.exe est inclus avec le SDK Windows. Si vous avez installé Visual Studio, il est facilement accessible par le biais de l’invite de commandes développeur pour Visual Studio.

Consultez Créer un package ou un bundle MSIX avec l’outil MakeAppx.exe.

Remarque

Une application empaquetée s’exécute toujours en tant qu’utilisateur interactif, et tout lecteur sur lequel vous installez votre application empaquetée doit être formaté en NTFS.