Partager via


Référence CLI pour le développement d'applications Windows

Important

L'interface CLI de développement Windows App est actuellement en préversion publique. Les fonctionnalités et les commandes peuvent changer avant la version finale.

Cette page documente toutes les commandes disponibles pour l’interface CLI winapp.

Options globales

Toutes les commandes prennent en charge ces options globales :

Choix Description
--verbose, -v Activer la sortie détaillée pour la journalisation détaillée
--quiet, -q Supprimer les messages de progression
--help, -h Afficher l’aide de la commande

Répertoire global du cache

WinApp crée un répertoire pour mettre en cache des fichiers qui peuvent être partagés entre plusieurs projets. ($UserProfile/.winapp par défaut).

Pour utiliser un autre emplacement, définissez la variable d’environnement WINAPP_CLI_CACHE_DIRECTORY :

$env:WINAPP_CLI_CACHE_DIRECTORY = "d:\temp\.winapp"

Commandes d’installation

Init

Initialisez un répertoire avec le Kit de développement logiciel (SDK) Windows, Windows App SDK et les ressources requises pour le développement Windows moderne.

winapp init [base-directory] [options]

Arguments :

Argument Description
base-directory Répertoire de base/racine de l’application/espace de travail (par défaut : répertoire actif)

Options :

Choix Description
--config-dir <path> Répertoire pour lire/stocker la configuration (par défaut : répertoire actif)
--setup-sdks Mode d’installation du Kit de développement logiciel (SDK) : stable (par défaut), previewou experimentalnone
--ignore-config, --no-config N’utilisez pas de fichier de configuration pour la gestion des versions
--no-gitignore Ne mettez pas à jour le fichier .gitignore
--use-defaults, --no-prompt Ne pas inviter et utiliser la valeur par défaut de toutes les invites
--config-only Gérer uniquement les opérations de fichier de configuration, ignorer l’installation du package

Résultat :

  • Crée un winapp.yaml fichier de configuration
  • Télécharge les packages du Kit de développement logiciel (SDK) et de Windows App SDK
  • Génère des en-têtes C++/WinRT et des fichiers binaires
  • Crée AppxManifest.xml
  • Configure les outils de génération et active le mode développeur
  • Met à jour .gitignore pour exclure les fichiers générés

Détection automatique de projet .NET :

Lorsqu’un fichier .csproj se trouve dans le répertoire cible, init utilise un flux simplifié spécifique aux .NET :

  • Valide et met à jour le TFM TargetFramework compatible avec Windows (par exemple, net10.0-windows10.0.26100.0)
  • Ajoute Microsoft.WindowsAppSDK et Microsoft.Windows.SDK.BuildTools en tant qu’entrées NuGet PackageReference directement dans le .csproj
  • Génère appxmanifest.xml, des ressources, et un certificat de développement
  • Ne crée pas ou ne télécharge winapp.yaml de projections C++ (utilisation dotnet restore pour les packages NuGet)

Exemples :

# Initialize current directory
winapp init

# Initialize with experimental packages
winapp init --setup-sdks experimental

# Initialize specific directory without prompts
winapp init ./my-project --use-defaults

# Initialize a .NET project (auto-detected from .csproj)
cd my-dotnet-app
winapp init

Conseil / Astuce

Si vous avez exécuté init avec --setup-sdks none et que vous avez ensuite besoin des SDK, réexécutez winapp init --use-defaults --setup-sdks stable. Cela conserve les fichiers existants (manifeste, etc.).

restore

Restaurez des packages et régénérez les fichiers en fonction de la configuration existante winapp.yaml .

winapp restore [options]

Options :

Choix Description
--config-dir <path> Répertoire contenant winapp.yaml (par défaut : répertoire actif)

Résultat :

  • Lit la configuration existante winapp.yaml
  • Téléchargements/mises à jour des packages sdk vers des versions spécifiées
  • Régénère les en-têtes C++/WinRT et les fichiers binaires

Note

Pour les projets .NET initialisés avec winapp init, il n’existe aucun winapp.yaml. Utilisez dotnet restore pour restaurer des packages NuGet.

Exemples :

