Emballage d'un exécutable d'interface en ligne de commande sous forme de MSIX

Ce guide vous guide tout au long de l’empaquetage d’un exécutable de ligne de commande existant en tant que package MSIX pour la distribution via Windows Gestionnaire de package (winget), le Microsoft Store ou la distribution directe.

Prerequisites

  • Exécutable CLI existant (.exe) que vous souhaitez empaqueter
  • Windows 10 version 1809 ou ultérieure

Étapes

1. Organiser votre application CLI

Placez votre exécutable CLI et toutes les dépendances dans un dossier dédié. Ce dossier contient tous les fichiers qui doivent être inclus dans votre package MSIX.

mkdir MyCliPackage
cd MyCliPackage
# Copy your CLI executable and dependencies here

2. Installer winapp CLI

Installez l’interface CLI winapp via Windows Gestionnaire de package ou effectuez une mise à jour vers la dernière version si vous l’avez déjà :

# Install (or update if already installed)
winget install microsoft.winappcli --source winget

3. Générer le package.appxmanifest

Générez un package.appxmanifest de base et des ressources requises pour votre exécutable CLI :

winapp manifest generate --executable .\yourcli.exe

Cette commande crée un Package.appxmanifest fichier dans le répertoire actif avec des valeurs par défaut remplies à partir de votre exécutable.

4. Configurer le manifeste

Éditez le package généré Package.appxmanifest pour le personnaliser. Chaque sous-étape ci-dessous explique ce qui change et pourquoi.

4.1 Ajouter l'espace de noms requis

Ajoutez le namespace uap5 à l’élément Package s’il n’est pas déjà présent. Cela est nécessaire pour l’alias d’exécution à l’étape 4.3 :

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  ...
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap uap5 rescap">

4.2 Configurer l’élément Application

Dans l’élément <uap:VisualElements> , ajoutez AppListEntry="none" pour masquer l’application dans le menu Démarrer. Les outils CLI sont appelés à partir du terminal. Ils n’ont donc pas besoin d’une entrée de menu Démarrer :

<uap:VisualElements
    DisplayName="YourApp"
    Description="My Application"
    BackgroundColor="transparent"
    Square150x150Logo="Assets\Square150x150Logo.png"
    Square44x44Logo="Assets\Square44x44Logo.png"
    AppListEntry="none">
</uap:VisualElements>

4.3 Ajouter une extension d’alias d’exécution

Ajoutez un alias d’exécution pour que les utilisateurs puissent exécuter votre interface CLI par nom à partir de n’importe quelle fenêtre de terminal. Ajoutez-le dans l’élément <Application> (après <uap:VisualElements>) :

<Extensions>
  <uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias>
      <uap5:ExecutionAlias Alias="yourcli.exe" />
    </uap5:AppExecutionAlias>
  </uap5:Extension>
</Extensions>

Remplacez yourcli.exe par le nom de commande souhaité pour votre interface CLI. Une fois qu’un utilisateur installe MSIX, il pourra appeler votre interface CLI avec cette commande.

4.4 Mettre à jour les métadonnées d’application

Mettez à jour les champs suivants pour qu’ils correspondent à votre application CLI.

Important

La valeur Publisher dans votre manifeste doit correspondre à l'éditeur dans votre certificat de signature. Si vous générez un certificat ultérieurement (étape 5), il utilisera l’éditeur indiqué dans votre manifeste. Si vous modifiez l’éditeur après avoir généré un certificat, vous devez régénérer le certificat pour qu’il corresponde.

  • Identité : Mettre à jour Name, Publisher et Version

    <Identity
      Name="YourCompany.YourCLI"
      Publisher="CN=Your Company"
      Version="1.0.0.0" />
    
  • Propriétés : Mettre à jour le nom d’affichage, le nom d’affichage de l’éditeur et la description

    <Properties>
      <DisplayName>Your CLI Tool</DisplayName>
      <PublisherDisplayName>Your Company</PublisherDisplayName>
      <Description>Description of your CLI tool</Description>
      <Logo>Assets\StoreLogo.png</Logo>
    </Properties>
    
  • VisualElements : Mettre à jour le nom d'affichage et les références d'actifs

    <uap:VisualElements
      DisplayName="Your CLI Tool"
      Description="Description of your CLI tool"
      BackgroundColor="transparent"
      Square150x150Logo="Assets\Square150x150Logo.png"
      Square44x44Logo="Assets\Square44x44Logo.png">
      <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" />
      <uap:SplashScreen Image="Assets\SplashScreen.png" />
    </uap:VisualElements>
    

Remarque : vous devez également ajouter des ressources d’icône appropriées à un Assets dossier de votre répertoire de package. Bien que l’application n’apparaisse pas dans le menu Démarrer, les icônes sont toujours requises pour la soumission du Windows Store et peuvent apparaître dans d’autres contextes.

5. (Facultatif) Générer un certificat de développement

Pour les tests locaux et la distribution en dehors du Microsoft Store, vous devez signer votre package MSIX avec un certificat.

Générez un certificat de développement. Conservez-le en dehors de votre dossier CLI pour éviter de l’inclure accidentellement dans le package :

# Navigate to a location outside your CLI folder (e.g., your home directory)
cd ~
winapp cert generate

Cela crée un devcert.pfx fichier dans votre répertoire de base (par exemple, C:\Users\yourname\devcert.pfx).

Pour approuver ce certificat sur votre ordinateur de développement, installez-le (nécessite des privilèges d’administrateur) :

# Run PowerShell as Administrator
winapp cert install ~\devcert.pfx

6. Empaqueter votre interface CLI

Vous êtes maintenant prêt à créer le package MSIX :

# Navigate back outside of your project folder
# Package with dev certificate (for local testing/distribution)
winapp pack .\path\to\MyCliPackage --cert .\path\to\devcert.pfx

Cela crée un .msix fichier dans le répertoire actif.

7. Installer et vérifier

Installez le package MSIX pour vérifier que tout fonctionne :

Add-AppxPackage .\MyCliPackage.msix

Si vous avez ajouté un alias d’exécution à l’étape 4.3, vous pouvez maintenant exécuter votre interface CLI à partir de n’importe quel terminal :

yourcli --help

Pour désinstaller ultérieurement :

Get-AppxPackage *YourCLI* | Remove-AppxPackage

Conseils

  1. Une fois que vous êtes prêt à être distribué, vous pouvez signer votre MSIX avec un certificat de signature de code auprès d’une autorité de certification afin que vos utilisateurs n’aient pas besoin d’installer un certificat auto-signé
  2. Le Microsoft Store signera le MSIX pour vous, sans avoir à le signer vous-même avant la soumission.
  3. Vous devrez peut-être créer plusieurs packages MSIX, un pour chaque architecture prise en charge (x64, Arm64)

Prochaines étapes