次の方法で共有


パッケージ フライトの申請を管理する

Microsoft Store 申請 API には、段階的なパッケージのロールアウトなど、アプリのパッケージ フライト申請を管理するために使用できるメソッドが用意されています。 API を使用するための前提条件など、Microsoft Store 申請 API の概要については、「Microsoft Store サービスを使用した申請の作成と管理」を参照してください。

Von Bedeutung

Microsoft Store 申請 API を使用してパッケージ フライトの申請を作成する場合は、パートナー センターではなく、API を使用してのみ申請をさらに変更してください。 ダッシュボードを使用して API を使用して最初に作成した申請を変更した場合、API を使用してその申請を変更またはコミットできなくなります。 場合によっては、申請がエラー状態のままになり、送信プロセスで続行できない場合があります。 この場合は、申請を削除し、新しい申請を作成する必要があります。

パッケージ フライトの申請を管理するためのメソッド

パッケージ フライトの申請を取得、作成、更新、コミット、または削除するには、次のメソッドを使用します。 これらの方法を使用する前に、パッケージ フライトがパートナー センターに既に存在している必要があります。 パッケージ フライトは、 パートナー センターで 作成するか、「パッケージ フライトの 管理」で説明されている Microsoft Store 申請 API メソッドを使用して作成できます。

メソッド URI(統一リソース識別子) 説明
取得する https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} 既存のパッケージ フライトの申請を取得する
取得する https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/status 既存のパッケージ フライト申請の状態を取得する
投稿 https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions 新しいパッケージ フライトの申請を作成する
配置する https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} 既存のパッケージ フライトの申請を更新する
投稿 https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/commit 新規または更新されたパッケージフライトの申請をコミット
削除 https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} パッケージ フライトの申請を削除する

パッケージ フライトの申請を作成する

パッケージ フライトの申請を作成するには、このプロセスに従います。

  1. まだ行っていない場合は、「 Microsoft Store サービスを使用して申請を作成および管理する」で説明されている前提条件を満たしてください。これには、Azure AD アプリケーションをパートナー センター アカウントに関連付け、クライアント ID とキーを取得する方法が含まれます。 これは 1 回だけ行う必要があります。クライアント ID とキーを取得したら、新しい Azure AD アクセス トークンを作成する必要がある場合は、いつでもそれらを再利用できます。

  2. Azure AD アクセス トークンを取得します。 このアクセス トークンは、Microsoft Store 申請 API のメソッドに渡す必要があります。 アクセス トークンを取得すると、有効期限が切れるまで 60 分かかります。 トークンの有効期限が切れた後、新しいトークンを取得できます。

  3. Microsoft Store 申請 API で次のメソッドを実行して、パッケージ フライトの申請を作成します。 このメソッドは、新しい進行中の申請を作成します。これは、最後に発行された申請のコピーです。

    POST https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions
    

    応答本文には、新しい 申請 の ID、Azure Blob Storage への申請のパッケージをアップロードするための Shared Access Signature (SAS) URI、および新しい申請のデータ (すべての一覧と価格情報を含む) を含むフライト申請リソースが含まれています。

    SAS URI を使用すると、アカウント キーを必要とせずに、Azure Storage 内のセキュリティで保護されたリソースにアクセスできます。 SAS URI とその Azure Blob Storage での使用に関する背景情報については、「Shared Access Signature」、パート 1: SAS モデルのShared Access Signature について、パート 2: BLOB ストレージで SAS を作成して使用する方法に関するページを参照してください。

  4. 申請用に新しいパッケージを追加する場合は、 パッケージを準備 して ZIP アーカイブに追加します。

  5. 新しい申請のために必要な変更を加えて、フライトの申請 データを修正し、その後、次のメソッドを実行して、パッケージフライト申請を 更新します。

    PUT https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}
    

    申請に新しいパッケージを追加する場合は、ZIP アーカイブ内のこれらのファイルの名前と相対パスを参照するように申請データを更新してください。

  6. 申請用に新しいパッケージを追加する場合は、前に呼び出した POST メソッドの応答本文で提供された SAS URI を使用して、ZIP アーカイブを Azure Blob Storage にアップロードします。 次のようなさまざまなプラットフォームでこれを行うために使用できるさまざまな Azure ライブラリがあります。

    次の C# コード例は、.NET 用 Azure Storage クライアント ライブラリの CloudBlockBlob クラスを使用して、ZIP アーカイブを Azure Blob Storage にアップロードする方法を示しています。 この例では、ZIP アーカイブがストリーム オブジェクトに既に書き込まれているものとします。

    string sasUrl = "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl";
    Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob =
        new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
    await blockBob.UploadFromStreamAsync(stream);
    
  7. 次のメソッドを実行して、パッケージ フライトの申請をコミットします。 これにより、申請が完了し、アカウントに更新プログラムを適用する必要があることをパートナー センターに通知します。

    POST https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/commit
    
  8. 次のメソッドを実行してコミット状態を確認 、パッケージ フライトの申請の状態を取得します。

    GET https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/status
    

    申請の状態を確認するには、応答本文で 状態 値を確認します。 この値は、CommitStarted から、要求が成功した場合には PreProcessing に、要求にエラーがある場合には CommitFailed に変更される必要があります。 エラーがある場合は、statusDetails フィールドにエラーの詳細が含まれます。

  9. コミットが正常に完了すると、申請はインジェストのためにストアに送信されます。 前の方法を使用するか、パートナー センターにアクセスして、申請の進行状況を引き続き監視できます。

