Introducción a los paquetes de activosIntroduction to asset packages

Importante

Si desea enviar la aplicación a la tienda, debe ponerse en contacto con el soporte técnico para desarrolladores de Windows y obtener la aprobación para usar paquetes de activos.If you intend to submit your app to the Store, you need to contact Windows developer support and get approval to use asset packages.

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.Asset packages are a type of package that act as a centralized location for an application’s common files – effectively eliminating the necessity for duplicated files throughout its architecture packages. Los paquetes de recursos son similares a los paquetes de recursos, ya que están diseñados para contener el contenido estático necesario para que se ejecute la aplicación, pero son diferentes en que todos los paquetes de recursos se descargan siempre, independientemente de la arquitectura del sistema, el idioma o la escala de pantalla del usuario.Asset packages are similar to resource packages in that they are both designed to contain static content needed for your app to run, but different in that all asset packages are always downloaded, regardless of the user’s system architecture, language, or display scale.

Diagrama de agrupación de paquetes de activos

Dado que los paquetes de activos contienen todos los archivos independientes de la arquitectura, el idioma y la escala, el uso de paquetes de recursos tiene como resultado un tamaño de aplicación empaquetado general reducido (ya que estos archivos ya no se duplican), lo que le ayuda a administrar el uso del espacio en disco de desarrollo local para aplicaciones grandes y a administrar los paquetes de la aplicación en general.Because asset packages contain all the architecture, language, and scale agnostic files, leveraging asset packages results in a reduced overall packaged app size (since these files are no longer duplicated), helping you manage local development disk space usage for large apps and manage your app’s packages in general.

¿Cómo afectan los paquetes de recursos a la publicación?How do asset packages affect publishing?

La ventaja más obvia de los paquetes de activos es el tamaño reducido de las aplicaciones empaquetadas.The most obvious benefit of asset packages is the reduced size of packaged apps. Los paquetes de aplicación más pequeños agilizan el proceso de publicación de la aplicación permitiendo que el almacén procese menos archivos. sin embargo, esta no es la ventaja más importante de los paquetes de activos.Smaller app packages speed up the app’s publishing process by letting the Store process less files; however this is not the most important benefit of asset packages.

Cuando se crea un paquete de recursos, puede especificar si se debe permitir la ejecución del paquete.When an asset package is created, you can specify whether the package should be allowed to execute. Dado que los paquetes de activos solo deben contener archivos independientes de la arquitectura, normalmente no contienen ningún archivo. dll o. exe, por lo que no es necesario que los paquetes de recursos se ejecuten normalmente.Since asset packages should contain only architecture agnostic files, they generally don't contain any .dll or .exe files, so for asset packages typically don't need to execute. La importancia de esta distinción es que durante el proceso de publicación, todos los paquetes ejecutables deben examinarse para asegurarse de que no contienen malware, y este proceso tarda más en paquetes más grandes.The importance of this distinction is that during the publishing process, all executable packages must be scanned to ensure that they do not contain malware, and this scanning process takes longer for larger packages. Sin embargo, si un paquete se designa como no ejecutable, la instalación de la aplicación se asegurará de que no se puedan ejecutar los archivos contenidos en este paquete.However, if a package is designated as non-executable, the installation of the app will ensure that files contained in this package cannot be executed. Esta garantía elimina la necesidad de realizar un examen completo del paquete y reducirá en gran medida el tiempo de examen de malware durante la publicación de la aplicación (y también para las actualizaciones), por lo que la publicación se realizará de forma mucho más rápida para las aplicaciones que usan paquetes de activos.This guarantee eliminates the need for a complete package scan and will greatly reduce the malware scan time during the publication of the app (and for updates too) - thus making publishing significantly faster for apps that use asset packages. Tenga en cuenta que los paquetes de aplicación de agrupación plana también se deben usar para obtener esta ventaja de publicación, ya que esto es lo que permite que el almacén procese cada archivo de paquete. appx o. msix en paralelo.Note that flat bundle app packages must also be used to get this publishing benefit since this is what allows the Store to process each .appx or .msix package file in parallel.