# Restore from winapp.yaml in current directory
winapp restore

update

Mettez à jour les packages vers leurs dernières versions et mettez à jour le fichier de configuration.

winapp update [options]

Options :

Choix Description
--config-dir <path> Répertoire contenant winapp.yaml (par défaut : répertoire actif)
--setup-sdks Mode d’installation du Kit de développement logiciel (SDK) : stable (par défaut), previewou experimentalnone

Résultat :

  • Lit la configuration existante winapp.yaml
  • Met à jour tous les packages vers leurs dernières versions disponibles
  • Met à jour le fichier avec les winapp.yaml nouveaux numéros de version
  • Régénère les en-têtes C++/WinRT et les fichiers binaires

Exemples :

# Update packages to latest versions
winapp update

# Update including experimental packages
winapp update --setup-sdks experimental

Commandes d’empaquetage

pack

Créez des packages MSIX à partir de répertoires d’applications préparés. Nécessite que appxmanifest.xml fichier soit présent dans le répertoire cible, dans le répertoire actif ou transmis avec l’option --manifest .

winapp pack <input-folder> [options]

Arguments :

Argument Description
input-folder Répertoire contenant les fichiers d’application à empaqueter

Options :

Choix Description
--output <filename> Nom de fichier MSIX de sortie (par défaut : <name>.msix)
--name <name> Nom du package (valeur par défaut : à partir du manifeste)
--manifest <path> Chemin d’accès à AppxManifest.xml (par défaut : détection automatique)
--cert <path> Chemin d’accès au certificat de signature (active la signature automatique)
--cert-password <password> Mot de passe du certificat (par défaut : « mot de passe »)
--generate-cert Générer un nouveau certificat de développement
--install-cert Installer un certificat sur l’ordinateur
--publisher <name> nom de Publisher pour la génération de certificat
--self-contained Paquet Windows App SDK runtime
--skip-pri Ignorer la génération de fichiers PRI
--executable <path> Chemin d’accès à l’exécutable par rapport au dossier d’entrée. Permet de résoudre les espaces réservés $targetnametoken$ dans le manifeste.

Résultat :

  • Valide et traite les fichiers AppxManifest.xml
  • Résout les jetons $placeholder$ dans le manifeste (voir espaces réservés du manifeste)
  • Garantit les dépendances d’infrastructure appropriées
  • Met à jour des manifestes parallèles avec des enregistrements
  • Gère le déploiement autonome de Windows App SDK
  • Signe le paquet si le certificat est fourni

Exemples :

# Package directory with auto-detected manifest
winapp pack ./dist

# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx

# Package with generated and installed certificate and self-contained runtime
winapp pack ./dist --generate-cert --install-cert --self-contained

# Package with explicit executable
winapp pack ./dist --executable MyApp.exe

create-debug-identity

Créez une identité d'application pour le débogage sans empaquetage MSIX complet à l’aide de la localisation externe/l’empaquetage épars.

winapp create-debug-identity [entrypoint] [options]

Arguments :

Argument Description
entrypoint Chemin d’accès à l’exécutable (.exe) ou script qui a besoin d’une identité

Options :

Choix Description
--manifest <path> Chemin d’accès à AppxManifest.xml (valeur par défaut : ./appxmanifest.xml)
--no-install N’installez pas le package après la création
--keep-identity Conservez l’identité du manifeste as-is, sans ajouter .debug le nom du package et l’ID d’application

Résultat :

  • Modifie le manifeste parallèle de l'exécutable
  • Enregistre le package clairsemé pour l'identité
  • Active le débogage des API nécessitant des identités

Exemples :

# Add identity to executable using local manifest
winapp create-debug-identity ./bin/MyApp.exe

# Add identity with custom manifest location
winapp create-debug-identity ./dist/app.exe --manifest ./custom-manifest.xml

Commandes de manifeste

générer un manifeste

Générez AppxManifest.xml à partir de modèles.

winapp manifest generate [directory] [options]

Arguments :

Argument Description
directory Répertoire dans lequel générer le manifeste (par défaut : répertoire actif)

Options :