コード例

次の記事では、いくつかの異なるプログラミング言語でパッケージ フライト申請を作成する方法を示す詳細なコード例を示します。

StoreBroker PowerShell モジュール

Microsoft Store 申請 API を直接呼び出す代わりに、API の上にコマンド ライン インターフェイスを実装するオープンソースの PowerShell モジュールも用意されています。 このモジュールは StoreBrokerと呼ばれています。 このモジュールを使用すると、Microsoft Store 申請 API を直接呼び出す代わりに、コマンド ラインからアプリ、フライト、アドオンの申請を管理できます。また、ソースを参照するだけで、この API を呼び出す方法の他の例を確認することもできます。 StoreBroker モジュールは、多くのファーストパーティ アプリケーションがストアに送信される主な方法として、Microsoft 内で積極的に使用されています。

詳細については、GitHubの StoreBroker ページを参照してください。

パッケージフライト申請における段階的なパッケージの展開を管理する

パッケージ フライト申請の更新されたパッケージを、Windows 10 および Windows 11 のアプリの顧客の割合に徐々にロールアウトできます。 これにより、特定のパッケージのフィードバックと分析データを監視して、更新プログラムをより広範にロールアウトする前に確実に更新プログラムを確認できます。 公開された申請のロールアウト率を変更 (または更新を停止) できます。新しい申請を作成する必要はありません。 パートナー センターで段階的なパッケージのロールアウトを有効にして管理する方法の手順など、詳細については、この記事参照してください。

パッケージ フライト申請の段階的なパッケージ ロールアウトをプログラムで有効にするには、Microsoft Store 申請 API のメソッドを使用して次のプロセスに従います。

  1. パッケージ フライト申請 を作成するか、パッケージ フライト申請を取得 します。
  2. 応答データで packageRollout リソースを見つけ、 isPackageRollout フィールドを true に設定し、 packageRolloutPercentage フィールドを、更新されたパッケージを取得するアプリの顧客の割合に設定します。
  3. 更新されたパッケージ フライト申請データをパッケージ フライト申請メソッドの更新 に渡します。

パッケージ フライトの申請に対して段階的なパッケージ ロールアウトが有効になった後、次の方法を使用して、段階的なロールアウトをプログラムで取得、更新、停止、または完了できます。

メソッド URI(統一リソース識別子) 説明
取得する https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/packagerollout パッケージ フライトの申請に関する段階的なロールアウト情報を取得する
投稿 https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/updatepackagerolloutpercentage パッケージ フライトの申請の段階的なロールアウト率を更新する
投稿 https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/haltpackagerollout パッケージ フライトの申請の段階的なロールアウトを停止する
投稿 https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/finalizepackagerollout パッケージ フライトの申請の段階的なロールアウトを完了する

データ リソース

パッケージ フライトの申請を管理するための Microsoft Store 申請 API メソッドでは、次の JSON データ リソースが使用されます。

フライト申請リソース

このリソースでは、パッケージ フライトの申請について説明します。

{
  "id": "1152921504621243649",
  "flightId": "cd2e368a-0da5-4026-9f34-0e7934bc6f23",
  "status": "PendingCommit",
  "statusDetails": {
    "errors": [],
    "warnings": [],
    "certificationReports": []
  },
  "flightPackages": [
    {
      "fileName": "newPackage.appx",
      "fileStatus": "PendingUpload",
      "id": "",
      "version": "1.0.0.0",
      "languages": ["en-us"],
      "capabilities": [],
      "minimumDirectXVersion": "None",
      "minimumSystemRam": "None"
    }
  ],
  "packageDeliveryOptions": {
    "packageRollout": {
        "isPackageRollout": false,
        "packageRolloutPercentage": 0.0,
        "packageRolloutStatus": "PackageRolloutNotStarted",
        "fallbackSubmissionId": "0"
    },
    "isMandatoryUpdate": false,
    "mandatoryUpdateEffectiveDate": "1601-01-01T00:00:00.0000000Z"
  },
  "fileUploadUrl": "https://productingestionbin1.blob.core.windows.net/ingestion/8b389577-5d5e-4cbe-a744-1ff2e97a9eb8?sv=2014-02-14&sr=b&sig=wgMCQPjPDkuuxNLkeG35rfHaMToebCxBNMPw7WABdXU%3D&se=2016-06-17T21:29:44Z&sp=rwl",
  "targetPublishMode": "Immediate",
  "targetPublishDate": "",
  "notesForCertification": "No special steps are required for certification of this app."
}

