msstore-cli

msstore-cli

热门

Microsoft Store 开发者命令行工具(msstore),用于将 Windows 应用程序发布到 Microsoft Store。当需要配置商店凭据、查看商店应用列表、检查提交状态、发布应用提交、管理 package flight(测试分发包)、配置商店发布的 CI/CD 流水线或对接 Partner Center 时使用。支持 Windows App SDK/WinUI、UWP、.NET MAUI、Flutter、Electron、React Native 及 PWA 应用。

3.7万Star
4572Fork
更新于 2026/7/14
SKILL.md
只读
名称
msstore-cli
描述

Microsoft Store 开发者命令行工具(msstore),用于将 Windows 应用程序发布到 Microsoft Store。当需要配置商店凭据、查看商店应用列表、检查提交状态、发布应用提交、管理 package flight(测试分发包)、配置商店发布的 CI/CD 流水线或对接 Partner Center 时使用。支持 Windows App SDK/WinUI、UWP、.NET MAUI、Flutter、Electron、React Native 及 PWA 应用。

Microsoft Store Developer CLI (msstore)

Microsoft Store 开发者命令行工具(msstore)是一款跨平台 CLI,用于在 Microsoft Store 中发布和管理应用程序。它集成了 Partner Center API,支持为各类应用类型搭建自动化发布工作流。

何时使用此 Skill

在需要执行以下操作时使用此 Skill:

  • 配置用于 API 访问的商店凭据
  • 列出商店账号下的应用程序
  • 查看应用提交的状态
  • 将应用提交发布到商店
  • 打包应用程序以供商店提交
  • 初始化项目以进行商店发布
  • 管理 package flight(贝塔测试 / 灰度测试组)
  • 配置用于自动化商店发布的 CI/CD 流水线
  • 管理应用提交的渐进式发布(灰度分发)
  • 以编程方式更新提交的元数据

前置要求

  • Windows 10+、macOS 或 Linux
  • .NET 9 Desktop Runtime(Windows)或 .NET 9 Runtime(macOS/Linux)
  • 拥有相应权限的 Partner Center 账号
  • 具备 Partner Center API 访问权限的 Azure AD 应用注册
  • 已通过以下任一方式安装 msstore CLI:
    • Microsoft Store下载
    • WinGetwinget install "Microsoft Store Developer CLI"
    • 手动下载:从 GitHub Releases 获取

Partner Center 配置

在使用 msstore 之前,你需要创建一个具备 Partner Center 访问权限的 Azure AD 应用程序:

  1. 前往 Partner Center
  2. 导航至 账户设置 > 用户管理 > Azure AD 应用程序
  3. 创建一个新应用程序,并记录 Tenant ID(租户 ID)、Client ID(客户端 ID)和 Client Secret(客户端密钥)
  4. 为该应用程序授予适当的权限(管理者或开发者角色)

核心命令参考

info - 打印配置信息

显示当前的凭据配置。

msstore info

参数选项:

选项 说明
-v, --verbose 打印详细输出日志

reconfigure - 配置凭据

配置或更新 Microsoft Store API 凭据。

msstore reconfigure [options]

参数选项:

选项 说明
-t, --tenantId Azure AD 租户 ID(Tenant ID)
-s, --sellerId Partner Center 卖家 ID(Seller ID)
-c, --clientId Azure AD 应用程序客户端 ID(Client ID)
-cs, --clientSecret 用于身份验证的客户端密钥(Client Secret)
-ct, --certificateThumbprint 证书指纹(客户端密钥的替代方案)
-cfp, --certificateFilePath 证书文件路径(客户端密钥的替代方案)
-cp, --certificatePassword 证书密码
--reset 重置凭据(无需重新完整配置)

示例:

# 使用 Client Secret 进行配置
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET

# 使用证书进行配置
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --certificateFilePath ./cert.pfx --certificatePassword MyPassword

settings - CLI 设置

修改 Microsoft Store Developer CLI 的配置设置。

msstore settings [options]

参数选项:

选项 说明
-t, --enableTelemetry 开启 (true) 或关闭 (false) 遥测数据收集
设置发布者显示名称
msstore settings setpdn <publisherDisplayName>

init 命令设置默认的发布者显示名称(Publisher Display Name)。

apps - 应用管理

列出并获取应用程序信息。

列出应用
msstore apps list

列出 Partner Center 账号下的所有应用程序。

获取应用详情
msstore apps get <productId>

参数:

