msstore-cli

Par github · awesome-copilot

Microsoft Store Developer CLI (msstore) pour la publication d'applications Windows sur le Microsoft Store. À utiliser lorsqu'on demande de configurer les informations d'identification Store, lister les applications Store, vérifier l'état des soumissions, publier des soumissions, gérer les vols de packages, configurer le CI/CD pour la publication Store, ou intégrer avec Partner Center. Prend en charge les applications Windows App SDK/WinUI, UWP, .NET MAUI, Flutter, Electron, React Native et PWA.

npx skills add https://github.com/github/awesome-copilot --skill msstore-cli

Microsoft Store Developer CLI (msstore)

Microsoft Store Developer CLI (msstore) est une interface de ligne de commande multiplateforme pour publier et gérer des applications dans le Microsoft Store. Elle s'intègre avec les API Partner Center et supporte les workflows de publication automatisés pour différents types d'applications.

Quand utiliser cette compétence

Utilisez cette compétence quand vous avez besoin de :

  • Configurer les identifiants du Store pour accéder à l'API
  • Lister les applications dans votre compte Store
  • Vérifier l'état d'une soumission
  • Publier des soumissions dans le Store
  • Empaqueter des applications pour la soumission au Store
  • Initialiser des projets pour la publication au Store
  • Gérer les package flights (tests bêta)
  • Mettre en place des pipelines CI/CD pour la publication automatisée au Store
  • Gérer les déploiements progressifs de soumissions
  • Mettre à jour les métadonnées de soumission par programmation

Prérequis

  • Windows 10+, macOS ou Linux
  • .NET 9 Desktop Runtime (Windows) ou .NET 9 Runtime (macOS/Linux)
  • Compte Partner Center avec les autorisations appropriées
  • Inscription d'application Azure AD avec accès à l'API Partner Center
  • CLI msstore installée par l'une de ces méthodes :

Configuration de Partner Center

Avant d'utiliser msstore, vous devez créer une application Azure AD avec accès à Partner Center :

  1. Allez à Partner Center
  2. Naviguez vers Paramètres du compte > Gestion des utilisateurs > Applications Azure AD
  3. Créez une nouvelle application et notez l'ID de locataire, l'ID client et le Secret client
  4. Accordez à l'application les autorisations appropriées (rôle Manager ou Developer)

Référence des commandes principales

info - Afficher la configuration

Affiche la configuration actuelle des identifiants.

msstore info

Options :

Option Description
-v, --verbose Afficher une sortie détaillée

reconfigure - Configurer les identifiants

Configurer ou mettre à jour les identifiants de l'API Microsoft Store.

msstore reconfigure [options]

Options :

Option Description
-t, --tenantId ID de locataire Azure AD
-s, --sellerId ID vendeur Partner Center
-c, --clientId ID client de l'application Azure AD
-cs, --clientSecret Secret client pour l'authentification
-ct, --certificateThumbprint Empreinte du certificat (alternative au secret client)
-cfp, --certificateFilePath Chemin du fichier certificat (alternative au secret client)
-cp, --certificatePassword Mot de passe du certificat
--reset Réinitialiser les identifiants sans reconfiguration complète

Exemples :

# Configurer avec secret client
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET

# Configurer avec certificat
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --certificateFilePath ./cert.pfx --certificatePassword MyPassword

settings - Paramètres CLI

Modifier les paramètres de Microsoft Store Developer CLI.

msstore settings [options]

Options :

Option Description
-t, --enableTelemetry Activer (true) ou désactiver (false) la télémétrie

Définir le nom d'affichage de l'éditeur

msstore settings setpdn <publisherDisplayName>

Définit le nom d'affichage par défaut de l'éditeur pour la commande init.

apps - Gestion des applications

Lister et récupérer les informations des applications.

Lister les applications

msstore apps list

Liste toutes les applications dans votre compte Partner Center.

Obtenir les détails d'une application

msstore apps get <productId>

Arguments :

Argument Description
productId L'ID de produit Store (ex. 9NBLGGH4R315)

Exemple :

# Obtenir les détails d'une application spécifique
msstore apps get 9NBLGGH4R315

submission - Gestion des soumissions

Gérer les soumissions au Store.

Sous-commande Description
status Obtenir l'état de la soumission
get Obtenir les métadonnées de soumission et les informations de package
getListingAssets Obtenir les ressources de listage d'une soumission
updateMetadata Mettre à jour les métadonnées de soumission
poll Interroger l'état de la soumission jusqu'à completion
publish Publier une soumission
delete Supprimer une soumission

Obtenir l'état de la soumission

msstore submission status <productId>

Obtenir les détails de la soumission

msstore submission get <productId>

Mettre à jour les métadonnées

msstore submission updateMetadata <productId> <metadata>