このリソースの値は次のとおりです。

価値 タイプ 説明
身分証明書 ひも 申請の ID。
フライトID ひも 申請が関連付けられているパッケージ フライトの ID。
ステータス ひも 申請の状態。 次のいずれかの値を指定できます。
  • 無し
  • 取り消し済み
  • コミット待ち
  • コミット開始
  • コミットに失敗しました
  • 公開待ち
  • 出版
  • 公開済み
  • 公開に失敗しました
  • 前処理
  • 前処理に失敗しました
  • 証明
  • 認証に失敗しました
  • リリース
  • リリースに失敗しました
ステータス詳細 オブジェクト 状態の詳細リソース は、申請状況の詳細情報を含むものであり、エラーに関する情報などが含まれています。
フライトパッケージ 配列 提出された各パッケージの詳細を提供するフライトパッケージリソース を含んでいます。
配送オプション オブジェクト 段階的なパッケージのロールアウトと申請の必須の更新設定を含む、パッケージ配信オプション リソース
fileUploadUrl ひも 申請のパッケージをアップロードするための Shared Access Signature (SAS) URI。 申請に新しいパッケージを追加する場合は、パッケージを含む ZIP アーカイブをこの URI にアップロードします。 詳細については、「 パッケージ フライトの申請を作成する」を参照してください。
ターゲットパブリッシュモード ひも 提出物の公開モード。 次のいずれかの値を指定できます。
  • 直ちに
  • マニュアル
  • 特定の日付
目標公開日 ひも targetPublishMode が SpecificDate に設定されている場合の、ISO 8601 形式の申請の発行日。
認証のための注意事項 ひも テスト アカウントの資格情報や、機能にアクセスして検証する手順など、認定テスト担当者向けの追加情報を提供します。 詳細については、「認定の に関する注意事項」を参照してください。

ステータス詳細のリソース

このリソースには、申請の状態に関する追加の詳細が含まれています。 このリソースの値は次のとおりです。

価値 タイプ 説明
エラー オブジェクト 送信のエラー詳細を含む状態詳細リソース の配列。
警告 オブジェクト 送信に関する警告の詳細を含む状態詳細リソース の配列。
認証レポート オブジェクト 申請のための認定レポート データへのアクセスを提供する、認定レポートリソースの配列。 認定に失敗した場合は、これらのレポートを調べて詳細を確認できます。

状態の詳細リソース

このリソースには、申請に関連するエラーまたは警告に関する追加情報が含まれています。 このリソースの値は次のとおりです。

価値 タイプ 説明
コード ひも エラーまたは警告の種類を記述する 送信状態コード
詳細 ひも 問題の詳細を示すメッセージ。

認定レポート リソース

このリソースは、申請の認定レポート データへのアクセスを提供します。 このリソースの値は次のとおりです。

価値 タイプ 説明
日付 ひも レポートが生成された日付と時刻 (ISO 8601 形式)。
レポートURL ひも レポートにアクセスできる URL。

フライト パッケージ リソース

このリソースは、申請内のパッケージに関する詳細を提供します。

{
  "flightPackages": [
    {
      "fileName": "newPackage.appx",
      "fileStatus": "PendingUpload",
      "id": "",
      "version": "1.0.0.0",
      "languages": ["en-us"],
      "capabilities": [],
      "minimumDirectXVersion": "None",
      "minimumSystemRam": "None"
    }
  ],
}

このリソースの値は次のとおりです。

を呼び出してパッケージ フライト申請 メソッドを更新する場合、要求本文には、fileNamefileStatusminimumDirectXVersionおよび minimumSystemRam 値のみが必要です。 その他の値は、パートナー センターによって設定されます。

価値 タイプ 説明
ファイル名 ひも パッケージの名前。
ファイルステータス ひも パッケージの状態。 次のいずれかの値を指定できます。
  • 無し
  • アップロード待機中
  • アップロード
  • 削除予定
