> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# タイトル パッケージング、更新、およびストリーミング インストールのテスト

> タイトル パッケージング、コンテンツ更新、およびストリーミング インストールのテスト

この記事では、ローカルなイテレーション、パフォーマンスの検証、提出前のテスト、および最終提出を含む、開発ライフサイクル全体にわたるストリーミング インストール用パッケージの作成方法について説明します。パッケージング中に MakePkg ツールが実行するステップを記述し、開発中のパッケージングとストリーミング インストールのテストにおける推奨プラクティスの概要を述べます。

## はじめに

[MakePkg.exe](/build/core-features/common/packaging/deployment/makepkg) は、コンテンツを XBOX Virtual Container (XVC) と呼ばれるバイナリ パッケージ ファイルに配置するツールです。コンソール向けのパッケージにはファイル拡張子 .xvc が、PC 向けのパッケージには .msixvc が付きます。拡張子の違いに加えて、XBOX One Family (\_x) と XBOX Series X|S Family (\_xs) のパッケージを区別するために、パッケージ名にサフィックスが追加されます。

MakePkg.exe は、タイトルのコンテンツとマッピング ファイルを入力として使用して、既知のテスト キー、ランダムに生成されたキー、または暗号化に安全な安定したキーのいずれかを使用して暗号化されたパッケージを生成します。暗号化に使用されるキーは、パッケージがローカル テスト用か、公開のために Microsoft への提出用かによって異なります。以下のセクションで使用例を詳述します。

[マッピング ファイル](/build/core-features/common/packaging/deployment/atoc-deployment-schema) 内の XML には 2 つの目的があります。1 つ目は、実行時にタイトルが利用できるファイルの場所を指定することです。2 つ目は、各ファイルが属するチャンク ファイルを指定することです。*起動セット* と呼ばれるチャンクのセットは、タイトルの実行が許可される前に常にインストールされます。残りのチャンクは、タイトルの実行中にインストールされます。チャンクのインストール進行状況を照会し、まだインストールされていないチャンクのインストール順序を変更するための API が利用可能です。

この記事の内容:

* [パッケージング中のステップ](#steps_during_packaging)
* [開発中のパッケージングの推奨手順](#recommended_steps_for_packaging_during_development)
* [ストリーミング インストール パッケージのテスト](#testing_of_streaming_installation_packages)
* [ベスト プラクティス](#best_practices)
* [開いているデータ接続によるパッケージングの失敗](#open-data-connections)
* [リソースとガイダンス](#resources_and_guidance)
* [関連項目](#see_also)

<a id="steps_during_packaging" />

## パッケージング中のステップ

MakePkg のパッケージング プロセスには複数のステップが含まれます。

### MicrosoftGame.config とファイル存在の検証

`makepkg` コマンドは、コンテンツ ソース ディレクトリ内の [MicrosoftGame.config](/build/core-features/common/game-config/MicrosoftGameConfig-Overview) ファイルが有効で、インストール可能であることをチェックします。

`makepkg pack` コマンドを実行すると、MicrosoftGame.config 内で参照されるファイルがソース ディレクトリにあることが保証されます。これらのファイルが起動セット用のパッケージに含まれていることを検証します。この検証には、バイナリ、画像ファイル、およびその他のリソースが含まれます。

### バイナリ署名

XBOX Code Integrity (XCI) はタイトル内のファイルをスキャンして署名します。このプロセスの一環として、ファイル内で検出された PE ヘッダーをパッケージ ファイルに書き込む前に変更します。署名が失敗すると、エラー メッセージが報告されます。このメッセージには、署名失敗の詳細を収集するために xcihash.exe を手動で再実行するためのコマンドが含まれます。

### パッケージの作成

MakePkg は事前検証ステップが完了するとすぐにパッケージ ファイルを作成します。その後、MakePkg は署名された実行可能ファイルを含むソース ファイルを、XML マップ ファイルで指定されたチャンク内のパッケージ ファイルにコピーします。

<Note>コンソールのみ: パッケージ作成の最後のステップでは、Game OS ファイル (GameOs.xvd) を埋め込みます。このファイルは Microsoft Game Development Kit (GDK) の一部で、ゲームの実行可能ファイルの隣のレイアウト ディレクトリに存在する必要があります。`/gameos` フラグは、Game OS ファイルの代替ソース ロケーションを指定します。</Note>

### 暗号化

| Type                | Test Signing (**/lt**) | Random Key (**/l**) | Stable Key (**/lk SECRET.LEKB**) |
| ------------------- | ---------------------- | ------------------- | -------------------------------- |
| 差分アップロード            | はい                     | いいえ                 | はい                               |
| packageutil compare | はい                     | いいえ                 | はい                               |
| セキュア アップロード         | いいえ                    | はい                  | はい                               |
| 保管時のパッケージ保護         | いいえ                    | はい                  | はい                               |
| デブキットへのサイドロード       | はい                     | いいえ                 | はい                               |
| PC へのサイドロード         | はい                     | いいえ                 | いいえ                              |

#### テスト署名 (既定の暗号化)

MakePkg の既定の動作はテスト署名されたパッケージを作成することですが、`makepkg pack` を呼び出す際に `/lt` スイッチを使用しても同じことを示します。テスト署名は、既知のテスト暗号化キーを使用して生成されたパッケージ ファイルを暗号化し、XBOX および PC でのパフォーマンス テスト検証を目的としています。リアルタイム パッケージ復号の影響はタイトルに対して透過的になるように設計されていますが、これにより、タイトルの認定と最終公開の前に暗号化に起因する可能性のあるパフォーマンス問題が発見されるようになります。テスト署名されたパッケージは、暗号化に固定キーを使用するため、コンテンツを暗号学的に保護するためのものではありません。テスト署名されたパッケージは、**xbapp install** を使用して開発キットに、**wdapp install** を使用して開発 PC にインストールできます。

#### ランダム キー暗号化 (`/l` スイッチ)

MakePkg の `/l` スイッチは、ランダムに生成された暗号化キーでパッケージ ファイルを暗号化します。タイトル パッケージに加えて、MakePkg `/l` は *PackageFullName\_licenseName\_GUID.EKB* の形式の名前のファイルを出力します。(アンダースコア (\_) 文字の使用に注意してください。) `/l` スイッチで作成されたパッケージは、開発キットや開発 PC にはインストールできません。タイトルがすべてのチェックと提出前テストに合格するまで、テスト署名されたパッケージを使用してタイトルをテストする必要があります。その状態に達した後、Microsoft への最終提出の前に、`/l` スイッチを付けて MakePkg を実行します。

#### 推奨 - 安定キー暗号化 (Genkey + /lk スイッチ)

Makepkg の `/lk` スイッチは、`makepkg genkey` コマンドによって作成された安定した (常に同じ) キーでパッケージを暗号化します。タイトル パッケージに加えて、`makepkg /lk` は *PackageFullName\_licenseName\_GUID.EKB* および *PackageFullName\_licenseName\_GUID.CEKB* の形式の名前のファイルを出力します。(アンダースコア (\_) 文字の使用に注意してください。) `/lk` スイッチで作成されたパッケージは開発キットにインストールできますが、開発 PC にはインストールできません。PC の場合は、タイトルがすべてのチェックと提出前テストに合格するまで、テスト署名されたパッケージを使用してタイトルをテストする必要があります。

これは、以下の利点により、開発キットのテストおよび提出に推奨される暗号化モードです。

1. packageutil compare が正しい更新サイズ推定値を生成できます (`/l` とは異なります)。
2. コンソールと PC がコンテンツ更新をダウンロードするのに使用するのと同じアルゴリズムを使用して Partner Center へのセキュアな差分アップロードを可能にします。
3. デブキットにインストールできます (`/l` とは異なります)。
4. セキュアな暗号化キー マテリアルを使用し、特定の環境でのみ復号できます (`/lt` とは異なります)。

`/lt` および `/l` 暗号化モードとは異なり、`/lk` モードを使用するには追加の一度きりの手順が必要です。

1. 一度限り: `makepkg genkey /ekb SECRET_KEY.lekb` を実行して SECRET\_KEY.lekb ファイルを作成します。これは、パッケージを暗号化する安定したコンテンツ キーを格納する Local Escrowed Key Blob (LEKB) です。これは、必要な担当者のみがアクセスできる安全な場所に保管する必要があります。理想的な設定では、正式なビルド マシン/アカウントのみがそれにアクセスできる必要があります。
2. パッケージの作成: `makepkg pack /lk SECRET_KEY.lekb ...` を実行します。これにより、SECRET\_KEY.lekb ファイルに格納されているキーを使用して暗号化されたパッケージが作成されます。
3. パッケージのアップロード: XVC および EKB ファイルは通常どおり Partner Center にアップロードされます。LEKB および CEKB ファイルはアップロードされません。

`xbapp install` は、XBOX デブキットにパッケージを読み込むために必要な CEKB ファイルを自動的にインストールします。ツールベースのインストール以外のインストール シナリオ (ゲーム ディスク、外部ストレージ、コンソール間転送) をテストする場合は、`xbapp installkey` コマンドを使用して CEKB ファイルのみをインストールします。

<Warning>LEKB ファイルの内容はごく軽度に難読化されているだけです。LEKB ファイルへのアクセスを保護することによって、コンテンツ パッケージのセキュリティを確保するのはあなたの責任です。LEKB ファイルと `makepkg pack` によって出力されるコンテンツ パッケージ ファイルを所持する誰もが</Warning>
その内容を復号できます。

<Warning>CEKB ファイルの内容は、パッケージを任意のアクティブな XBOX デブキットに読み込むことを許可します。CEKB ファイルへのアクセスを保護することによって、コンテンツ パッケージのセキュリティを確保するのはあなたの責任です。CEKB ファイル、アクティブな XBOX デブキット、および `makepkg pack` によって出力されるコンテンツ パッケージ ファイルを所持する誰もが</Warning>
自分のデブキットにパッケージをインストールでき、パッケージを起動でき、xbcp でパッケージからファイルを取り出せます。

### 提出検証

MakePkg は、パッケージを作成した後、タイトル ファイルに対して自動的に [Submission Validator (SubmissionValidator.dll)](/build/core-features/common/packaging/subval/submissionvalidator) を実行します。Submission Validator の目標は、Microsoft の取り込み、提出、または認定プロセスの後半で、あるいは今後のコンテンツ更新でタイトルに問題を引き起こす可能性のあるエラーや問題を確認することです。Partner Center にアップロードするための署名済みパッケージを生成する前に、検出されたすべての問題を修正する必要があります。

提出検証プロセスは、失敗の性質と場所を詳述する XML ログ ファイルを生成します。プロセスはこのログ ファイルを、パッケージ ファイルの出力用に MakePkg の `/pd` パラメーターで指定された同じ場所に書き込みます。このログには失敗または警告が含まれる可能性があります。パッケージを Microsoft に提出する前に失敗に対処する必要があります。タイトルがポリシーと XBOX 要件 (XR) ガイダンスに準拠していることを確認するために、警告も是正することを検討してください。

パッケージを Partner Center にアップロードして取り込みプロセスのために提出すると、検証チェックが再度実行されます。このプロセスにより、タイトルが最新バージョンの Submission Validator を使用してチェックされ、可能な限り早く問題が検出されるようになります。

#### 提出検証テスト

| 提出および検証テスト               | 説明                                                                                                                                                            |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **外部ファイル**               | タイトルに禁止されているファイルが含まれていないことを検証します。禁止されているファイルには、ソースおよびデバッグ ファイル (例: \*.c、\*.cpp、\*.obj、\*.lib、\*.cs、\*.h)、および Game OS ボリュームに含まれる任意のシステム ファイルが含まれます。            |
| **MicrosoftGame.config** | MakePkg では実行されないさまざまな config チェック: ロゴおよびスタートアップ画面画像の解像度とビット深度。パッケージが適切な Mod サポートを持っているかチェックします (PC Desktop のみ)。                                               |
| **バイナリ スキャン**            | すべての .exe および .dll ファイルは、非リテール依存関係についてスキャンされます。マネージ コード バイナリは失敗を引き起こします (コンソールのみ)。検出されるその他の問題には、XBOX 以外の実行可能ファイル (コンソールのみ) と 32 ビット実行可能ファイル (コンソールのみ) が含まれます。 |

Microsoft が新しい問題を特定するにつれて、特定のテストは時間とともに進化します。Submission Validator のチェックに合格したことは、取り込みと認定のプロセス中にタイトルの提出に関して他の問題が発生しないことを示すものではありません。むしろ、その意図は、予測可能なエラーに起因する拒否の時間とコストを削減することのみです。加えて、Submission Validator は特定のセキュリティ関連の問題をチェックできますが、タイトルのセキュリティ テストと見なすべきではありません。

Submission Validator の最新バージョンは、XBOX Game Developer (XGD) サイトからダウンロードできます。このツールは XBOX One Software Development Kit のリリースとは異なるペースで進化する可能性があるため、提出プロセスで検証失敗による拒否を回避するために、最新バージョンを使用していることを確認してください。最新バージョンを入手するには、[XBOX Developer Downloads->XBOX One->Submission Validator](https://aka.ms/gdkdl) を参照してください。

Submission Validator の詳細については、GDK ドキュメントの [Submission Validator (SubmissionValidator.dll)](/build/core-features/common/packaging/subval/submissionvalidator) を参照してください。

検証プロセスに関する質問がある場合は、Microsoft アカウント担当者にお問い合わせください。

<a id="recommended_steps_for_packaging_during_development" />

## 開発中のパッケージングの推奨手順

開発中にパッケージを作成するには、次の手順を使用します。PC を対象とする場合は `xbapp` の代わりに `wdapp` を使用します。

1. テスト署名されたパッケージと開発 PC からの **xbapp install** を使用して、ローカルで反復します。

   **MakePkg.exe pack /f** *Mapfile* **/d** *LooseContentDir* **/pd** *OutputFolder*

   始めるには、[XBOX Developer Downloads](https://aka.ms/xgddl) を参照してください。

2. シェルから起動するか、**xbapp launch** を使用してタイトルを実行します。

   **xbapp install** *local-XVC-path* または **xbapp install** *http-URI*

   ストリーミング インストールの代替オプションをテストするには、この記事の後半にある [ストリーミング インストール パッケージのテスト](#testing-streaming-installation-packages-console) を参照してください。

3. ルート フォルダーで Blu-ray Disc に焼かれたテスト署名されたパッケージを使用して、光学ドライブからのタイトル インストールをテストします。ディスクを XBOX 開発キットに挿入した後、次のコマンドを実行します。

   **xbapp install** XO:\\*XVC-file-name*

4. テスト署名されたパッケージと同じパッケージング コマンドを使用して、最終提出を準備しますが、`/l` フラグを追加します。

<a id="testing_of_streaming_installation_packages" />

## ストリーミング インストール パッケージのテスト (PC)

`wdapp` コマンドを使用して、テスト PC にパッケージをインストールします。

<Note>現時点では、テスト MSIXVC パッケージはテスト PC 上の物理ドライブまたは Web サーバー上に存在する必要があります。将来の更新で、Universal Naming Convention (UNC) 共有からのインストールが追加される予定です。</Note>

詳細については、[PC 向けパッケージングのはじめに](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC) を参照してください。

## ストリーミング インストール パッケージのテスト (コンソール)

テスト署名されたストリーミング インストール パッケージのインストールを 4 つの方法でテストできます。

### 開発 PC からのストリーミング

開発 PC からのストリーミングは、スループット スロットリングをサポートしていません。インストールの速度は、開発 PC のプロセッサと I/O 特性、および開発 PC と開発キット間のネットワーク接続の帯域幅に依存します。機械式ハード ドライブを備えた現代の開発 PC からギガビット イーサネット接続経由で、300 Mbps (約 36 MiB/s) 以上の速度が期待できます。

**xbapp install** *dev-pc-path-to-XVC*

[コマンドラインからのインストール](/tools/tools-console/commandlinetools/xbapp#xbapp-install)

[XBOX Manager からのインストール](/tools/tools-console/xbom/manager-tool-managing-applications#deploying-apps)

### Web サーバーでパッケージをホストする

Web サーバーが帯域幅スロットリングの構成をサポートしている場合、パッケージを Web サーバーでホストすると、さまざまなネットワーク配信速度をシミュレートできます。XBOX One プラットフォームは、接続失敗と再試行ロジックを処理します。タイトルは、速度を除けば、インターネット ソースからインストールしたときと光ディスクからインストールしたときで同じように動作するはずです。

**xbapp install** *http-URI-to-package*

[コマンドラインからのインストール](/tools/tools-console/commandlinetools/xbapp#xbapp-install)

[XBOX Manager からのインストール](/tools/tools-console/xbom/manager-tool-managing-applications#deploying-apps)

### パッケージをディスクに焼き、コマンドラインからインストールする

ルート ディレクトリに XVC を含む光ディスクを焼き、次のコマンドを使用してパッケージをインストールします。

**xbapp install** XO:\\*XVC-file-name*

### パッケージをディスクに焼き、シェル経由でインストールする

パッケージを含む MSXC という名前のフォルダーを含む光ディスクを焼きます。

実行中の開発キットにディスクを挿入します。シェルは自動的にタイトルのインストールを開始し、開発キットは起動セットのインストール後に通知を表示し、タイトルを起動できるようになります。

<a id="best_practices" />

## ベスト プラクティス

### サブファイル コンテンツ更新の使用

コンテンツ更新のサイズを削減するサブファイル コンテンツ更新を使用します。将来の最適なコンテンツ更新を確保するため、パッケージ レイアウトを作成します。

最適な更新のためのパッケージ作成に関する詳細は、[コンテンツ更新のベスト プラクティス](/build/core-features/common/packaging/packaging-updates) を参照してください。

### XBOX 要件 034 (XR-034: ストリーミング インストール初期プレイ マーカー)

初期プレイヤー マーカーを含めることは任意ですが、強く推奨されます。これにより、ユーザーはタイトルが完全にインストールされる前に、バックグラウンドでインストールを継続しながらタイトルを実行できます。[XR-034](https://learn.microsoft.com/build/store/policies/Console/certification-requirements#content-packages-and-updates): ストリーミング インストール初期プレイヤー マーカーに従って、初期プレイ マーカーを含むタイトルは、初期プレイ マーカーから起動されたときにゲームプレイ体験を提供する必要があります。

### タイトルのテスト

タイトルがさまざまなソースから、さまざまな速度でインストールされている間に、タイトルをテストします。

### 最新の Submission Validator を使用する

常に最新バージョンの Submission Validator を使用してください。

Submission Validator の最新バージョンは、[XBOX Developer Downloads->XBOX One->Submission Validator](https://aka.ms/gdkdl) から入手できます。

<a id="open-data-connections" />

### 開いているデータ接続によるパッケージングの失敗

`xbapp install /w` を使用してパッケージをインストールする場合、または **XBOX Manager** が **Keep data connection open** オプション (Intelligent Delivery および chunk-on-demand シナリオで使用) を有効にしてパッケージをインストールする場合、インストールが完了した後もコンソールと PC 上のパッケージ ファイルの間のデータ パイプが開いたままになります。この開いた接続はパッケージ ファイルをロックします。

このパイプが開いている間にタイトルを再ビルドまたは再パッケージ化しようとすると、`makepkg` はロックされたパッケージ ファイルに書き込めないため、共有違反で失敗します。

**この問題を解決するには、再ビルドの前に開いているデータ接続を閉じます。**

* **XBOX Manager**: XBOX Manager アプリで、インストールされているパッケージを見つけて **Keep data connection open** オプションのチェックを外すか、そのオプションを有効にせずにパッケージをアンインストールして再インストールします。
* **xbapp install**: インストール後にパイプを開いたままにする必要がない場合は、`/w` フラグを省略します。開発中のテストで、タイトルが実行時に追加のチャンクを要求する必要がある場合にのみ `/w` を使用します。
* **XBOX Manager を閉じる**: XBOX Manager を完全に閉じると、パッケージ ファイルに対して保持している開いているファイル ハンドルが解放されます。

<Tip>パッケージ ファイルを固定の出力ディレクトリに出力するエンジン統合 (Unreal Engine の XBOX プラットフォーム ツールなど) を使用している場合は、新しいビルドをトリガーする前に XBOX Manager がファイルを解放していることを確認してください。ビルド間で出力ディレクトリを移動することも、競合を避けるもう 1 つの方法です。</Tip>

<a id="resources_and_guidance" />

## リソースとガイダンス

詳細については、次の記事を参照してください。

* System > Overviews > [ストリーミング インストールと Intelligent Delivery: 概要](/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery)
* System > Overviews > Streaming Installation > [チャンクの動的な並べ替え](/build/core-features/common/packaging/packaging-chunkreordering)
* System > Overviews > Streaming Installation > [ストリーミング インストール: ステータス](/build/core-features/common/packaging/packaging-installstatus)
* Test, Automation, and Publishing > Tools > Streaming Installation > [デプロイ パッケージ スキーマ](/build/core-features/common/packaging/deployment/atoc-deployment-schema)
* Test, Automation, and Publishing > Tools > Streaming Installation > [Make Package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg)

<a id="see_also" />

## 関連項目

[MicrosoftGame.config](/build/core-features/common/game-config/MicrosoftGameConfig-toc)
[Submission Validator (SubmissionValidator.dll)](/build/core-features/common/packaging/subval/submissionvalidator)
[Submission Validator の品質テスト](/build/core-features/common/packaging/subval/submissionvalidator-tests)
[XBOX Manager: アプリとファイルの管理](/tools/tools-console/xbom/manager-tool-managing-applications#deploying-apps)


## Related topics

- [デプロイメント パッケージ スキーマとストリーミング インストール ツール](/ja-jp/build/core-features/common/packaging/deployment/index.md)
- [FMA XR-123: ゲームプレイ中のアドオンのインストールとアンロック](/ja-jp/publishing/certification/fma/xr-123.md)
- [ストリーミング インストールと Intelligent Delivery: 概要](/ja-jp/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [Submission Validator (SubmissionValidator.dll)](/ja-jp/build/core-features/common/packaging/subval/submissionvalidator.md)
- [Submission Validator メッセージ](/ja-jp/build/core-features/common/packaging/subval/submissionvalidator-messages.md)
