Introducción a los paquetes de activos

Importante

Si piensas enviar tu aplicación a la Tienda, debes ponerse en contacto con Windows soporte técnico para desarrolladores y obtener la aprobación para usar paquetes de activos.

Los paquetes de recursos son un tipo de paquete que actúa como una ubicación centralizada para los archivos comunes de una aplicación, lo que elimina eficazmente la necesidad de archivos duplicados a lo largo de sus paquetes de arquitectura. Los paquetes de recursos son similares a los paquetes de recursos en que están diseñados para contener contenido estático necesario para que la aplicación se ejecute, pero diferentes en que todos los paquetes de recursos siempre se descargan, independientemente de la arquitectura, idioma o escala de visualización del sistema del usuario.

Asset Package Bundle Diagram

Dado que los paquetes de recursos contienen todos los archivos independientes de la arquitectura, el idioma y la escala, aprovechar los paquetes de recursos da como resultado un tamaño de aplicación empaquetado general reducido (ya que estos archivos ya no están duplicados), lo que ayuda a administrar el uso del espacio en disco de desarrollo local para aplicaciones grandes y administrar los paquetes de la aplicación en general.

¿Cómo afectan los paquetes de recursos a la publicación?

La ventaja más obvia de los paquetes de recursos es el tamaño reducido de las aplicaciones empaquetadas. Los paquetes de aplicaciones más pequeños aceleran el proceso de publicación de la aplicación al permitir que el proceso de la Tienda sea menos archivos; sin embargo, esta no es la ventaja más importante de los paquetes de recursos.

Cuando se crea un paquete de recursos, puede especificar si se debe permitir que se ejecute el paquete. Dado que los paquetes de recursos solo deben contener archivos independientes de la arquitectura, por lo general no contienen archivos .dll ni .exe, por lo que normalmente no es necesario ejecutar paquetes de recursos. La importancia de esta distinción es que, durante el proceso de publicación, se deben examinar todos los paquetes ejecutables para asegurarse de que no contienen malware y este proceso de examen tarda más tiempo en paquetes más grandes. Sin embargo, si un paquete se designa como no ejecutable, la instalación de la aplicación garantizará que los archivos contenidos en este paquete no se puedan ejecutar. Esta garantía elimina la necesidad de realizar un examen de paquete completo y reducirá considerablemente el tiempo de examen de malware durante la publicación de la aplicación (y también para las actualizaciones), lo que hace que la publicación sea significativamente más rápida para las aplicaciones que usan paquetes de recursos. Ten en cuenta que los paquetes de aplicaciones de agrupación plana también deben usarse para obtener esta ventaja de publicación, ya que esto es lo que permite que store procese cada archivo de paquete .appx o .msix en paralelo.

¿Debo usar paquetes de recursos?

La actualización de la estructura de archivos de la aplicación para aprovechar el uso de paquetes de recursos puede producir ventajas tangibles: el tamaño reducido del paquete y las iteraciones de desarrollo más ajustadas. Si todos los paquetes de arquitectura contienen una cantidad significativa de archivos en común o si la mayor parte de la aplicación se compone de archivos que no se ejecutan, se recomienda encarecidamente invertir el tiempo adicional para convertir en el uso de paquetes de recursos.

Sin embargo, se debe advertir de que los paquetes de recursos no son un medio para lograr la opcionalidad del contenido de la aplicación. Los archivos de paquete de recursos no son opcionales y siempre se descargarán independientemente de la arquitectura, el idioma o la escala del dispositivo de destino: cualquier contenido opcional que quiera que admita la aplicación se debe implementar mediante paquetes opcionales.

Creación de un paquete de recursos

La manera más fácil de crear paquetes de recursos es usar el diseño de empaquetado. Sin embargo, los paquetes de recursos también se pueden crear manualmente mediante MakeAppx.exe. Para especificar qué archivos se van a incluir en el paquete de recursos, deberá crear un "archivo de asignación". En este ejemplo, el único archivo del paquete de recursos es "Video.mp4", pero todos los archivos del paquete de recursos deben aparecer aquí. Tenga en cuenta que el especificador ResourceDimensions de ResourceMetadata se omite para los paquetes de recursos (en comparación con un archivo de asignación para los paquetes de recursos).

[ResourceMetadata]
"ResourceId"        "Videos"

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

Use uno de estos comandos para crear el paquete de recursos mediante MakeAppx.exe (para MSIX y .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

Aquí debe tenerse en cuenta que todos los archivos a los que se hace referencia en AppxManifest (los archivos de logotipo) no se pueden mover a paquetes de recursos; estos archivos deben duplicarse entre paquetes de arquitectura.

Los paquetes de activos tampoco deben contener un resources.pri; MRT no se puede usar para acceder a los archivos de paquete de recursos. Para obtener más información sobre cómo acceder a los archivos de paquete de recursos y por qué los paquetes de recursos requieren que la aplicación se instale en una unidad NTFS, consulte Desarrollo con paquetes de recursos y plegado de paquetes.

Para controlar si un paquete de recursos puede ejecutarse o no, puede usar uap6:AllowExecution en el elemento Properties de AppxManifest. También debe agregar uap6 al elemento Package de nivel superior para convertirse en lo siguiente:

<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 no se especifica, el valor predeterminado de AllowExecution es true : establézcalo en false para los paquetes de recursos sin ejecutables para que la publicación sea más rápida.