Introducción a los paquetes de activos
Importante
Si quiere enviar su aplicación a la Tienda, debe ponerse en contacto con el soporte técnico para desarrolladores de Windows y obtener la aprobación para utilizar paquetes de activos.
Los paquetes de activos 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 todos los paquetes de su 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 del sistema, el idioma o la escala de visualización del usuario.
Dado que los paquetes de recursos contienen todos los archivos independientes de arquitectura, lenguaje y escalado, 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 store procese menos archivos; sin embargo, esto 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, normalmente no contienen ningún archivo .dll o .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 un examen completo de paquetes 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 planos también deben usarse para obtener esta ventaja de publicación, ya que esto es lo que permite a la Tienda procesar 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 tener cuidado 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 la aplicación admita se debe implementar mediante paquetes opcionales.
Cómo crear un paquete de activos
La manera más fácil de crear paquetes de recursos es usar el diseño de empaquetado. Sin embargo, los paquetes de activos también se pueden crear manualmente mediante MakeAppx.exe. Para especificar los archivos que 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
Debe tenerse en cuenta aquí 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, consulta 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.