<metadata> est une chaîne JSON avec les métadonnées mises à jour. Comme JSON contient des caractères interprétés par le shell (guillemets, accolades, etc.), vous devez citer et/ou échapper la valeur de manière appropriée :

  • Bash/Zsh : Enveloppez le JSON entre guillemets simples pour que le shell le passe littéralement.
    msstore submission updateMetadata 9NBLGGH4R315 '{"description":"My updated app"}'
  • PowerShell : Utilisez des guillemets simples (ou échappez les guillemets doubles dans une chaîne entre guillemets doubles).
    msstore submission updateMetadata 9NBLGGH4R315 '{"description":"My updated app"}'
  • cmd.exe : Échappez chaque guillemet double interne avec une barre oblique inverse.
    msstore submission updateMetadata 9NBLGGH4R315 "{\"description\":\"My updated app\"}"

Conseil : Pour les métadonnées complexes ou multi-lignes, enregistrez le JSON dans un fichier et passez son contenu à la place pour éviter les problèmes de citation :

msstore submission updateMetadata 9NBLGGH4R315 "$(cat metadata.json)"

Options :

Option Description
-s, --skipInitialPolling Ignorer l'interrogation d'état initiale

Publier une soumission

msstore submission publish <productId>

Interroger une soumission

msstore submission poll <productId>

Interroge jusqu'à ce que l'état de la soumission soit PUBLISHED ou FAILED.

Supprimer une soumission

msstore submission delete <productId>

Options :

Option Description
--no-confirm Ignorer la demande de confirmation

init - Initialiser le projet pour le Store

Initialiser un projet pour la publication sur Microsoft Store. Détecte automatiquement le type de projet et configure l'identité du Store.

msstore init <pathOrUrl> [options]

Arguments :

Argument Description
pathOrUrl Chemin du répertoire du projet ou URL PWA

Options :

Option Description
-n, --publisherDisplayName Nom d'affichage de l'éditeur
--package Empaqueter également le projet
--publish Empaqueter et publier (implique --package)
-f, --flightId Publier vers un flight spécifique
-prp, --packageRolloutPercentage Pourcentage de déploiement progressif (0-100)
-a, --arch Architecture(s) : x86, x64, arm64
-o, --output Répertoire de sortie pour les packages
-ver, --version Version à utiliser lors de la construction

Types de projets supportés :

  • Windows App SDK / WinUI 3
  • UWP
  • .NET MAUI
  • Flutter
  • Electron
  • React Native for Desktop
  • PWA (Progressive Web Apps)

Exemples :

# Initialiser un projet WinUI
msstore init ./my-winui-app

# Initialiser une PWA
msstore init https://contoso.com --output ./pwa-package

# Initialiser et publier
msstore init ./my-app --publish

package - Empaqueter pour le Store

Empaqueter une application pour la soumission à Microsoft Store.

msstore package <pathOrUrl> [options]

Arguments :

Argument Description
pathOrUrl Chemin du répertoire du projet ou URL PWA

Options :

Option Description
-o, --output Répertoire de sortie pour le package
-a, --arch Architecture(s) : x86, x64, arm64
-ver, --version Version pour le package

Exemples :

# Empaqueter pour l'architecture par défaut
msstore package ./my-app

# Empaqueter pour plusieurs architectures
msstore package ./my-app --arch x64,arm64 --output ./packages

# Empaqueter avec une version spécifique
msstore package ./my-app --version 1.2.3.0

publish - Publier dans le Store

Publier une application dans le Microsoft Store.

msstore publish <pathOrUrl> [options]

Arguments :

Argument Description
pathOrUrl Chemin du répertoire du projet ou URL PWA

Options :

Option Description
-i, --inputFile Chemin vers un fichier .msix ou .msixupload existant
-id, --appId ID de l'application (si non initialisée)
-nc, --noCommit Conserver la soumission en état de brouillon
-f, --flightId Publier vers un flight spécifique
-prp, --packageRolloutPercentage Pourcentage de déploiement progressif (0-100)

Exemples :

# Publier un projet
msstore publish ./my-app

# Publier un package existant
msstore publish ./my-app --inputFile ./packages/MyApp.msixupload

# Publier en tant que brouillon
msstore publish ./my-app --noCommit

# Publier avec déploiement progressif
msstore publish ./my-app --packageRolloutPercentage 10

flights - Gestion des package flights

Gérer les package flights (groupes de tests bêta).

Sous-commande Description
list Lister tous les flights d'une application
get Obtenir les détails du flight
delete Supprimer un flight
create Créer un nouveau flight
submission Gérer les soumissions de flight

Lister les flights

msstore flights list <productId>

Obtenir les détails d'un flight

msstore flights get <productId> <flightId>

Créer un flight

msstore flights create <productId> <friendlyName> --group-ids <group-ids>

Options :

Option Description
-g, --group-ids IDs de groupes de flight (séparés par des virgules)
-r, --rank-higher-than ID du flight à classer plus haut que

Supprimer un flight

msstore flights delete <productId> <flightId>

Soumissions de flight

# Obtenir la soumission de flight
msstore flights submission get <productId> <flightId>

# Publier la soumission de flight
msstore flights submission publish <productId> <flightId>

# Vérifier l'état de la soumission de flight
msstore flights submission status <productId> <flightId>

