
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 开发者命令行工具(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:下载
- WinGet:
winget install "Microsoft Store Developer CLI" - 手动下载:从 GitHub Releases 获取
Partner Center 配置
在使用 msstore 之前,你需要创建一个具备 Partner Center 访问权限的 Azure AD 应用程序:
- 前往 Partner Center
- 导航至 账户设置 > 用户管理 > Azure AD 应用程序
- 创建一个新应用程序,并记录 Tenant ID(租户 ID)、Client ID(客户端 ID)和 Client Secret(客户端密钥)
- 为该应用程序授予适当的权限(管理者或开发者角色)
核心命令参考
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 -->





