Introduzione ai pacchetti di assetIntroduction to asset packages

Importante

Se si intende inviare l'app allo Store, è necessario contattare il supporto tecnico Windows Developer e ottenere l'approvazione per l'uso dei pacchetti di asset.If you intend to submit your app to the Store, you need to contact Windows developer support and get approval to use asset packages.

I pacchetti di asset sono un tipo di pacchetto che funge da posizione centralizzata per i file comuni di un'applicazione, eliminando efficacemente la necessità di file duplicati in tutti i pacchetti dell'architettura.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. I pacchetti di asset sono simili ai pacchetti di risorse in quanto sono entrambi progettati per contenere contenuto statico necessario per l'esecuzione dell'app, ma in ogni caso tutti i pacchetti di asset vengono sempre scaricati, indipendentemente dall'architettura di sistema, dalla lingua o dalla scala di visualizzazione dell'utente.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.

Diagramma bundle pacchetto asset

Poiché i pacchetti di asset contengono tutti i file di architettura, di linguaggio e di scalabilità indipendenti, l'uso di pacchetti di asset comporta una riduzione delle dimensioni complessive delle app in pacchetto (poiché questi file non sono più duplicati), consentendo di gestire l'utilizzo dello spazio su disco per lo sviluppo locale per app di grandi dimensioni e gestire i pacchetti dell'app in generale.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.

In che modo i pacchetti di asset influiscono sulla pubblicazione?How do asset packages affect publishing?

Il vantaggio più ovvio dei pacchetti di asset è la riduzione delle dimensioni delle app in pacchetto.The most obvious benefit of asset packages is the reduced size of packaged apps. I pacchetti dell'app più piccoli velocizzano il processo di pubblicazione dell'app consentendo al processo di archiviazione di meno file; Tuttavia, questo non è il vantaggio più importante dei pacchetti di asset.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.

Quando viene creato un pacchetto di asset, è possibile specificare se l'esecuzione del pacchetto deve essere consentita.When an asset package is created, you can specify whether the package should be allowed to execute. Poiché i pacchetti di asset devono contenere solo file indipendenti dall'architettura, in genere non contengono file. dll o. exe, quindi per i pacchetti di asset in genere non è necessario eseguire.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. L'importanza di questa distinzione è che, durante il processo di pubblicazione, è necessario eseguire l'analisi di tutti i pacchetti eseguibili per assicurarsi che non contengano malware e che il processo di analisi riprenda più tempo per i pacchetti più grandi.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. Tuttavia, se un pacchetto viene designato come non eseguibile, l'installazione dell'app garantirà che i file contenuti in questo pacchetto non possano essere eseguiti.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. Questa garanzia Elimina la necessità di un'analisi completa del pacchetto e riduce notevolmente il tempo di analisi del malware durante la pubblicazione dell'app (e anche per gli aggiornamenti), semplificando notevolmente la pubblicazione per le app che usano i pacchetti di asset.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. Si noti che i pacchetti dell'app bundle Flat devono essere usati anche per ottenere questo vantaggio di pubblicazione, perché ciò consente all'archivio di elaborare ogni file di pacchetto con estensione appx o msix in parallelo.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.

È consigliabile usare I pacchetti di asset?Should I use asset packages?

L'aggiornamento della struttura di file dell'app per sfruttare l'uso di pacchetti di asset può produrre vantaggi tangibili, ovvero ridurre le dimensioni del pacchetto e le iterazioni di sviluppo più snelle.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. Se i pacchetti dell'architettura contengono tutti una quantità significativa di file in comune o se la maggior parte dell'app è costituita da file non in esecuzione, è consigliabile investire il tempo aggiuntivo per la conversione in usando i pacchetti di asset.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.

Tuttavia, è opportuno prestare attenzione che i pacchetti di asset non siano un mezzo per ottenere la facoltatività del contenuto dell'app.However, it should be cautioned that asset packages are not a means to achieve app content optionality. I file dei pacchetti di asset sono non facoltativi e verranno sempre scaricati indipendentemente dall'architettura, dal linguaggio o dalla scalabilità del dispositivo di destinazione. è necessario implementare qualsiasi contenuto facoltativo che l'app deve supportare usando pacchetti facoltativi.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.

Come creare un pacchetto di assetHow to create an asset package

Il modo più semplice per creare pacchetti di asset consiste nell'usare il layout del pacchetto.The easiest way to create asset packages is using the packaging layout. Tuttavia, i pacchetti di asset possono anche essere creati manualmente usando MakeAppx.exe.However, asset packages can also be created manually using MakeAppx.exe. Per specificare i file da includere nel pacchetto di asset, sarà necessario creare un "file di mapping".To specify which files to include in the asset package, you will need to create a “mapping file”. In questo esempio, l'unico file nel pacchetto di asset è "Video.mp4", ma tutti i file del pacchetto asset devono essere elencati qui.In this example, the only file in the asset package is "Video.mp4”, but all the asset package’s files should be listed here. Si noti che l'identificatore ResourceDimensions in ResourceMetadata viene omesso per i pacchetti di asset (rispetto a un file di mapping per i pacchetti di risorse).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"

Usare uno di questi comandi per creare il pacchetto di asset usando MakeAppx.exe (per MSIX e 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

Si noti che tutti i file a cui si fa riferimento in AppxManifest (i file del logo) non possono essere spostati in pacchetti di asset. questi file devono essere duplicati tra i pacchetti dell'architettura.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.

I pacchetti asset non devono contenere anche risorse. pri; Non è possibile usare MRT per accedere ai file del pacchetto di asset.Asset packages should also not contain a resources.pri; MRT cannot be used to access asset package files. Per altre informazioni su come accedere ai file del pacchetto di asset e sui motivi per cui i pacchetti di asset richiedono l'installazione dell'app in un'unità NTFS, vedere sviluppo con pacchetti di asset eriduzione del pacchetto.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.

Per controllare se è consentita l'esecuzione di un pacchetto di asset o meno, è possibile usare uap6: AllowExecution nell'elemento Properties di appxmanifest è necessario aggiungere anche uap6 all'elemento del pacchetto di primo livello per diventare il seguente: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">

Se non è specificato, il valore predefinito per AllowExecution è true : impostarlo su false per i pacchetti di asset senza eseguibili per velocizzare la pubblicazione.If not specified, the default value for AllowExecution is true – set it to false for asset packages with no executables to make publishing faster.