Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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.
Windows developer