mcpField
M
msstore-cli

msstore-cli

github.com/githubクラウド・DevOps40.5k7.0k 回インストール1 日前に更新
リポジトリ

msstore-cli について

msstoreは、Microsoft Storeでアプリを公開・管理する開発者向けのクロスプラットフォームCLIです。プロジェクトの初期化やパッケージ化、申請、テスト用フライト、段階的な公開を扱い、CI/CDでの自動化にも対応します。

主な機能

  1. 01Partner Center認証情報の設定
  2. 02プロジェクトの初期化とパッケージ化
  3. 03申請の公開と状況確認
  4. 04テスト用フライトと段階公開の管理
  5. 05アプリのメタデータ更新

活用シーン

  1. 01Store申請用のプロジェクト準備
  2. 02CI/CDによるアプリ更新の公開
  3. 03フライトグループへのベータ版配布
  4. 04段階的なリリースの実施

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill msstore-cli

インストール後、Claude Code で/msstore-cliを入力して読み込まれたか確認します。

詳細

Microsoft Store Developer CLI (msstore)

Microsoft Store Developer CLI(msstore)は、Microsoft Store でアプリケーションを公開、管理するためのクロスプラットフォーム対応コマンドラインインターフェイスです。Partner Center API と連携し、さまざまな種類のアプリケーションに対応した公開ワークフローを自動化できます。

このスキルを使用する場面

次のような場合に、このスキルを使用します。

  • API アクセス用の Store 認証情報を設定する
  • 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:
Partner Center のセットアップ

msstore を使用する前に、Partner Center にアクセスできる Azure AD アプリケーションを作成する必要があります。

  1. Partner Center にアクセスします
  2. Account settings > User management > Azure AD applications に移動します
  3. 新しいアプリケーションを作成し、Tenant ID、Client ID、Client Secret を控えます
  4. アプリケーションに適切なアクセス許可を付与します(Manager または Developer のロール)

コアコマンドのリファレンス

info - 構成を表示する

現在の認証情報の構成を表示します。

msstore info

オプション:

オプション説明
-v, --verbose詳細な出力を表示します
reconfigure - 認証情報を設定する

Microsoft Store API の認証情報を設定または更新します。

msstore reconfigure [options]

オプション:

オプション説明
-t, --tenantIdAzure AD テナント ID
-s, --sellerIdPartner Center の販売者 ID
-c, --clientIdAzure AD アプリケーションのクライアント ID
-cs, --clientSecret認証用のクライアントシークレット
-ct, --certificateThumbprint証明書の拇印(クライアントシークレットの代替)
-cfp, --certificateFilePath証明書ファイルのパス(クライアントシークレットの代替)
-cp, --certificatePassword証明書のパスワード
--reset完全な再構成を行わずに認証情報をリセットします

例:

# Configure with client secret
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET

# Configure with certificate
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>

引数:

引数説明
productIdStore の製品 ID(例:9NBLGGH4R315)

例:

# Get details of a specific app
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 - ストア用にプロジェクトを初期化

Microsoft 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(プログレッシブウェブアプリ)

例:

# Initialize WinUI project
msstore init ./my-winui-app

# Initialize PWA
msstore init https://contoso.com --output ./pwa-package

# Initialize and publish
msstore init ./my-app --publish
package - ストア用にパッケージ化

Microsoft Storeへの申請用にアプリケーションをパッケージ化します。

msstore package <pathOrUrl> [options]

引数:

引数説明
pathOrUrlプロジェクトディレクトリのパスまたはPWAのURL

オプション:

オプション説明
-o, --outputパッケージの出力ディレクトリ
-a, --archアーキテクチャ:x86、x64、arm64
-ver, --versionパッケージのバージョン

例:

# Package for default architecture
msstore package ./my-app

# Package for multiple architectures
msstore package ./my-app --arch x64,arm64 --output ./packages

# Package with specific version
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特定のフライトに公開します
-prp, --packageRolloutPercentage段階的なロールアウトの割合(0~100)

例:

# Publish project
msstore publish ./my-app

# Publish existing package
msstore publish ./my-app --inputFile ./packages/MyApp.msixupload

# Publish as draft
msstore publish ./my-app --noCommit

