Introduction aux packages de ressources

Important

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

Les packages d’éléments multimédias sont un type de package qui joue le rôle d’emplacement centralisé pour les fichiers communs d’une application, ce qui élimine efficacement la nécessité pour les fichiers dupliqués tout au long de ses packages d’architecture. Les packages d’éléments multimédias 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 dans ce cas, 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 la mise à l’échelle des fichiers indépendants, l’utilisation des packages d’actifs entraîne une taille d’application empaquetée globale réduite (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 de ressources affectent-ils la publication ?

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

Quand 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 pas de fichiers .dll ou .exe. Par conséquent, pour les packages d’éléments multimédias, 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 de ressources. Notez que les packages d’applications groupées plats doivent également être utilisés pour obtenir cet avantage de publication, car il s’agit de ce qui permet au Windows Store de traiter chaque fichier de package .appx ou .msix en parallèle.

Dois-je utiliser des packages de ressources ?

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

Toutefois, il doit être prudent que les packages d’éléments multimédias ne constituent pas un moyen d’assurer la flexibilité du contenu de l’application. Les fichiers de package d’éléments multimédias ne sont pas facultatifs et seront 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 vous souhaitez prendre en charge par votre application doit être implémenté à l’aide de packages facultatifs.

Comment créer un package de ressources

Le moyen le plus simple de créer des packages de ressources consiste à utiliser la disposition d’empaquetage. Toutefois, les packages de ressources 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’éléments multimédias (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

Il convient de noter ici que tous les fichiers référencés dans AppxManifest (les fichiers 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’éléments multimédias ne doivent pas non plus contenir de ressources.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 le 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 Propriétés 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 de AllowExecution est true : définissez-la sur false pour les packages d’éléments multimédias sans exécutables pour accélérer la publication.