Introduction aux packages d’actifs

Important

Si vous envisagez de soumettre votre application au Windows Store, vous devez contacter Windows support du développeur et obtenir l’approbation pour utiliser des packages de ressources.

Les packages d’actifs sont un type de package qui agit comme un emplacement centralisé pour les fichiers communs d’une application, ce qui élimine efficacement la nécessité pour les fichiers dupliqués dans ses packages d’architecture. Les packages d’actifs sont similaires aux packages de ressources, car ils sont tous deux conçus pour contenir du contenu statique nécessaire à l’exécution de votre application, mais différents en ce sens que 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 Package Bundle Diagram

Étant donné que les packages d’éléments multimédias contiennent toutes les architectures, la langue et l’échelle des fichiers indépendants, l’utilisation des packages d’actifs entraîne une réduction de la taille globale de l’application empaquetée (car ces fichiers ne sont plus dupliqués), ce qui vous permet de gérer l’utilisation de l’espace disque de développement local pour les applications volumineuses et de gérer les packages de votre application en général.

Comment les packages d’actifs affectent-ils la publication ?

L’avantage le plus évident des packages d’actifs est la taille réduite des applications empaquetées. Les packages d’application plus petits accélèrent le processus de publication de l’application en permettant au Windows Store de traiter moins de fichiers ; toutefois, ce n’est pas l’avantage le plus important des packages d’actifs.

Lorsqu’un package de ressources est créé, vous pouvez spécifier si le package doit être autorisé à s’exécuter. Étant donné que les packages d’éléments multimédias doivent contenir uniquement des fichiers indépendants de l’architecture, ils ne contiennent généralement aucun .dll ou .exe fichiers. Par conséquent, pour les packages d’actifs, il n’est généralement pas nécessaire d’exécuter. 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 que ce processus d’analyse prend plus de temps pour les packages plus volumineux. Toutefois, si un package est désigné comme non exécutable, l’installation de l’application garantit que les fichiers contenus dans ce package ne peuvent pas être exécutés. Cette garantie élimine la nécessité d’une analyse complète des packages et réduit considérablement le temps d’analyse des programmes malveillants pendant la publication de l’application (et pour les mises à jour également), ce qui accélère considérablement la publication pour les applications qui utilisent des packages d’actifs. Notez que les packages d’application groupés plats doivent également être utilisés pour obtenir cet avantage de publication, car c’est ce qui permet au Windows Store de traiter chaque fichier de package .appx ou .msix en parallèle.

Dois-je utiliser des packages d’éléments multimédias ?

La mise à jour de la structure de fichiers de votre application pour tirer parti de l’utilisation des packages d’actifs peut générer des avantages tangibles : une taille de package réduite et des itérations de développement plus maigres. Si vos packages d’architecture contiennent tous une quantité importante de fichiers en commun ou si la majeure partie de votre application est constituée de fichiers non en cours d’exécution, il est vivement recommandé d’investir le temps supplémentaire de conversion en packages d’éléments multimédias.

Toutefois, il est conseillé de noter que les packages d’actifs ne sont pas un moyen d’obtenir une option de contenu d’application. Les fichiers de package d’éléments multimédias ne sont pas facultatifs et sont toujours téléchargés indépendamment de l’architecture, de la langue ou de la mise à l’échelle de l’appareil cible. Tout contenu facultatif que votre application doit prendre en charge doit être implémenté à l’aide de packages facultatifs.

Guide pratique pour créer un package de ressources

Le moyen le plus simple de créer des packages d’éléments multimédias consiste à utiliser la disposition de l’empaquetage. Toutefois, les packages d’éléments multimédias peuvent également être créés manuellement à l’aide de MakeAppx.exe. Pour spécifier les fichiers à inclure dans le package de ressources, vous devez créer un « fichier de mappage ». 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. 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).

[ResourceMetadata]
"ResourceId"        "Videos"

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

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

Notez ici que tous les fichiers référencés dans AppxManifest (les fichiers de logo) ne peuvent pas être déplacés dans des packages d’éléments multimédias : ces fichiers doivent être dupliqués entre les packages d’architecture.

Les packages d’actifs ne doivent pas non plus contenir de resources.pri; MRT ne peut pas être utilisé pour accéder aux fichiers de package de ressources. Pour en savoir plus sur l’accès aux fichiers de package d’éléments multimédias et sur la raison pour laquelle les packages d’éléments multimédias nécessitent l’installation de votre application sur un lecteur NTFS, consultez Développement avec des packages de ressources et pliage de packages.

Pour contrôler si un package de ressources est autorisé à s’exécuter ou non, vous pouvez utiliser uap6:AllowExecution dans l’élément Properties de l’appxManifest Vous devez également ajouter uap6 à l’élément Package de niveau supérieur pour devenir le suivant :

<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 pour AllowExecution est true : définissez-la sur false pour les packages d’éléments multimédias sans exécutable pour accélérer la publication.