msstore-cli
Microsoft StoreへのWindowsアプリ公開を支援するMicrosoft Store Developer CLI(msstore)ツールです。Storeの認証情報設定、アプリ一覧の取得、申請ステータスの確認、パッケージフライトの管理、Partner CenterとのCI/CD連携などを求められた際に使用します。Windows App SDK/WinUI、UWP、.NET MAUI、Flutter、Electron、React Native、PWAアプリに対応しています。
description の原文を見る
Microsoft Store Developer CLI (msstore) for publishing Windows applications to the Microsoft Store. Use when asked to configure Store credentials, list Store apps, check submission status, publish submissions, manage package flights, set up CI/CD for Store publishing, or integrate with Partner Center. Supports Windows App SDK/WinUI, UWP, .NET MAUI, Flutter, Electron, React Native, and PWA applications.
SKILL.md 本文
Microsoft Store Developer CLI (msstore)
Microsoft Store Developer CLI (msstore) は、Microsoft Store でアプリケーションを公開および管理するためのクロスプラットフォーム対応のコマンドラインインターフェースです。Partner Center API と統合され、様々なアプリケーションタイプの自動公開ワークフローに対応しています。
このスキルを使用する場合
以下が必要な場合にこのスキルを使用してください:
- Store 認証情報を API アクセス用に設定する
- Store アカウント内のアプリケーションを一覧表示する
- 申請のステータスを確認する
- Store に申請を公開する
- Store 申請用にアプリケーションをパッケージする
- Store 公開用にプロジェクトを初期化する
- パッケージフライト (ベータテスト) を管理する
- Store 公開の自動化用に 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 アプリケーション に移動
- 新しいアプリケーションを作成し、テナント ID、クライアント ID、クライアント シークレット をメモする
- アプリケーションに適切な権限を付与 (マネージャーまたは開発者ロール)
コマンドリファレンス
info - 設定情報の表示
現在の認証情報設定を表示します。
msstore info
オプション:
| オプション | 説明 |
|---|---|
-v, --verbose | 詳細出力を表示 |
reconfigure - 認証情報を設定
Microsoft Store API 認証情報を設定または更新します。
msstore reconfigure [options]
オプション:
| オプション | 説明 |
|---|---|
-t, --tenantId | Azure AD テナント ID |
-s, --sellerId | Partner Center 販売者 ID |
-c, --clientId | Azure AD アプリケーション クライアント ID |
-cs, --clientSecret | 認証用のクライアント シークレット |
-ct, --certificateThumbprint | 証明書のサムプリント (クライアント シークレットの代替) |
-cfp, --certificateFilePath | 証明書ファイルパス (クライアント シークレットの代替) |
-cp, --certificatePassword | 証明書のパスワード |
--reset | 完全な再設定なしで認証情報をリセット |
例:
# クライアント シークレットで設定
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 コマンドのデフォルト発行者表示名を設定します。
apps - アプリケーション管理
アプリケーション情報をリストおよび取得します。
アプリケーションをリスト表示
msstore apps list
Partner Center アカウント内のすべてのアプリケーションをリストします。
アプリケーションの詳細を取得
msstore apps get <productId>
引数:
| 引数 | 説明 |
|---|---|
productId | Store 製品 ID (例: 9NBLGGH4R315) |
例:
# 特定のアプリの詳細を取得
msstore apps get 9NBLGGH4R315
submission - 申請管理
Store 申請を管理します。
| サブコマンド | 説明 |
|---|---|
status | 申請ステータスを取得 |
get | 申請メタデータおよびパッケージ情報を取得 |
getListingAssets | 申請の登録資産を取得 |
updateMetadata | 申請メタデータを更新 |
poll | 申請ステータスが完了するまでポーリング |
publish | 申請を公開 |
delete | 申請を削除 |
申請ステータスを取得
msstore submission status <productId>
申請の詳細を取得
msstore submission get <productId>
メタデータを更新
msstore submission updateMetadata <productId> <metadata>
<metadata> は更新されたメタデータを含む JSON 文字列です。JSON にはシェルが解釈する文字 (引用符、波括弧など) が含まれているため、値を適切にクォートおよび/またはエスケープする必要があります:
- Bash/Zsh: JSON を単一引用符で囲み、シェルが文字通り渡すようにします。
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 - Store 用にプロジェクトを初期化
Microsoft Store 公開用にプロジェクトを初期化します。プロジェクトタイプを自動的に検出し、Store ID を設定します。
msstore init <pathOrUrl> [options]
引数:
| 引数 | 説明 |
|---|---|
pathOrUrl | プロジェクトディレクトリパスまたは PWA URL |
オプション:
| オプション | 説明 |
|---|---|
-n, --publisherDisplayName | 発行者表示名 |
--package | プロジェクトもパッケージする |
--publish | パッケージして公開 (--package を指定した場合と同じ) |
-f, --flightId | 特定のフライトに公開 |
-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 (Progressive Web Apps)
例:
# WinUI プロジェクトを初期化
msstore init ./my-winui-app
# PWA を初期化
msstore init https://contoso.com --output ./pwa-package
# 初期化して公開
msstore init ./my-app --publish
package - Store 用にパッケージ
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 - Store に公開
Microsoft Store にアプリケーションを公開します。
msstore publish <pathOrUrl> [options]
引数:
| 引数 | 説明 |
|---|---|
pathOrUrl | プロジェクトディレクトリパスまたは PWA URL |
オプション:
| オプション | 説明 |
|---|---|
-i, --inputFile | 既存の .msix または .msixupload ファイルのパス |
-id, --appId | アプリケーション ID (初期化されていない場合) |
-nc, --noCommit | 申請を下書き状態に保つ |
-f, --flightId | 特定のフライトに公開 |
-prp, --packageRolloutPercentage | 段階的ロールアウトのパーセンテージ (0-100) |
例:
# プロジェクトを公開
msstore publish ./my-app
# 既存のパッケージを公開
msstore publish ./my-app --inputFile ./packages/MyApp.msixupload
# 下書きとして公開
msstore publish ./my-app --noCommit
# 段階的ロールアウトで公開
msstore publish ./my-app --packageRolloutPercentage 10
flights - パッケージフライト管理
パッケージフライト (ベータテストグループ) を管理します。
| サブコマンド | 説明 |
|---|---|
list | アプリのすべてのフライトをリスト |
get | フライトの詳細を取得 |
delete | フライトを削除 |
create | 新しいフライトを作成 |
submission | フライト申請を管理 |
フライトをリスト表示
msstore flights list <productId>
フライトの詳細を取得
msstore flights get <productId> <flightId>
フライトを作成
msstore flights create <productId> <friendlyName> --group-ids <group-ids>
オプション:
| オプション | 説明 |
|---|---|
-g, --group-ids | フライトグループ ID (カンマ区切り) |
-r, --rank-higher-than | その上にランク付けするフライト ID |
フライトを削除
msstore flights delete <productId> <flightId>
フライト申請
# フライト申請を取得
msstore flights submission get <productId> <flightId>
# フライト申請を公開
msstore flights submission publish <productId> <flightId>
# フライト申請ステータスを確認
msstore flights submission status <productId> <flightId>
# フライト申請をポーリング
msstore flights submission poll <productId> <flightId>
# フライト申請を削除
msstore flights submission delete <productId> <flightId>
フライトロールアウト管理
# ロールアウトステータスを取得
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: 初回 Store セットアップ
# 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 用に初期化 (アプリ ID を作成/更新)
msstore init .
# 3. アプリケーションをパッケージ
msstore package . --arch x64,arm64
# 4. Store に公開
msstore publish .
# 5. 申請ステータスを確認
msstore submission status <productId>
ワークフロー 3: 既存のアプリを更新
# 1. 更新されたアプリケーションをビルド
dotnet publish -c Release
# 2. パッケージして公開
msstore publish ./my-app
# または既存のパッケージから公開
msstore publish ./my-app --inputFile ./artifacts/MyApp.msixupload
ワークフロー 4: 段階的ロールアウト
# 1. 初期ロールアウトパーセンテージで公開
msstore publish ./my-app --packageRolloutPercentage 10
# 2. 監視してロールアウトを増加
msstore submission poll <productId>
# 3. (検証後) 100% に完了
# これは Partner Center または申請更新を通じて完了
ワークフロー 5: フライトを使用したベータテスト
# 1. Partner Center でまずフライトグループを作成
# その後、フライトを作成
msstore flights create <productId> "Beta Testers" --group-ids "group-id-1,group-id-2"
# 2. フライトに公開
msstore publish ./my-app --flightId <flightId>
# 3. フライト申請ステータスを確認
msstore flights submission status <productId> <flightId>
# 4. テスト後、本番に公開
msstore publish ./my-app
ワークフロー 6: CI/CD パイプライン統合
# 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
winapp CLI との統合
winapp CLI (v0.2.0+) は winapp store サブコマンドを通じて msstore と統合されます:
# これらのコマンドは等価です:
msstore reconfigure --tenantId xxx --clientId xxx --clientSecret xxx
winapp store reconfigure --tenantId xxx --clientId xxx --clientSecret xxx
# アプリをリスト表示
msstore apps list
winapp store apps list
# 公開
msstore publish ./my-app
winapp store publish ./my-app
パッケージングと公開の両方に統一 CLI エクスペリエンスが必要な場合は winapp store を使用してください。
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| 認証に失敗 | msstore info で認証情報を確認; msstore reconfigure を再実行 |
| アプリが見つからない | 製品 ID が正しいことを確認; msstore apps list で確認 |
| 権限が不足 | Partner Center での Azure AD アプリロールを確認 (マネージャーまたは開発者が必要) |
| パッケージ検証に失敗 | パッケージが Store 要件を満たすことを確認; Partner Center で詳細を確認 |
| 申請が停止 | msstore submission poll <productId> を実行してステータスを確認 |
| フライトが見つからない | msstore flights list <productId> でフライト ID を確認 |
| ロールアウトパーセンテージが無効 | 値は 0 から 100 の間である必要があります |
| PWA の Init に失敗 | URL がパブリックアクセス可能で有効な Web アプリマニフェストを持つことを確認 |
環境変数
CLI は認証情報に対して環境変数をサポートしています:
| 変数 | 説明 |
|---|---|
MSSTORE_TENANT_ID | Azure AD テナント ID |
MSSTORE_SELLER_ID | Partner Center 販売者 ID |
MSSTORE_CLIENT_ID | Azure AD アプリケーション クライアント ID |
MSSTORE_CLIENT_SECRET | クライアント シークレット |
参考資料
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- github
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/github/awesome-copilot / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。