Choix Description
--package-name <name> Nom du package (par défaut : nom du dossier)
--publisher-name <name> Publisher CN (valeur par défaut : CN=<current user>)
--version <version> Version (valeur par défaut : « 1.0.0.0 »)
--description <text> Description (valeur par défaut : « Mon application »)
--entrypoint <path> Exécutable ou script du point d’entrée
--template <type> Type de modèle : packaged (par défaut) ou sparse
--logo-path <path> Chemin d’accès au fichier image du logo
--if-exists <Error\|Overwrite\|Skip> Comportement si le fichier existe déjà (valeur par défaut : Erreur)

Modèles:

Espaces réservés de manifeste

Les manifestes générés utilisent des jetons $placeholder$ (délimités par un signe dollar) qui sont résolus automatiquement au moment de l’empaquetage :

Espace réservé Résolu à Exemple
$targetnametoken$ Nom exécutable sans extension Executable="$targetnametoken$.exe" devient Executable="MyApp.exe"
$targetentrypoint$ Windows.FullTrustApplication Toujours résolu automatiquement

Comment les espaces réservés sont gérés :

  • winapp pack résout $targetnametoken$ à l’aide de l’option --executable ou en détectant automatiquement le single .exe dans le dossier d’entrée.
  • winapp create-debug-identity résout $targetnametoken$ à partir de l’argument de point d’entrée lorsqu’il est fourni.
  • winapp manifest generate --executable extrait les métadonnées de l’exécutable, mais conserve $targetnametoken$.exe le manifeste pour une résolution ultérieure.

Conseil / Astuce

Garder $targetnametoken$ dans votre manifeste enregistré évite de coder en dur les noms des exécutables et fonctionne avec les builds winapp pack et Visual Studio.

Exemples :

# Generate standard manifest interactively
winapp manifest generate

# Generate with all options specified
winapp manifest generate ./src --package-name MyApp --publisher-name "CN=My Company" --if-exists overwrite

manifeste mettre à jour les assets

Générez toutes les ressources d’image MSIX requises à partir d’une seule image source.

winapp manifest update-assets <image-path> [options]

Arguments :

Argument Description
image-path Chemin d’accès au fichier image source (PNG, JPG, GIF, etc.)

Options :

Choix Description
--manifest <path> Chemin d’accès au fichier AppxManifest.xml (valeur par défaut : rechercher dans le répertoire actif)

Prend une image source unique et génère automatiquement toutes les 12 ressources d’image MSIX requises aux dimensions correctes. Les ressources sont enregistrées dans le répertoire Assets par rapport à l’emplacement du manifeste.

Exemples :

# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png

# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/appxmanifest.xml

Commandes de certificat et de signature

Générer un certificat

Générez des certificats de développement pour la signature de paquet.

winapp cert generate [options]

Options :

Choix Description
--manifest <appxmanifest.xml> Extraire des informations de publisher de appxmanifest.xml
--publisher <name> nom de l'éditeur pour le certificat
--output <path> Chemin d’accès du fichier de certificat de sortie
--password <password> Mot de passe du certificat (par défaut : « mot de passe »)
--valid-days <days> Nombre de jours pendant lesquels le certificat est valide (par défaut : 365)
--install Installer le certificat dans le magasin d’ordinateurs local après la génération
--if-exists <Error\|Overwrite\|Skip> Comportement si le fichier de certificat existe déjà (valeur par défaut : Erreur)

Installation du certificat

Installez le certificat dans le magasin de certificats de l’ordinateur.

winapp cert install <cert-path>

Arguments :

Argument Description
cert-path Chemin d’accès au fichier de certificat à installer

Exemples :

# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx

# Install certificate to machine
winapp cert install ./mycert.pfx

Signe

Signer des packages MSIX et des exécutables avec des certificats.

winapp sign <file-path> [options]

Arguments :

Argument Description
file-path Chemin d’accès au package MSIX ou exécutable à signer

Options :

Choix Description
--cert <path> Chemin d’accès au certificat de signature
--cert-password <password> Mot de passe du certificat (par défaut : « mot de passe »)

Exemples :

# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx

# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword

Commandes utilitaires

Outil

