Commands

Installation

Step 1: Install .NET Windows Runtime

If you haven't done so already, install the latest version of the .NET 8 Desktop Runtime. This is a requirement to run the Microsoft Store Developer CLI.

The easiest way to install it is to use winget:

winget install Microsoft.DotNet.DesktopRuntime.8

Step 2: Install the Microsoft Store Developer CLI on Windows

You can download the Microsoft Store Developer CLI from the Microsoft Store. Alternatively, you can use winget:

winget install "Microsoft Store Developer CLI"

Step 1: Install .NET macOS Runtime

If you haven't done so already, install the latest version of the .NET 8 Runtime. This is a requirement to run the Microsoft Store Developer CLI.

Step 2: Install the Microsoft Store Developer CLI on macOS

You can download the macOS .tar.gz for your specific architecture (x64 or Arm64) from the Microsoft Store Developer CLI releases page. Once downloaded, extract the archive and put it in your PATH, however you want to do that, for example:

mkdir MSStoreCLI
curl https://github.com/microsoft/msstore-cli/releases/latest/download/MSStoreCLI-osx-x64.tar.gz -o MSStoreCLI-osx-x64.tar.gz
tar -xvf MSStoreCLI-osx-x64.tar.gz -C ./MSStoreCLI
sudo cp -R MSStoreCLI/. /usr/local/bin

Alternatively, you can use brew:

brew install microsoft/msstore-cli/msstore-cli

Step 1: Install .NET Linux Runtime

If you haven't done so already, install the latest version of the .NET 8 Runtime. This is a requirement to run the Microsoft Store Developer CLI.

Step 2: Install the Microsoft Store Developer CLI on Linux

You can download the Linux .tar.gz for your specific architecture (x64 or Arm64) from the Microsoft Store Developer CLI releases page. Once downloaded, extract the archive and put it in your PATH, however you want to do that, for example:

mkdir MSStoreCLI
wget https://github.com/microsoft/msstore-cli/releases/latest/download/MSStoreCLI-linux-x64.tar.gz
tar -xvf MSStoreCLI-linux-x64.tar.gz -C ./MSStoreCLI
sudo cp -R MSStoreCLI/. /usr/local/bin

Alternatively, you can use brew:

brew install microsoft/msstore-cli/msstore-cli

Info Command

Print existing configuration.

Info Command - Usage

msstore info

Info Command - Options

Option Description
-v, --verbose Print verbose output.

Reconfigure Command

Re-configure the Microsoft Store Developer CLI. You can provide either a Client Secret or a Certificate. Certificates can be provided either through its Thumbprint or by providing a file path (with or without a password).

Reconfigure - Usage

msstore reconfigure

Reconfigure - Options

Option Description
-t, --tenantId Specify the tenant Id that should be used.
-s, --sellerId Specify the seller Id that should be used.
-c, --clientId Specify the client Id that should be used.
-cs, --clientSecret Specify the client Secret that should be used.
-ct, --certificateThumbprint Specify the certificate Thumbprint that should be used.
-cfp, --certificateFilePath Specify the certificate file path that should be used.
-cp, --certificatePassword Specify the certificate password that should be used.
--reset Only reset the credentials, without starting over.

Settings Command

Change settings of the Microsoft Store Developer CLI.

Settings - Usage

msstore settings
Sub-Command Description
setpdn Set the Publisher Display Name property that is used by the init command.

Settings - Options

Option Description
-t, --enableTelemetry Enable (empty/true) or Disable (false) telemetry.
-v, --verbose Print verbose output.

Settings - SetPDN Command Usage

msstore settings setpdn <publisherDisplayName>

Arguments

Argument Description
publisherDisplayName The Publisher Display Name property that will be set globally.

Help

msstore settings setpdn --help

Apps Command

Sub-Command Description
list Lists all the applications in your account.
get Gets the details of a specific application.

Apps - List Command Usage

msstore apps list

List Command - Help

msstore apps list --help

Apps - Get Command Usage

msstore apps get <productId>

Apps - Get Command Arguments

Argument Description
productId The product ID.

Apps - Get Command Help

msstore apps get --help

Submission Command

Sub-Command Description
status Gets the status of a submission.
get Gets the details of a specific submission.
getListingAssets Gets the listing assets of a specific submission.
updateMetadata Updates the metadata of a specific submission.
update Updates the details of a specific submission.
poll Polls the status of a submission.
publish Publishes a specific submission.
delete Deletes a specific submission.

Submission - Status Command Usage

msstore submission status <productId>

