アプリをストリーミング インストールの準備にするには、コンテンツ グループ マップを作成する必要があります。 この記事は、コンテンツ グループ マップの作成と変換の詳細を説明しながら、途中でヒントやテクニックを提供する際に役立ちます。
ソース コンテンツ グループ マップの作成
SourceAppxContentGroupMap.xml ファイルを作成し、Visual Studio または MakeAppx.exe ツールを使用して、このファイルを最終的なバージョン (AppxContentGroupMap.xml) に変換する必要があります。
AppxContentGroupMap.xmlを最初から作成して手順をスキップすることもできますが、SourceAppxContentGroupMap.xmlを作成して変換することをお勧めします (通常は簡単です)。これは、AppxContentGroupMap.xmlではワイルドカードが許可されていないためです (本当に役立ちます)。
アプリ ストリーミング インストールが有益な単純なシナリオについて説明します。
ゲームを作成したが、最終的なアプリのサイズが 100 GB を超えているとします。 Microsoft Store からダウンロードするには時間がかかり、不便な場合があります。 アプリ ストリーミング インストールを使用する場合は、アプリのファイルをダウンロードする順序を指定できます。 最初に重要なファイルをダウンロードするようにストアに指示することで、ユーザーはアプリに早く参加できるようになりますが、他の重要でないファイルはバックグラウンドでダウンロードされます。
注
アプリ ストリーミング インストールの使用は、アプリのファイル組織に大きく依存します。 アプリのファイルのセグメント化を簡単にするために、できるだけ早くアプリのストリーミング インストールに関してアプリのコンテンツ レイアウトを検討することをお勧めします。
まず、 SourceAppxContentGroupMap.xml ファイルを作成します。
詳細を確認する前に、単純で完全な SourceAppxContentGroupMap.xml ファイルの例を次に示します。
<?xml version="1.0" encoding="utf-8"?>
<ContentGroupMap xmlns="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap"
xmlns:s="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap">
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
</ContentGroupMap>
コンテンツ グループ マップには、 必要な コンテンツ グループを含む必須セクションと、複数の自動コンテンツ グループを含むことができる 自動 セクションの 2 つの主要なコンポーネントがあります。
必要なコンテンツ グループ
必要なコンテンツ グループは、<Required>のSourceAppxContentGroupMap.xml要素内の 1 つのコンテンツ グループです。 必要なコンテンツ グループには、最小限のユーザー エクスペリエンスでアプリを起動するために必要なすべての重要なファイルが含まれている必要があります。 .NET ネイティブ コンパイルにより、すべてのコード (アプリケーション実行可能ファイル) が必要なグループの一部である必要があり、資産やその他のファイルは自動グループに残ります。
たとえば、アプリがゲームの場合、必要なグループには、メイン メニューまたはゲームのホーム画面で使用されるファイルが含まれる場合があります。
元の SourceAppxContentGroupMap.xml サンプル ファイルのスニペットを次に示します。
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
ここで注意すべき重要な点がいくつかあります。
-
<ContentGroup>要素内の<Required>には、"Required" という名前を付ける必要があります。この名前は、必要なコンテンツ グループ専用に予約されており、最終的なコンテンツ グループ マップ内の他の<ContentGroup>では使用できません。 -
<ContentGroup>は 1 つだけです。 重要なファイルのグループは 1 つしかないため、これは意図的なものです。 - この例のファイルは 1 つの
.exeファイルです。 必要なコンテンツ グループは 1 つのファイルに制限されず、複数のファイルが存在する場合があります。
このファイルの書き込みを始める簡単な方法は、お気に入りのテキスト エディターで新しいページを開き、ファイルの [名前を付けて保存] をアプリのプロジェクト フォルダーに簡単に行い、新しく作成したファイルに名前を付 SourceAppxContentGroupMap.xml。
Von Bedeutung
C++ アプリを開発している場合は、 SourceAppxContentGroupMap.xmlのファイル プロパティを調整する必要があります。
Content プロパティを true に設定し、File Type プロパティを XML ファイルに設定します。
SourceAppxContentGroupMap.xmlを作成するときは、ファイル名にワイルドカードを使用すると便利です。詳細については、「ワイルドカードを使用するためのヒントとテクニック」セクションを参照してください。
Visual Studio を使用してアプリを開発した場合は、必要なコンテンツ グループにこれを含めるのが推奨されます。
<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>
単一のワイルドカード ファイル名を追加すると、アプリの実行可能ファイルや DLL など、Visual Studio からプロジェクト ディレクトリに追加されたファイルが含まれます。 WinMetadata フォルダーとプロパティ フォルダーには、Visual Studio によって生成される他のフォルダーが含まれます。 Assets ワイルドカードは、アプリをインストールするために必要なロゴと SplashScreen イメージを選択することです。
ファイル構造のルートにあるダブル ワイルドカード "**" を使用してプロジェクト内のすべてのファイルを含めることはできません。これは、 SourceAppxContentGroupMap.xml を最終的な AppxContentGroupMap.xmlに変換しようとすると失敗するためです。
また、フットプリント ファイル (AppxManifest.xml、AppxSignature.p7x、resources.pri など) をコンテンツ グループ マップに含めないようにすることも重要です。 指定したワイルドカード ファイル名のいずれかにフットプリント ファイルが含まれている場合、それらは無視されます。
自動コンテンツ グループ
自動コンテンツ グループは、ユーザーが既にダウンロードしたコンテンツ グループを操作している間にバックグラウンドでダウンロードされるアセットです。 これらには、アプリの起動に不可欠ではない追加のファイルが含まれています。 たとえば、自動コンテンツ グループを異なるレベルに分割し、各レベルを個別のコンテンツ グループとして定義できます。 必要なコンテンツ グループ セクションで説明したように、.NET ネイティブ コンパイルのため、すべてのコード (アプリケーション実行可能ファイル) が必要なグループの一部である必要があり、自動グループの資産やその他のファイルは残ります。
SourceAppxContentGroupMap.xml例の自動コンテンツ グループを詳しく見てみましょう。
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
自動グループのレイアウトは、必要なグループとほとんど似ていますが、いくつかの例外があります。
- 複数のコンテンツ グループがあります。
- 自動コンテンツ グループには、必要なコンテンツ グループ用に予約されている "必須" という名前を除き、一意の名前を付けることができます。
- 自動コンテンツ グループには、必要なコンテンツ グループ のファイルを 含めることはできません。
- 自動コンテンツ グループには、他の自動コンテンツ グループ内にあるファイルを含めることができます。 ファイルは 1 回だけダウンロードされ、ファイルを含む最初の自動コンテンツ グループと共にダウンロードされます。
ワイルドカードを使用するためのヒントとテクニック
コンテンツ グループ マップのファイル レイアウトは、常にプロジェクトのルート フォルダーに対して相対的です。
この例では、両方の <ContentGroup> 要素内でワイルドカードを使用して、1 つのファイル レベル "Assets\Level2" または "Assets\Level3" 内のすべてのファイルを取得します。より深いフォルダー構造を使用している場合は、二重ワイルドカードを使用できます。
<ContentGroup Name="Level2">
<File Name="Assets\Level2\**"/>
</ContentGroup>
ファイル名のテキストでワイルドカードを使用することもできます。 たとえば、"Level2" を含むファイル名を持つ "Assets" フォルダー内のすべてのファイルを含める場合は、次のように使用できます。
<ContentGroup Name="Level2">
<File Name="Assets\*Level2*"/>
</ContentGroup>
SourceAppxContentGroupMap.xml を AppxContentGroupMap.xml に変換する
SourceAppxContentGroupMap.xmlを最終的なバージョンに変換するには、AppxContentGroupMap.xml、Visual Studio 2017 または MakeAppx.exe コマンド ライン ツールを使用できます。
Visual Studio を使用してコンテンツ グループ マップを変換するには:
- プロジェクト フォルダーに
SourceAppxContentGroupMap.xmlを追加する -
SourceAppxContentGroupMap.xmlのビルド アクションを [プロパティ] ウィンドウの "AppxSourceContentGroupMap" に変更する - ソリューション エクスプローラーでプロジェクトを右クリックします
- [ストア] -> [コンテンツ グループ マップ ファイルの変換] に移動します
Visual Studio でアプリを開発していない場合、またはコマンド ラインを使用するだけの場合は、 MakeAppx.exe ツールを使用して SourceAppxContentGroupMap.xmlを変換します。
単純な MakeAppx.exe コマンドは次のようになります。
MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\
/s オプションは、 SourceAppxContentGroupMap.xmlへのパスを指定し、/f AppxContentGroupMap.xmlへのパスを指定します。 最後のオプション /d は、ファイル名のワイルドカードを展開するために使用するディレクトリを指定します。この場合は、アプリ プロジェクト ディレクトリです。
MakeAppx.exeで使用できるオプションの詳細については、コマンド プロンプトを開き、MakeAppx.exe に移動して次のように入力します。
MakeAppx convertCGM /?
これですべて揃って、アプリの最終的な AppxContentGroupMap.xml が準備できました! アプリが Microsoft Store に完全に対応する前に、さらに多くのことを行う必要があります。 ストリーミング インストールをアプリに追加する方法の詳細については、 このページを参照してください。