> ## 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.

# ストリーミング インストール: ステータス

> ストリーミング インストール: ステータス

インストールの進行中にユーザーがプレイしている間、タイトルはゲームプレイをサポートするために必要なコンテンツを追跡し、必要なコンテンツがインストールされているかどうかを確認する必要があります。タイトルはシステム API を使用して、ハード ドライブ上のチャンクのステータスと、ダウンロード中のコンテンツの進行状況を照会できます。

まだインストールされていないコンテンツが必要な部分のゲームプレイにユーザーが入ろうとした場合、タイトルはダイアログ ボックスまたはプログレス バーを表示してこれをユーザーに通知し、インストールの進行状況を伝える必要があります。また、タイトルは常に進行状況画面から離れる選択肢をユーザーに提供する必要があり、理想的には、インストール中にコンテンツを体験させるようにします。例を以下に示します。

シューティング タイトルのシングル プレイヤー キャンペーンをプレイ中、ユーザーはキャンペーンの次のエリアをサポートするコンテンツがまだインストールされていない地点に到達します。優れたユーザー エクスペリエンスは、コンテンツ取得のステータスを示すプログレス バーと、マルチプレイヤー ゲームに参加する選択肢を表示することです。この選択肢は、タイトルの起動に必要なデータの一部としてマルチプレイヤー コンテンツのサブセットを含めることで有効になります。

タイトルはインストールを監視および検証でき、インストール完了時にアラートを受け取ることができます。パッケージ全体またはパッケージのチャンクのサブセットのインストールを監視できます。インストール モニターを作成するには、[XPackageCreateInstallationMonitor](/reference/system/xpackage/functions/xpackagecreateinstallationmonitor) を使用します。次のいずれかについてのモニターであることを指定します。

* パラメーターとしてセレクターを指定することによる特定のチャンク セット
* セレクターを 0 個指定することによるパッケージ全体

インストール モニターを作成した後、次のいずれかのハンドラーを登録します。

* [XPackageRegisterInstallationProgressChanged](/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged) を使用する *インストール進行状況変更* イベント
* [XPackageRegisterPackageInstalled](/reference/system/xpackage/functions/xpackageregisterpackageinstalled) を使用する *パッケージ インストール済み* イベント

*パッケージ インストール済み* イベントは、パッケージ全体のインストールが完了したときを示します。*進行状況変更* イベントを使用すると、インストールの進行状況を監視できます。*進行状況変更* イベントもインストールが完了したときを示すため、すでに *進行状況変更* ハンドラーを登録している場合は、*パッケージ インストール済み* ハンドラーを登録する必要はありません。例を以下に示します。

ゲームは起動マーカーを実装しているため、完全にインストールされる前に実行できます。ゲームは、どの部分がインストールされているか、どの部分がまだインストールされていないかを知る必要があります。利用可能なトラックをユーザーに提示するには、特定のトラック名を持つレーストラックに関連付けられたチャンクがいつインストールされたかをゲームが知る必要があります。

```cpp theme={null}
class GameTrackMonitor 
{ 
public: 
 
    HRESULT StartMonitoring(XTaskQueueHandle queue, const char* trackName) 
    { 
        char id[PACKAGE_IDENTIFIER_MAX_LENGTH]; 
 
        XPackageChunkSelector selector; 
        selector.type = XPackageChunkSelectorType::Tag; 
        selector.tag = trackName; 
 
        RETURN_IF_FAILED(XPackageGetCurrentProcessPackageIdentifier(_countof(id), id)); 
 
        XPackageInstallationMonitorHandle monitor; 
 
        RETURN_IF_FAILED(XPackageCreateInstallationMonitor( 
            id,         // Identity to monitor. 
            1,          // Number of selectors. 
            &selector,  // Selectors. 
            1000,       // Resolution of monitor in ms. 
            queue,      // Queue where updates are performed. 
            &monitor)); 
 
        XTaskQueueRegistrationToken token; 
 
        HRESULT hr = XPackageRegisterInstallationProgressChanged( 
            monitor, 
            this, 
            [](void *context, XPackageInstallationMonitorHandle monitor) 
        { 
            GameTrackMonitor* pthis = static_cast<GameTrackMonitor*>(context); 
            XPackageInstallationProgress progress; 
 
            XPackageGetInstallationProgress(monitor, &progress); 
            pthis->DrawProgress(progress); 
            if (progress.completed) 
            { 
                pthis->TrackReady(); 
                XPackageCloseInstallationMonitorHandle(monitor); 
            } 
        }, &token); 
 
        if (FAILED(hr)) 
        { 
            XPackageCloseInstallationMonitorHandle(monitor); 
        } 
 
        return hr; 
    } 
 
private: 
 
    void DrawProgress(const XPackageInstallationProgress& progress) 
    { 
        // ... 
    } 
 
    void TrackReady() 
    { 
        // ... 
    } 
};
```

## リファレンス API ドキュメント

* [XPackage (API の内容)](/reference/system/xpackage/xpackage_members)
  * 関数
    * [XPackageCreateInstallationMonitor](/reference/system/xpackage/functions/xpackagecreateinstallationmonitor)
    * [XPackageRegisterInstallationProgressChanged](/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged)
    * [XPackageRegisterPackageInstalled](/reference/system/xpackage/functions/xpackageregisterpackageinstalled)


## Related topics

- [タイトル パッケージング、更新、およびストリーミング インストールのテスト](/ja-jp/build/core-features/common/packaging/title-packaging-streaming-install-testing.md)
- [ストリーミング インストールと Intelligent Delivery: 概要](/ja-jp/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [XPackageCreateInstallationMonitor](/ja-jp/reference/system/xpackage/functions/xpackagecreateinstallationmonitor.md)
- [チャンクの動的な並べ替え](/ja-jp/build/core-features/common/packaging/packaging-chunkreordering.md)
- [ストリーミング インストール: デバッグ](/ja-jp/build/core-features/common/packaging/packaging-debugging.md)