Accédez directement aux outils du Kit de Développement Logiciel (SDK) Windows. Utilise les outils disponibles dans Microsoft.Windows.SDK.BuildTools.

winapp tool <tool-name> [tool-arguments]

Outils disponibles :

  • makeappx - Créer et manipuler des packages d’application
  • signtool - Signer des fichiers et vérifier les signatures
  • mt - Outil manifeste pour les assemblages côte-à-côte
  • Et d’autres outils du Kit de développement logiciel (SDK) Windows à partir de Microsoft.Windows.SDK.BuildTools

Exemples :

# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix

store

Exécutez une commande CLI développeur du Microsoft Store. Cette commande télécharge l’interface CLI du développeur du Microsoft Store si elle n’est pas déjà téléchargée. En savoir plus sur l’interface CLI du développeur du Microsoft Store.

winapp store [args...]

Arguments :

Argument Description
args... Arguments à passer directement à la ligne de commande msstore CLI

Exemples :

# List all apps in your Microsoft Partner Center account
winapp store app list

# Publish a package to the Microsoft Store
winapp store publish ./myapp.msix --appId <your-app-id>

get-winapp-path

Obtenir les chemins d’accès aux composants du Kit de développement logiciel (SDK) Windows installés.

winapp get-winapp-path [options]

Retourne les chemins d’accès à l'espace de travail .winapp, aux répertoires d’installation de paquets et aux emplacements d’en-tête générés.


Commandes Node.js / Electron

Ces commandes sont disponibles uniquement dans le package NPM.

node create-addon

Générez des modèles de complément C++ ou C# natifs avec le Kit de développement logiciel (SDK) Windows et l’intégration Windows App SDK.

npx winapp node create-addon [options]

Options :

Choix Description
--name <name> Nom du module complémentaire (valeur par défaut : « nativeWindowsAddon »)
--template Sélectionner le type de module complémentaire : cs ou cpp (par défaut : cpp)
--verbose Activer la sortie détaillée

Résultat :

  • Crée un répertoire d'extension avec des fichiers de modèle
  • Génère des fichiers binding.gyp et des modules complémentaires avec des exemples de l'SDK Windows
  • Installe les dépendances npm requises
  • Ajoute un script de génération à package.json

Exemples :

# Generate addon with default name
npx winapp node create-addon

# Generate custom named C# addon
npx winapp node create-addon --name myWindowsAddon --template cs

node add-electron-debug-identity

Ajoutez l'identité de l'application au processus de développement Electron à l'aide d'un packaging éparse. Nécessite un appxmanifest.xml (créez-en un avec winapp init ou winapp manifest generate).

Important

Il existe un problème connu lié à l’empaquetage d’applications Electron éparses qui provoquent le blocage de l’application au démarrage ou non du rendu du contenu web. Le problème a été résolu dans Windows, mais n’a pas encore été propagé à tous les appareils. Vous pouvez désactiver le bac à sable dans votre application Electron avec l’indicateur --no-sandbox comme solution de contournement. Ce problème n’affecte pas l’empaquetage MSIX complet.

Pour supprimer l'identité de débogage d'Electron, utilisez winapp node clear-electron-debug-identity.

npx winapp node add-electron-debug-identity [options]

Options :

Choix Description
--manifest <path> Chemin d’accès à un appxmanifest.xml personnalisé (valeur par défaut : appxmanifest.xml dans le répertoire actif)
--no-install N'installez pas ou ne modifiez pas les dépendances ; ne configurez que l'identité de débogage d'Electron
--keep-identity Maintenez l’identité du manifeste tel quel, sans ajouter .debug.
--verbose Activer la sortie détaillée

Exemples :

# Add identity to Electron development process
npx winapp node add-electron-debug-identity

# Use a custom manifest file
npx winapp node add-electron-debug-identity --manifest ./custom/appxmanifest.xml

node effacer-Électron-débogage-identité

Supprimez l’identité du package du processus de débogage Electron en restaurant le electron.exe d’origine de la sauvegarde.

npx winapp node clear-electron-debug-identity [options]

Options :

Choix Description
--verbose Activer la sortie détaillée

Exemples :

# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity