Share via


アセット パッケージの概要

重要

アプリを Store に提出する場合、Windows デベロッパー サポートに連絡し、アセット パッケージを使用するための承認を得る必要があります。

アセット パッケージは、アプリケーションの共通ファイルに中央の場所として機能するパッケージの一種であり、アーキテクチャ パッケージ全体で複製ファイルの必要性を効果的に排除します。 アセット パッケージは、リソース パッケージに似ており、どちらもアプリの実行に必要な静的コンテンツを含むように設計されているという点で該当しますが、ユーザーのシステム アーキテクチャ、言語、表示規模とは関係なく、すべてのアセット パッケージが常にダウンロードされるという点で異なります。

Asset Package Bundle Diagram

アセット パッケージにはアーキテクチャ、言語、規模に依存しないファイルがすべて含まれているため、アセット パッケージを利用すると、パッケージ化されたアプリの全体的なサイズが小さくなります (これらのファイルは複製されなくなったため)。これにより、大規模なアプリのローカル開発ディスク領域の使用量を管理してアプリパッケージ全般を管理できるようになります。

アセット パッケージが公開に与える影響とは?

アセット パッケージの最も明らかな利点は、パッケージ化されたアプリのサイズの縮小です。 小さいアプリ パッケージは Store が処理するファイルが少なくなることにより、アプリの公開処理が高速化されます。ただし、これはアセット パッケージ化の最も重要な利点ではありません。

アセット パッケージが作成されたとき、パッケージの実行を許可するかどうかを指定できます。 アセット パッケージにはアーキテクチャに依存しないファイルのみを含める必要があるため、一般的に .dll または .exe ファイルが含まれていません。したがって、アセット パッケージは通常、実行する必要はありません。 この区別の重要性は、公開処理中にすべての実行可能パッケージをスキャンし、マルウェアが含まれていないことを確認する必要があり、さらにこのスキャン プロセスは大規模なパッケージには時間がかかるということです。 ただし、パッケージが非実行可能として指定されている場合、アプリのインストールにより、このパッケージに含まれるファイルを実行できないようにします。 この保証により、完全なパッケージ スキャンが不要になり、アプリの公開中(更新プログラムも同様)のマルウェア スキャン時間が大幅に短縮されるため、アセット パッケージを使用するアプリの公開が大幅に高速化されます。 この公開上の利点を実現するには、フラット バンドル アプリ パッケージも使用する必要があります。これは、Microsoft Store が各 .appx または .msix パッケージ ファイルを並行して処理できるようにするためです。

アセット パッケージを使用する必要はありますか?

アプリのファイル構造を更新してアセット パッケージを活用することにより、パッケージ サイズの減少と効率的な開発反復という具体的な利点が得られます。 アーキテクチャ パッケージがすべて大量のファイルが含まれているという共通点があるか、アプリの大部分が実行されないファイルで構成されている場合、アセット パッケージの使用に変換するために余分な時間を費やすことを強く推奨します。

ただし、アセット パッケージはアプリ コンテンツのオプション性を実現するための手段ではないことに注意する必要があります。 アセット パッケージ ファイルはオプションではなく、対象デバイスのアーキテクチャ、言語、規模とは関係なく、常にダウンロードされます。アプリがサポートするオプションのコンテンツは、オプション パッケージを使用して実装する必要があります。

アセット パッケージを作成する方法

アセット パッケージを作成する最も簡単な方法は、パッケージ レイアウトを使用することです。 ただし、「MakeAppx.exe」を使用してアセット パッケージを手動で作成することもできます。 アセット パッケージに含めるファイルを指定するには、"マッピング ファイル"を作成する必要があります。 この例では、アセット パッケージ内の唯一のファイルは「Video.mp4」ですが、すべてのアセット パッケージのファイルをこちらに一覧表示されています。 ResourceMetadataResourceDimensions 指定子はアセット パッケージ(リソース パッケージのマッピング ファイルと比較して)では省略されることに注意してください。

[ResourceMetadata]
"ResourceId"        "Videos"

[Files]
"Video.mp4"         "Video.mp4"

MakeAppx.exe (MSIX および .appx の場合) を使用してアセット パッケージを作成するには、次のコマンドのどちらかを使用します。

MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.appx
MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.msix

ここでは、AppxManifest (ロゴ ファイル)で参照されているすべてのファイルをアセット パッケージに移動できないことに注意してください。これらのファイルはアーキテクチャ パッケージ間で複製する必要があります。

アセット パッケージには resources.pri も含まない必要があります。MRT を使用してアセット パッケージ ファイルにアクセスすることはできません。 アセット パッケージ ファイルにアクセスする方法と、アプリを NTFS ドライブにインストールすることをアセット パッケージが必須とする理由の詳細については、「アセット パッケージとパッケージ フォールディングを使用した開発」を参照してください。

アセット パッケージの実行を許可するかどうかを管理するには、AppxManifest の「プロパティ」要素で「uap6:AllowExecution」を使用できます。次のような内容を実現するには、最上位の「パッケージ」要素に「uap6」を追加する必要があります。

<Package IgnorableNamespaces="uap uap6" 
xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" 
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

指定しない場合、「AllowExecution」の既定値は「true」です。実行可能ファイルのないアセット パッケージの場合は「false」に設定し、公開が高速化されます。