Submission - Status Command Arguments

Argument Description
productId The product ID.

Submission - Status Command Help

msstore submission status --help

Submission - Get Command Usage

msstore submission get <productId>

Submission - Get Command Arguments

Argument Description
productId The product ID.

Submission - Get Command Options

Option Description
-m, --module Select which module you want to retrieve ('availability', 'listings' or 'properties').
-l, --language Select which language you want to retrieve. [default: en]

Submission - Get Command Help

msstore submission get --help

Submission - GetListingAssets Command Usage

Retrieves the existing draft listing assets from the store submission.

msstore submission getListingAssets <productId>

Submission - GetListingAssets Command Arguments

Argument Description
productId The product ID.

Submission - GetListingAssets Command Options

Option Description
-l, --language Select which language you want to retrieve. [default: en]

Submission - GetListingAssets Command Help

msstore submission getListingAssets --help

Submission - UpdateMetadata Command Usage

msstore submission updateMetadata <productId> <metadata>

Submission - UpdateMetadata Command Arguments

Argument Description
productId The product ID.
metadata The updated JSON metadata representation.

Submission - UpdateMetadata Command Options

Option Description
-s, --skipInitialPolling Skip the initial polling before executing the action. [default: False]

Submission - UpdateMetadata Command Help

msstore submission updateMetadata --help

Submission - Update Command Usage

msstore submission update <productId> <product>

Submission - Update Command Arguments

Argument Description
productId The product ID.
product The updated JSON product representation.

Submission - Update Command Options

Option Description
-s, --skipInitialPolling Skip the initial polling before executing the action. [default: False]

Submission - Update Command Help

msstore submission update --help

Submission - Poll Command Usage

msstore submission poll <productId>

Submission - Poll Command Arguments

Argument Description
productId The product ID.

Submission - Poll Command Help

msstore submission poll --help

Submission - Publish Command Usage

msstore submission publish <productId>

Submission - Publish Command Arguments

Argument Description
productId The product ID.

Submission - Publish Command Help

msstore submission publish --help

Submission - Delete Command Usage

Deletes the pending submission from the store.

Submission - Delete Command Arguments

Argument Description
productId The product ID.

Submission - Delete Command Options

Option Description
--no-confirm Do not prompt for confirmation. [default: False]

Submission - Delete Command Help

msstore submission delete --help

Init Command

The init command helps you setup your application to publish to the Microsoft Store. It currently supports the following application types:

  • Windows App SDK/WinUI 3
  • UWP
  • .NET MAUI
  • Flutter
  • Electron
  • React Native for Desktop
  • PWA

Init Command - Usage Examples

Init Command - Windows App SDK/WinUI 3

msstore init "C:\path\to\winui3_app"

Init Command - UWP

msstore init "C:\path\to\uwp_app"

Init Command - .NET MAUI

msstore init "C:\path\to\maui_app"

Init Command - Flutter

msstore init "C:\path\to\flutter_app"

Init Command - Electron

msstore init "C:\path\to\electron_app"

Init Command - React Native for Desktop

msstore init "C:\path\to\react_native_app"

Note

For Electron, as well as React Native for Desktop projects, both Npm and Yarn are supported. The presence of the Yarn lock file (yarn.lock) will be used to determine which package manager to use, so make sure that you check in your lock file into your source control system.

Init Command - PWA

msstore init https://contoso.com --output .

Init Command - Arguments

Argument Description
pathOrUrl The root directory path where the project file is, or a public URL that points to a PWA.

Init Command - Options

Option Description
-n, --publisherDisplayName The Publisher Display Name used to configure the application. If provided, avoids an extra APIs call.
--package If supported by the app type, automatically packs the project.
--publish If supported by the app type, automatically publishes the project. Implies '--package true'
-f, --flightId Specifies the Flight Id where the package will be published.
-prp, --packageRolloutPercentage Specifies the rollout percentage of the package. The value must be between 0 and 100.
-a, --arch The architecture(s) to build for. If not provided, the default architecture for the current OS, and project type, will be used. Allowed values: "x86", "x64", "arm64". Only used it used in conjunction with '--package true'.
-o, --output The output directory where the packaged app will be stored. If not provided, the default directory for each different type of app will be used.
-ver, --version The version used when building the app. If not provided, the version from the project file will be used.

Package Command

Helps you package your Microsoft Store Application as an MSIX.

Package Command - Usage Examples

Package Command - Windows App SDK/WinUI 3

msstore package "C:\path\to\winui3_app"

Package Command - UWP

