アセット パッケージの概要Introduction to asset packages

重要

Microsoft Store にアプリを提出する予定がある場合、Windows 開発者向けサポートに連絡してアセット パッケージを使う承認を得る必要があります。If you intend to submit your app to the Store, you need to contact Windows developer support and get approval to use asset packages.

アセット パッケージは、アプリケーションの共通ファイルの一元的な場所として機能するパッケージの種類です。これにより、そのアーキテクチャ パッケージ全体で重複するファイルが事実上不要になります。Asset packages are a type of package that act as a centralized location for an application’s common files – effectively eliminating the necessity for duplicated files throughout its architecture packages. アセット パッケージは、どちらもアプリの実行に必要な静的コンテンツが含まれるように設計されているという点でリソース パッケージと似ていますが、ユーザーのシステム アーキテクチャ、言語、表示スケールに関係なくすべてのアセット パッケージがダウンロードされるという点で異なります。Asset packages are similar to resource packages in that they are both designed to contain static content needed for your app to run, but different in that all asset packages are always downloaded, regardless of the user’s system architecture, language, or display scale.

アセット パッケージ バンドルの図

アセット パッケージには、すべてのアーキテクチャ、言語、およびスケールにとらわれないファイルが含まれているため、アセット パッケージを活用することによりパッケージ化されるアプリ サイズ全体が減少します (重複するファイルがなくなるため)。この結果、大きいアプリのローカル開発ディスク領域の使用量を管理しやすく、アプリのパッケージを全体的に管理しやすくなります。Because asset packages contain all the architecture, language, and scale agnostic files, leveraging asset packages results in a reduced overall packaged app size (since these files are no longer duplicated), helping you manage local development disk space usage for large apps and manage your app’s packages in general.

アセット パッケージが公開に与える影響How do asset packages affect publishing?

アセット パッケージの最も明確な利点は、パッケージ アプリのサイズが小さくなることです。The most obvious benefit of asset packages is the reduced size of packaged apps. アプリ パッケージが小さい方が、App Store が処理するファイルが少なくなるためアプリの公開プロセスにかかる時間が短縮されます。しかし、これはアセット パッケージの最も重要な利点ではありません。Smaller app packages speed up the app’s publishing process by letting the Store process less files; however this is not the most important benefit of asset packages.

アセット パッケージを作成するとき、パッケージの実行を許可するかどうかを指定できます。When an asset package is created, you can specify whether the package should be allowed to execute. アセット パッケージには、アーキテクチャにとらわれないファイルのみを含める必要があります。一般に、.dll ファイルや .exe ファイルは含まれないため、アセット パッケージの実行は通常必要ありません。Since asset packages should contain only architecture agnostic files, they generally don't contain any .dll or .exe files, so for asset packages typically don't need to execute. この違いが重要なのは、公開プロセス中、マルウェアが含まれていないことを確認するためにすべての実行可能パッケージをスキャンする必要があり、大きいパッケージの方がこのスキャン プロセスに時間がかかるからです。The importance of this distinction is that during the publishing process, all executable packages must be scanned to ensure that they do not contain malware, and this scanning process takes longer for larger packages. ただし、パッケージが非実行可能として指定されている場合、アプリのインストールにより、このパッケージに含まれているファイルを実行できないことが確証されます。However, if a package is designated as non-executable, the installation of the app will ensure that files contained in this package cannot be executed. これにより、パッケージ全体のスキャンが確実に不要になり、アプリの公開時 (更新時も同様) のマルウェア スキャンにかかる時間が大幅に短縮されます。したがって、アセット パッケージを使うアプリの公開にかかる時間が大幅に短縮されます。This guarantee eliminates the need for a complete package scan and will greatly reduce the malware scan time during the publication of the app (and for updates too) - thus making publishing significantly faster for apps that use asset packages. この公開の利点を得るには、 フラットバンドルアプリパッケージ も使用する必要があります。これは、ストアが各 .appx または msix パッケージファイルを並行して処理できるようにするためです。Note that flat bundle app packages must also be used to get this publishing benefit since this is what allows the Store to process each .appx or .msix package file in parallel.