身分証明書 ひも パッケージを一意に識別する ID。 この値は、パートナー センターで使用されます。
バージョン ひも アプリ パッケージのバージョン。 詳細については、「パッケージのバージョン番号付け」を参照してください。
建築 ひも アプリ パッケージのアーキテクチャ (ARM など)。
言語 配列 アプリがサポートする言語の言語コードの配列。 詳細については、「サポートされている言語」を参照してください。さらに詳しくは、「サポートされている言語」を参照してください。
能力 配列 パッケージに必要な機能の配列。 機能の詳細については、「アプリ機能宣言」を参照してください。
必要最低DirectXバージョン ひも アプリ パッケージでサポートされている DirectX の最小バージョン。 これは、Windows 8.x を対象とするアプリにのみ設定できます。他のバージョンを対象とするアプリでは無視されます。 次のいずれかの値を指定できます。
  • 無し
  • DirectX93
  • DirectX100
最小システムRAM ひも アプリ パッケージに必要な最小 RAM。 これは、Windows 8.x を対象とするアプリにのみ設定できます。他のバージョンを対象とするアプリでは無視されます。 次のいずれかの値を指定できます。
  • 無し
  • Memory2GB

パッケージ配信オプション リソース

このリソースには、申請の段階的なパッケージのロールアウトと必須の更新設定が含まれています。

{
  "packageDeliveryOptions": {
    "packageRollout": {
        "isPackageRollout": false,
        "packageRolloutPercentage": 0.0,
        "packageRolloutStatus": "PackageRolloutNotStarted",
        "fallbackSubmissionId": "0"
    },
    "isMandatoryUpdate": false,
    "mandatoryUpdateEffectiveDate": "1601-01-01T00:00:00.0000000Z"
  },
}

このリソースの値は次のとおりです。

価値 タイプ 説明
packageRollout オブジェクト パッケージ ロールアウト リソース は、申請の段階的なパッケージ ロールアウト設定を含んでいます。
必須更新かどうか ブーリアン この申請のパッケージを、アプリの更新プログラムの自己インストールに必須として扱うかどうかを示します。 アプリの更新プログラムを自己インストールするための必須パッケージの詳細については、「アプリのパッケージ更新プログラムをダウンロードしてインストールする」を参照してください。
必須アップデート施行日 日付 この申請のパッケージが必須になる日時 (ISO 8601 形式と UTC タイム ゾーン)。

パッケージ ロールアウト リソース

このリソースには、パッケージロールアウトの段階的な設定 が申請用に含まれています。 このリソースの値は次のとおりです。

価値 タイプ 説明
isPackageRollout ブーリアン 申請に対して段階的なパッケージ ロールアウトが有効になっているかどうかを示します。
パッケージ展開割合 フロート 段階的なロールアウトでパッケージを受け取るユーザーの割合。
パッケージ展開状況 ひも 段階的なパッケージロールアウトの状態を示す次のいずれかの文字列。
  • パッケージ展開が開始されていません
  • パッケージ展開中
  • パッケージ展開完了
  • パッケージ展開停止
フォールバックSubmissionId ひも 段階的なロールアウト パッケージを取得しないお客様が受け取る申請の ID。

packageRolloutStatusfallbackSubmissionId の値はパートナー センターによって割り当てられ、開発者が設定するためのものではありません。 これらの値を要求本文に含める場合、これらの値は無視されます。

列挙体

これらのメソッドでは、次の列挙型を使用します。

提出ステータスコード

次のコードは、申請の状態を表します。

コード 説明
無し コードが指定されませんでした。
無効なアーカイブ パッケージを含む ZIP アーカイブが無効であるか、認識されないアーカイブ形式です。
MissingFiles ZIP アーカイブには、提出データに一覧表示されたすべてのファイルが含まれていないか、アーカイブ内の間違った場所にあります。
パッケージの検証に失敗しました 申請内の 1 つ以上のパッケージの検証に失敗しました。
無効なパラメータ値 要求本文のパラメーターの 1 つが無効です。
無効な操作 試行した操作が無効です。
無効な状態 試行した操作は、パッケージ フライトの現在の状態に対して無効です。
リソースが見つかりません 指定されたパッケージ フライトが見つかりませんでした。
サービスエラー 内部サービス エラーにより、要求が成功できませんでした。 要求をもう一度試してください。
リスティング対象外警告 開発者は、以前の申請から一覧を削除したか、パッケージでサポートされている一覧情報を含めませんでした。
リスティング参加警告 開発者が一覧を追加しました。
アップデートのみの警告 開発者は、更新プログラムのサポートのみを持つものを挿入しようとしています。
その他 申請が認識されない状態または未分類の状態です。
パッケージ検証警告 パッケージの検証プロセスで警告が発生しました。