¿Debo usar paquetes de activos?Should I use asset packages?

La actualización de la estructura de archivos de la aplicación para aprovechar el uso de los paquetes de activos puede producir ventajas tangibles: tamaño de paquete reducido e iteraciones de desarrollo de más eficientes.Updating the file structure of your app to leverage the use of asset packages can yield tangible benefits: reduced package size and leaner development iterations. Si todos los paquetes de la arquitectura contienen una cantidad significativa de archivos en común o si la parte de la aplicación se compone de archivos no ejecutables, se recomienda encarecidamente invertir el tiempo adicional que se debe convertir en el uso de paquetes de recursos.If your architecture packages all contain significant amount of files in common or if the bulk of your app is made up of non-executing files, it is highly recommended that you invest the extra time to convert to using asset packages.

Sin embargo, se debe tener cuidado de que los paquetes de recursos no sean un medio para lograr la opcionalidad del contenido de la aplicación.However, it should be cautioned that asset packages are not a means to achieve app content optionality. 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 desee que la aplicación admita debe implementarse mediante paquetes opcionales.Asset package files are non-optional and will always be downloaded regardless of the target device’s architecture, language, or scale - any optional content that you want your app to support should be implemented using optional packages.

Cómo crear un paquete de activosHow to create an asset package

La forma más fácil de crear paquetes de activos es usar el diseño de empaquetado.The easiest way to create asset packages is using the packaging layout. Sin embargo, los paquetes de recursos también se pueden crear manualmente mediante MakeAppx.exe.However, asset packages can also be created manually using MakeAppx.exe. Para especificar qué archivos se van a incluir en el paquete de activos, deberá crear un "archivo de asignación".To specify which files to include in the asset package, you will need to create a “mapping file”. En este ejemplo, el único archivo en el paquete de activos es "Video.mp4", pero todos los archivos del paquete de recursos deben aparecer aquí.In this example, the only file in the asset package is "Video.mp4”, but all the asset package’s files should be listed here. Tenga en cuenta que el especificador ResourceDimensions en ResourceMetadata se omite para los paquetes de recursos (en comparación con un archivo de asignación para los paquetes de recursos).Note that the ResourceDimensions specifier in ResourceMetadata is omitted for asset packages (as compared to a mapping file for resource packages).

[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).Use one of these commands to create the asset package using MakeAppx.exe (for MSIX and .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 observar que todos los archivos a los que se hace referencia en el AppxManifest (los archivos de logotipo) no se pueden pasar a los paquetes de recursos: estos archivos se deben duplicar en los paquetes de arquitectura.It should be noted here that all of the files referenced in the AppxManifest (the logo files) cannot be moved into asset packages – these files must be duplicated across architecture packages.

Los paquetes de recursos no deben contener también un recurso. PRI; MRT no se puede usar para tener acceso a los archivos de paquete de recursos.Asset packages should also not contain a resources.pri; MRT cannot be used to access asset package files. Para más información sobre cómo obtener acceso a los archivos de paquete de activos 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 plegamientos de paquetes.To learn more about how to access asset package files and why asset packages require your app to be installed to an NTFS drive, see Developing with asset packages and package folding.

Para controlar si se permite que un paquete de recursos se ejecute o no, puede usar uap6: AllowExecution en el elemento Properties de AppxManifest. también debe agregar uap6 al elemento de paquete de nivel superior para que se convierta en lo siguiente:To control whether an asset package is allowed to execute or not, you can use uap6:AllowExecution in the Properties element of the AppxManifest You must also add uap6 to the top level Package element to become the following:

<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.If not specified, the default value for AllowExecution is true – set it to false for asset packages with no executables to make publishing faster.