# Publish with gradual rollout
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>
フライトの申請
# Get flight submission
msstore flights submission get <productId> <flightId>

# Publish flight submission
msstore flights submission publish <productId> <flightId>

# Check flight submission status
msstore flights submission status <productId> <flightId>

# Poll flight submission
msstore flights submission poll <productId> <flightId>

# Delete flight submission
msstore flights submission delete <productId> <flightId>
フライトのロールアウト管理
# Get rollout status
msstore flights submission rollout get <productId> <flightId>

# Update rollout percentage
msstore flights submission rollout update <productId> <flightId> <percentage>

# Halt rollout
msstore flights submission rollout halt <productId> <flightId>

# Finalize rollout (100%)
msstore flights submission rollout finalize <productId> <flightId>

共通のワークフロー

ワークフロー1:ストアを初めて設定する
# 1. Install the CLI
winget install "Microsoft Store Developer CLI"

# 2. Configure credentials (get these from Partner Center)
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET

# 3. Verify configuration
msstore info

# 4. List your apps to confirm access
msstore apps list
ワークフロー 2: 新しいアプリの初期化と公開
# 1. Navigate to project
cd my-winui-app

# 2. Initialize for Store (creates/updates app identity)
msstore init .

# 3. Package the application
msstore package . --arch x64,arm64

# 4. Publish to Store
msstore publish .

# 5. Check submission status
msstore submission status <productId>
ワークフロー 3: 既存アプリの更新
# 1. Build your updated application
dotnet publish -c Release

# 2. Package and publish
msstore publish ./my-app

# Or publish from existing package
msstore publish ./my-app --inputFile ./artifacts/MyApp.msixupload
ワークフロー 4: 段階的ロールアウト
# 1. Publish with initial rollout percentage
msstore publish ./my-app --packageRolloutPercentage 10

# 2. Monitor and increase rollout
msstore submission poll <productId>

# 3. (After validation) Finalize to 100%
# This completes via Partner Center or submission update
ワークフロー 5: フライトによるベータテスト
# 1. Create a flight group in Partner Center first
# Then create a flight
msstore flights create <productId> "Beta Testers" --group-ids "group-id-1,group-id-2"

# 2. Publish to the flight
msstore publish ./my-app --flightId <flightId>

# 3. Check flight submission status
msstore flights submission status <productId> <flightId>

# 4. After testing, publish to production
msstore publish ./my-app
ワークフロー 6: CI/CD パイプラインとの統合
# GitHub Actions example
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 と統合されています:

# These commands are equivalent:
msstore reconfigure --tenantId xxx --clientId xxx --clientSecret xxx
winapp store reconfigure --tenantId xxx --clientId xxx --clientSecret xxx

# List apps
msstore apps list
winapp store apps list

# Publish
msstore publish ./my-app
winapp store publish ./my-app

パッケージングと公開の両方で統一された CLI エクスペリエンスを求める場合は、winapp store を使用してください。

トラブルシューティング

問題解決方法
認証に失敗しましたmsstore info で資格情報を確認し、msstore reconfigure を再実行してください
アプリが見つかりません製品 ID が正しいことを確認し、msstore apps list を実行して検証してください
権限が不足していますパートナーセンターで Azure AD アプリのロールを確認してください (マネージャーまたは開発者が必要です)
パッケージの検証に失敗しましたパッケージがストアの要件を満たしていることを確認し、詳細はパートナーセンターで確認してください
申請が停滞していますmsstore submission poll <productId> を実行してステータスを確認してください
フライトが見つかりませんmsstore flights list <productId> でフライト ID を確認してください
ロールアウトの割合が無効です値は 0 から 100 の間である必要があります
PWA の初期化に失敗しましたURL が一般公開されており、有効な Web アプリマニフェストがあることを確認してください

環境変数

CLI は資格情報用の環境変数をサポートしています:

変数説明
MSSTORE_TENANT_IDAzure AD テナント ID
MSSTORE_SELLER_IDパートナーセンターの販売者 ID
MSSTORE_CLIENT_IDAzure AD アプリケーションのクライアント ID
MSSTORE_CLIENT_SECRETクライアントシークレット

参考情報

コメント