参数 说明
productId 商店产品 ID(例如 9NBLGGH4R315

示例:

# 获取指定应用的详细信息
msstore apps get 9NBLGGH4R315

submission - 提交管理

管理商店提交(Submissions)。

子命令 说明
status 获取提交状态
get 获取提交元数据和包信息
getListingAssets 获取提交的商店页素材资产
updateMetadata 更新提交的元数据
poll 轮询提交状态直至完成
publish 发布提交
delete 删除提交
获取提交状态
msstore submission status <productId>
获取提交详情
msstore submission get <productId>
更新元数据
msstore submission updateMetadata <productId> <metadata>

其中 <metadata> 为包含更新后元数据的 JSON 字符串。由于 JSON 中包含 Shell 会解析的字符(如双引号、花括号等),你需要对其进行适当的转义或加引号包裹:

  • Bash/Zsh:用单引号包裹 JSON,以便 Shell 按字面量原样传递。
    msstore submission updateMetadata 9NBLGGH4R315 '{"description":"My updated app"}'
    
  • PowerShell:使用单引号(或在双引号字符串内部转义双引号)。
    msstore submission updateMetadata 9NBLGGH4R315 '{"description":"My updated app"}'
    
  • cmd.exe:在每个内部双引号前添加反斜杠进行转义。
    msstore submission updateMetadata 9NBLGGH4R315 "{\"description\":\"My updated app\"}"
    

提示: 对于复杂或多行的元数据,建议将 JSON 保存到文件中并传递其内容,以避免引号转义问题:

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

参数选项:

选项 说明
-s, --skipInitialPolling 跳过初始状态轮询
发布提交
msstore submission publish <productId>
轮询提交状态
msstore submission poll <productId>

持续轮询,直到提交状态变为 PUBLISHED 或 FAILED。

删除提交
msstore submission delete <productId>

参数选项:

选项 说明
--no-confirm 跳过二次确认提示

init - 初始化商店项目

初始化项目以准备发布至 Microsoft Store。工具会自动检测项目类型并配置商店身份标识。

msstore init <pathOrUrl> [options]

参数:

参数 说明
pathOrUrl 项目目录路径或 PWA URL

参数选项:

选项 说明
-n, --publisherDisplayName 发布者显示名称
--package 同时对项目进行打包
--publish 打包并发布(隐式包含 --package)
-f, --flightId 发布到指定的 flight(测试分发组)
-prp, --packageRolloutPercentage 渐进式发布比例 (0-100)
-a, --arch 目标架构:x86, x64, arm64
-o, --output 安装包的输出目录
-ver, --version 构建时使用的版本号

支持的项目类型:

  • Windows App SDK / WinUI 3
  • UWP
  • .NET MAUI
  • Flutter
  • Electron
  • React Native for Desktop
  • PWA(渐进式 Web 应用)

示例:

# 初始化 WinUI 项目
msstore init ./my-winui-app

# 初始化 PWA
msstore init https://contoso.com --output ./pwa-package

# 初始化并发布
msstore init ./my-app --publish

package - 项目打包

为 Microsoft Store 提交打包应用程序。

msstore package <pathOrUrl> [options]

参数:

参数 说明
pathOrUrl 项目目录路径或 PWA URL

参数选项:

选项 说明
-o, --output 安装包的输出目录
-a, --arch 目标架构:x86, x64, arm64
-ver, --version 安装包的版本号

示例:

# 为默认架构打包
msstore package ./my-app

# 为多种架构打包
msstore package ./my-app --arch x64,arm64 --output ./packages

# 指定版本号打包
msstore package ./my-app --version 1.2.3.0

publish - 发布至商店

将应用程序发布到 Microsoft Store。

msstore publish <pathOrUrl> [options]

参数:

参数 说明
pathOrUrl 项目目录路径或 PWA URL

参数选项:

选项 说明
-i, --inputFile 已有的 .msix 或 .msixupload 文件路径
-id, --appId 应用程序 ID(若未进行初始化)
-nc, --noCommit 保持提交为草稿状态
-f, --flightId 发布到指定的 flight(测试分发组)
-prp, --packageRolloutPercentage 渐进式发布比例 (0-100)

示例:

# 发布项目
msstore publish ./my-app

# 发布现有安装包
msstore publish ./my-app --inputFile ./packages/MyApp.msixupload

# 作为草稿发布
msstore publish ./my-app --noCommit

# 使用渐进式发布(灰度 10%)
msstore publish ./my-app --packageRolloutPercentage 10

flights - Package Flight 管理

管理 package flight(Beta 测试分组)。

子命令 说明
list 列出应用的所有 flight
get 获取指定 flight 详情
delete 删除指定 flight
create 创建新 flight
submission 管理 flight 提交
列出 Flight
msstore flights list <productId>
获取 Flight 详情
msstore flights get <productId> <flightId>
创建 Flight
msstore flights create <productId> <friendlyName> --group-ids <group-ids>

参数选项:

选项 说明
-g, --group-ids Flight 测试组 ID(多个用逗号分隔)
-r, --rank-higher-than 优先级高于指定的 Flight ID
删除 Flight
msstore flights delete <productId> <flightId>
Flight 提交管理
# 获取 flight 提交
msstore flights submission get <productId> <flightId>

# 发布 flight 提交
msstore flights submission publish <productId> <flightId>

# 检查 flight 提交状态
msstore flights submission status <productId> <flightId>

# 轮询 flight 提交状态
msstore flights submission poll <productId> <flightId>

# 删除 flight 提交
msstore flights submission delete <productId> <flightId>
Flight 灰度发布管理
# 获取灰度发布状态
msstore flights submission rollout get <productId> <flightId>

# 更新灰度发布比例
msstore flights submission rollout update <productId> <flightId> <percentage>

# 暂停灰度发布
msstore flights submission rollout halt <productId> <flightId>

# 完成灰度发布(全量 100%)
msstore flights submission rollout finalize <productId> <flightId>

常见工作流

工作流 1:首次配置商店环境

# 1. 安装 CLI
winget install "Microsoft Store Developer CLI"

# 2. 配置凭据(从 Partner Center 获取对应参数)
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET

# 3. 验证配置
msstore info

# 4. 列出应用以确认访问权限
msstore apps list

工作流 2:初始化并发布新应用

# 1. 进入项目目录
cd my-winui-app

# 2. 针对 Store 初始化(创建/更新应用身份标识)
msstore init .

# 3. 对应用程序打包
msstore package . --arch x64,arm64

# 4. 发布到 Store
msstore publish .

# 5. 检查提交状态
msstore submission status <productId>

Workflow

<!-- truncated for translation batch; full body continues in source -->