Introduction aux packages d’actifsIntroduction to asset packages

Important

Si vous envisagez de soumettre votre application au Windows Store, vous devez contacter le support technique pour les développeurs et recevoir une approbation pour utiliser les packages d’actifs.If you intend to submit your app to the Store, you need to contact Windows developer support and get approval to use asset packages.

Les packages de ressources sont un type de package qui sert d’emplacement centralisé pour les fichiers communs d’une application, ce qui élimine la nécessité de dupliquer des fichiers dans ses packages d’architecture.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. Les packages de ressources sont similaires aux packages de ressources dans le sens où ils sont tous deux conçus pour contenir du contenu statique nécessaire à l’exécution de votre application, mais différents dans le sens où tous les packages de ressources sont toujours téléchargés, quelle que soit l’architecture système, la langue ou l’échelle d’affichage de l’utilisateur.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.

Diagramme d’ensemble de packages d’actifs

Étant donné que les packages de ressources contiennent l’ensemble des fichiers d’architecture, de langue et de mise à l’échelle, l’exploitation des packages de ressources entraîne une réduction de la taille globale de l’application empaquetée (puisque ces fichiers ne sont plus dupliqués), ce qui vous permet de gérer l’utilisation de l’espace disque du développement local pour des applications volumineuses et de gérer les packages deBecause 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.

Comment les packages d’actifs affectent-ils la publication ?How do asset packages affect publishing?

L’avantage le plus évident des packages d’actifs est la réduction de la taille des applications empaquetées.The most obvious benefit of asset packages is the reduced size of packaged apps. Les packages d’application plus petits accélèrent le processus de publication de l’application en laissant le processus de stockage moins de fichiers ; Toutefois, ce n’est pas l’avantage majeur des packages de ressources.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.

Lorsqu’un package de ressources est créé, vous pouvez spécifier si le package doit être autorisé à s’exécuter.When an asset package is created, you can specify whether the package should be allowed to execute. Étant donné que les packages de ressources ne doivent contenir que des fichiers indépendants de l’architecture, ils ne contiennent généralement pas de fichiers. dll ou. exe. par conséquent, pour les packages d’actifs, il n’est généralement pas nécessaire de les exécuter.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. L’importance de cette distinction est que, pendant le processus de publication, tous les packages exécutables doivent être analysés pour s’assurer qu’ils ne contiennent pas de programmes malveillants, et ce processus d’analyse prend plus de temps pour les packages volumineux.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. Toutefois, si un package est désigné comme non exécutable, l’installation de l’application permet de s’assurer que les fichiers contenus dans ce package ne peuvent pas être exécutés.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. Cette garantie élimine la nécessité d’une analyse complète des packages et réduit considérablement le temps d’analyse des logiciels malveillants au cours de la publication de l’application (et pour les mises à jour également), ce qui rend la publication beaucoup plus rapide pour les applications qui utilisent des packages d’actifs.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. Notez que les packages d’application de regroupement plat doivent également être utilisés pour bénéficier de cet avantage de publication puisque c’est ce qui permet au magasin de traiter chaque fichier de package. AppX ou. msix en parallèle.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.

Dois-je utiliser des packages d’actifs ?Should I use asset packages?

La mise à jour de la structure de fichiers de votre application pour tirer parti de l’utilisation de packages de ressources peut entraîner des avantages tangibles : réduction de la taille des packages et des itérations de développement plus légères.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. Si vos packages d’architecture contiennent tous un volume important de fichiers en commun ou si la majeure partie de votre application est constituée de fichiers non exécutés, il est vivement recommandé d’investir le temps supplémentaire nécessaire pour passer à l’utilisation des packages de ressources.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.

Toutefois, il convient de faire attention à ce que les packages d’actifs ne constituent pas un moyen d’obtenir un caractère facultatif pour le contenu de l’application.However, it should be cautioned that asset packages are not a means to achieve app content optionality. Les fichiers de package de ressources ne sont pas facultatifs et sont toujours téléchargés indépendamment de l’architecture, de la langue ou de l’échelle de l’appareil cible. le contenu facultatif que vous souhaitez que votre application prenne en charge doit être implémenté à l’aide de packages facultatifs.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.

Comment créer un package de ressourcesHow to create an asset package

Le moyen le plus simple de créer des packages d’actifs consiste à utiliser la disposition de Packaging.The easiest way to create asset packages is using the packaging layout. Toutefois, les packages de ressources peuvent également être créés manuellement à l’aide de MakeAppx.exe.However, asset packages can also be created manually using MakeAppx.exe. Pour spécifier les fichiers à inclure dans le package de ressources, vous devez créer un « fichier de mappage ».To specify which files to include in the asset package, you will need to create a “mapping file”. Dans cet exemple, le seul fichier du package de ressources est « Video.mp4 », mais tous les fichiers du package de ressources doivent être répertoriés ici.In this example, the only file in the asset package is "Video.mp4”, but all the asset package’s files should be listed here. Notez que le spécificateur ResourceDimensions dans ResourceMetadata est omis pour les packages d’actifs (par rapport à un fichier de mappage pour les packages de ressources).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"

Utilisez l’une des commandes suivantes pour créer le package de ressources à l’aide de MakeAppx.exe (pour MSIX et. 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

Il convient de noter ici que tous les fichiers référencés dans AppxManifest (les fichiers de logo) ne peuvent pas être déplacés vers des packages d’actifs. ces fichiers doivent être dupliqués entre les packages d’architecture.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.

Les packages de ressources ne doivent pas contenir de ressources. pri ; Vous ne pouvez pas utiliser MRT pour accéder aux fichiers du package de ressources.Asset packages should also not contain a resources.pri; MRT cannot be used to access asset package files. Pour en savoir plus sur l’accès aux fichiers de package de ressources et la raison pour laquelle les packages de ressources requièrent que votre application soit installée sur un lecteur NTFS, consultez développement avec les packages d’actifs et le repli de package.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.

Pour déterminer si un package de ressources est autorisé à s’exécuter ou non, vous pouvez utiliser uap6 : AllowExecution dans l’élément Properties du AppxManifest vous devez également ajouter Uap6 à l’élément de package de niveau supérieur pour qu’il devienne ce qui suit :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">

Si elle n’est pas spécifiée, la valeur par défaut de AllowExecution est true . Définissez-la sur false pour les packages d’actifs sans exécutables pour accélérer la publication.If not specified, the default value for AllowExecution is true – set it to false for asset packages with no executables to make publishing faster.