# Interroger la soumission de flight
msstore flights submission poll <productId> <flightId>

# Supprimer la soumission de flight
msstore flights submission delete <productId> <flightId>

Gestion du déploiement des flights

# Obtenir l'état du déploiement
msstore flights submission rollout get <productId> <flightId>

# Mettre à jour le pourcentage de déploiement
msstore flights submission rollout update <productId> <flightId> <percentage>

# Arrêter le déploiement
msstore flights submission rollout halt <productId> <flightId>

# Finaliser le déploiement (100%)
msstore flights submission rollout finalize <productId> <flightId>

Workflows courants

Workflow 1 : Configuration initiale du Store

# 1. Installer la CLI
winget install "Microsoft Store Developer CLI"

# 2. Configurer les identifiants (obtenez-les depuis Partner Center)
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET

# 3. Vérifier la configuration
msstore info

# 4. Lister vos applications pour confirmer l'accès
msstore apps list

Workflow 2 : Initialiser et publier une nouvelle application

# 1. Naviguer vers le projet
cd my-winui-app

# 2. Initialiser pour le Store (crée/met à jour l'identité de l'application)
msstore init .

# 3. Empaqueter l'application
msstore package . --arch x64,arm64

# 4. Publier dans le Store
msstore publish .

# 5. Vérifier l'état de la soumission
msstore submission status <productId>

Workflow 3 : Mettre à jour une application existante

# 1. Construire votre application mise à jour
dotnet publish -c Release

# 2. Empaqueter et publier
msstore publish ./my-app

# Ou publier à partir d'un package existant
msstore publish ./my-app --inputFile ./artifacts/MyApp.msixupload

Workflow 4 : Déploiement progressif

# 1. Publier avec un pourcentage de déploiement initial
msstore publish ./my-app --packageRolloutPercentage 10

# 2. Surveiller et augmenter le déploiement
msstore submission poll <productId>

# 3. (Après validation) Finaliser à 100%
# Cela se fait via Partner Center ou mise à jour de soumission

Workflow 5 : Tests bêta avec flights

# 1. Créer d'abord un groupe de flight dans Partner Center
# Puis créer un flight
msstore flights create <productId> "Beta Testers" --group-ids "group-id-1,group-id-2"

# 2. Publier vers le flight
msstore publish ./my-app --flightId <flightId>

# 3. Vérifier l'état de la soumission du flight
msstore flights submission status <productId> <flightId>

# 4. Après les tests, publier en production
msstore publish ./my-app

Workflow 6 : Intégration de pipeline CI/CD

# Exemple GitHub Actions
name: Publish to Store

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '9.0.x'

      - name: Install msstore CLI
        run: winget install "Microsoft Store Developer CLI" --accept-package-agreements --accept-source-agreements

      - name: Configure Store credentials
        run: |
          msstore reconfigure --tenantId ${{ secrets.TENANT_ID }} --sellerId ${{ secrets.SELLER_ID }} --clientId ${{ secrets.CLIENT_ID }} --clientSecret ${{ secrets.CLIENT_SECRET }}

      - name: Build application
        run: dotnet publish -c Release

      - name: Publish to Store
        run: msstore publish ./src/MyApp

Intégration avec winapp CLI

La CLI winapp (v0.2.0+) s'intègre à msstore via la sous-commande winapp store :

# Ces commandes sont équivalentes :
msstore reconfigure --tenantId xxx --clientId xxx --clientSecret xxx
winapp store reconfigure --tenantId xxx --clientId xxx --clientSecret xxx

# Lister les applications
msstore apps list
winapp store apps list

# Publier
msstore publish ./my-app
winapp store publish ./my-app

Utilisez winapp store quand vous voulez une expérience CLI unifiée pour l'empaquetage et la publication.

Dépannage

Problème Solution
Échec de l'authentification Vérifiez les identifiants avec msstore info ; réexécutez msstore reconfigure
Application non trouvée Assurez-vous que l'ID de produit est correct ; exécutez msstore apps list pour vérifier
Autorisations insuffisantes Vérifiez le rôle de l'application Azure AD dans Partner Center (nécessite Manager ou Developer)
Échec de la validation du package Assurez-vous que le package répond aux exigences du Store ; vérifiez Partner Center pour les détails
Soumission bloquée Exécutez msstore submission poll <productId> pour vérifier l'état
Flight non trouvé Vérifiez l'ID du flight avec msstore flights list <productId>
Pourcentage de déploiement invalide La valeur doit être comprise entre 0 et 100
Échec de l'initialisation pour PWA Assurez-vous que l'URL est publiquement accessible et dispose d'un manifest d'application web valide

Variables d'environnement

La CLI supporte les variables d'environnement pour les identifiants :

Variable Description
MSSTORE_TENANT_ID ID de locataire Azure AD
MSSTORE_SELLER_ID ID vendeur Partner Center
MSSTORE_CLIENT_ID ID client de l'application Azure AD
MSSTORE_CLIENT_SECRET Secret client

Références

Skills similaires