Introducción a los paquetes de activos

Importante

Si piensa enviar la aplicación a la Tienda, debe ponerse en contacto con el soporte técnico de Windows desarrolladores y obtener la aprobación para usar paquetes de recursos.

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 en sus paquetes de arquitectura. Los paquetes de recursos son similares a los paquetes de recursos, ya que ambos están diseñados para contener el contenido estático necesario para que se ejecute la aplicación, pero es diferente en que todos los paquetes de recursos siempre se descargan, independientemente de la arquitectura del sistema, el lenguaje o la escala de presentación del usuario.

Diagrama de agrupación de paquetes de recursos

Dado que los paquetes de recursos contienen toda la arquitectura, el lenguaje y los archivos independientes de escala, el aprovechamiento de 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 de gran tamaño y a 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 store procese 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 la ejecución del paquete. Dado que los paquetes de recursos solo deben contener archivos independientes de la arquitectura, por lo general no contienen ningún archivo .dll o .exe, por lo que normalmente no es necesario ejecutar los 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 los paquetes más grandes. Sin embargo, si un paquete se designa como no ejecutable, la instalación de la aplicación garantizará que no se puedan ejecutar los archivos contenidos en este paquete. Esta garantía elimina la necesidad de un examen completo del paquete 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. Tenga en cuenta que los paquetes de aplicaciones de agrupación plana también se deben usar 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: menor tamaño del paquete e iteraciones de desarrollo más sencillas. 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 conste de archivos que no se ejecutan, se recomienda encarecidamente invertir el tiempo adicional para realizar la conversión al uso de paquetes de recursos.

Sin embargo, debe tenerse en cuenta 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 lenguaje o la escala del dispositivo de destino: cualquier contenido opcional que quiera que la aplicación admita debe implementarse mediante paquetes opcionales.

Creación de un paquete de recursos

La manera más fácil de crear paquetes de recursos es mediante 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 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í se debe tener 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 recursos tampoco deben contener resources.pri; MRT no se puede usar para acceder a los archivos de paquete de recursos. Para más información sobre cómo acceder a los archivos de paquetes de recursos y por qué los paquetes de recursos requieren que la aplicación esté instalada 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 del elemento AppxManifest También debe agregar uap6 al elemento Package de nivel superior para que sea el 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: estamúzcalo en false para los paquetes de recursos sin ejecutables para que la publicación sea más rápida.