アセット パッケージを使う必要があるかどうかShould I use asset packages?

アプリのファイル構造を更新してアセット パッケージを活用すると、パッケージ サイズの減少と無駄のない開発サイクルという具体的な利点が得られます。Updating the file structure of your app to leverage the use of asset packages can yield tangible benefits: reduced package size and leaner development iterations. アーキテクチャ パッケージすべてに大量の共通ファイルが含まれている場合や、アプリの大部分が非実行可能ファイルで構成されている場合、余分な時間はかかりますがアセット パッケージの使用に移行することを強くお勧めします。If your architecture packages all contain significant amount of files in common or if the bulk of your app is made up of non-executing files, it is highly recommended that you invest the extra time to convert to using asset packages.

ただし、アセット パッケージはアプリ コンテンツの選択性を実現するための手段ではない点に注意してください。However, it should be cautioned that asset packages are not a means to achieve app content optionality. アセット パッケージ ファイルは選択可能ではなく、ターゲット デバイスのアーキテクチャ、言語、スケールに関係なく常にダウンロードされます。アプリでサポートするオプション コンテンツはすべてオプション パッケージを使って実装する必要があります。Asset package files are non-optional and will always be downloaded regardless of the target device’s architecture, language, or scale - any optional content that you want your app to support should be implemented using optional packages.

アセット パッケージを作成する方法How to create an asset package

アセット パッケージを作成するには、パッケージ レイアウトを使うのが最も簡単です。The easiest way to create asset packages is using the packaging layout. ただし、アセット パッケージは MakeAppx.exe を使って手動で作成することもできます。However, asset packages can also be created manually using MakeAppx.exe. アセット パッケージに含めるファイルを指定するには、"マッピング ファイル" を作成する必要があります。To specify which files to include in the asset package, you will need to create a “mapping file”. この例では、アセット パッケージ内のファイルは "Video.mp4" だけですが、アセット パッケージのすべてのファイルがここに一覧表示されます。In this example, the only file in the asset package is "Video.mp4”, but all the asset package’s files should be listed here. アセット パッケージでは、ResourceMetadataResourceDimensions 指定子は省略される点に注意してください (リソース パッケージのマッピング ファイルと比較)。Note that the ResourceDimensions specifier in ResourceMetadata is omitted for asset packages (as compared to a mapping file for resource packages).

[ResourceMetadata]
"ResourceId"        "Videos"

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

これらのコマンドのいずれかを使用して、MakeAppx.exe (MSIX および .appx) を使用して資産パッケージを作成します。Use one of these commands to create the asset package using MakeAppx.exe (for MSIX and .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 (ロゴ ファイル) で参照されるすべてのファイルをアセット パッケージに移動することはできない点に注意してください。これらのファイルはアーキテクチャ パッケージ間で重複している必要があります。It should be noted here that all of the files referenced in the AppxManifest (the logo files) cannot be moved into asset packages – these files must be duplicated across architecture packages.

アセット パッケージに resources.pri を含めることはできません。MRT を使ってアセット パッケージ ファイルにアクセスすることはできません。Asset packages should also not contain a resources.pri; MRT cannot be used to access asset package files. アセット パッケージ ファイルにアクセスする方法とアセット パッケージではアプリを NTFS ドライブにインストールする必要がある理由については、「アセット パッケージとパッケージ圧縮を使った開発」をご覧ください。To learn more about how to access asset package files and why asset packages require your app to be installed to an NTFS drive, see Developing with asset packages and package folding.

アセット パッケージの実行を強化するかどうかを制御するには、AppxManifest の Properties 要素で uap6:AllowExecution を使うことができます。トップ レベルの Package 要素に uap6 も追加して、以下のようにする必要があります。To control whether an asset package is allowed to execute or not, you can use uap6:AllowExecution in the Properties element of the AppxManifest You must also add uap6 to the top level Package element to become the following:

<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 に設定します。If not specified, the default value for AllowExecution is true – set it to false for asset packages with no executables to make publishing faster.