msstore package "C:\path\to\uwp_app"

Package Command - .NET MAUI

msstore package "C:\path\to\maui_app"

Package Command - Flutter

msstore package "C:\path\to\flutter_app"

Package Command - Electron

msstore package "C:\path\to\electron_app"

Package Command - React Native for Desktop

msstore package "C:\path\to\react_native_app"

Package Command - PWA

msstore package "C:\path\to\pwa_app"

Package Command - Arguments

Option Description
pathOrUrl The root directory path where the project file is, or a public URL that points to a PWA.

Package Command - Options

Option Description
-o, --output The output directory where the packaged app will be stored. If not provided, the default directory for each different type of app will be used.
-a, --arch The architecture(s) to build for. If not provided, the default architecture for the current OS, and project type, will be used. Allowed values: "x86", "x64", "arm64".
-ver, --version The version used when building the app. If not provided, the version from the project file will be used.

Publish Command

Publishes your Application to the Microsoft Store.

Publish Command - Usage Examples

Publish Command - Windows App SDK/WinUI 3

msstore publish "C:\path\to\winui3_app"

Publish Command - UWP

msstore publish "C:\path\to\uwp_app"

Publish Command - .NET MAUI

msstore publish "C:\path\to\maui_app"

Publish Command - Flutter

msstore publish "C:\path\to\flutter_app"

Publish Command - Electron

msstore publish "C:\path\to\electron_app"

Publish Command - React Native for Desktop

msstore publish "C:\path\to\react_native_app"

Publish Command - PWA

msstore publish "C:\path\to\pwa_app"

Publish Command - Arguments

Option Description
pathOrUrl The root directory path where the project file is, or a public URL that points to a PWA.

Publish Command - Options

Option Description
-i, --inputDirectory The directory where the '.msix' or '.msixupload' file to be used for the publishing command. If not provided, the cli will try to find the best candidate based on the 'pathOrUrl' argument.
-id, --appId Specifies the Application Id. Only needed if the project has not been initialized before with the 'init' command.
-nc, --noCommit Disables committing the submission, keeping it in draft state.
-f, --flightId Specifies the Flight Id where the package will be published.
-prp, --packageRolloutPercentage Specifies the rollout percentage of the package. The value must be between 0 and 100.

CI/CD Environments

The Microsoft Store Developer CLI (preview) supports running in CI/CD environments. This means that you can use the Microsoft Store Developer CLI (preview) in your CI/CD pipelines to, for example, automatically publish your applications to the Microsoft Store.

The firststep to achieve this it to install the Microsoft Store Developer CLI (preview) on your CI/CD environment. You can find instructions on how to do this here.

After installing the Microsoft Store Developer CLI (preview), you have to configure your environment to be able to run commands. You can do this by running the msstore reconfigure command with the specific parameters that identify your partner center account (TenantId, SellerId, ClientId). You also need to provide either a ClientSecret or a Certificate.

It is very important to hide these credentials, as they will be visible in the logs of your CI/CD pipeline. You can do this by using secrets. Each CI/CD pipeline system have different names for these secrets. For example, Azure DevOps call them Secret Variables, but GitHub Action calls them Encrypted Secrets. Create one secret for each of the parameters (TenantId, SellerId, ClientId, and ClientSecret or a Certificate), and then use the reconfigure command to setup your environment.

For example:

Azure DevOps

- task: UseMSStoreCLI@0
  displayName: Setup Microsoft Store Developer CLI
- script: msstore reconfigure --tenantId $(PARTNER_CENTER_TENANT_ID) --sellerId $(PARTNER_CENTER_SELLER_ID) --clientId $(PARTNER_CENTER_CLIENT_ID) --clientSecret $(PARTNER_CENTER_CLIENT_SECRET)
  displayName: Configure Microsoft Store Developer CLI

GitHub Actions

- name: Setup Microsoft Store Developer CLI
  uses: microsoft/setup-msstore-cli@v1
- name: Configure Microsoft Store Developer CLI
  run: msstore reconfigure --tenantId ${{ secrets.PARTNER_CENTER_TENANT_ID }} --sellerId ${{ secrets.PARTNER_CENTER_SELLER_ID }} --clientId ${{ secrets.PARTNER_CENTER_CLIENT_ID }} --clientSecret ${{ secrets.PARTNER_CENTER_CLIENT_SECRET }}

Once this command is executed, the Microsoft Store Developer CLI (preview) will be configured to use the credentials provided. You can now use the Microsoft Store Developer CLI (preview) in your CI/CD pipeline.