Introduzione ai pacchetti di asset

Importante

Se intendi inviare la tua app allo Store, devi contattare il supporto tecnico per sviluppatori Windows e ottenere l'approvazione per usare i pacchetti di asset.

I pacchetti asset sono un tipo di pacchetto che funge da posizione centralizzata per i file comuni di un'applicazione, eliminando in modo efficace la necessità di file duplicati in tutti i pacchetti di architettura. I pacchetti di asset sono simili ai pacchetti di risorse in quanto sono entrambi progettati per contenere contenuti statici necessari per l'esecuzione dell'app, ma diversi in quanto tutti i pacchetti di asset vengono sempre scaricati, indipendentemente dall'architettura di sistema, dalla lingua o dalla scala di visualizzazione dell'utente.

Asset Package Bundle Diagram

Poiché i pacchetti di asset contengono tutti i file indipendenti dall'architettura, dalla lingua e dalla scalabilità, l'uso dei 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 di sviluppo locale per le app di grandi dimensioni e di gestire i pacchetti dell'app in generale.

In che modo i pacchetti di asset influiscono sulla pubblicazione?

Il vantaggio più evidente dei pacchetti di asset è la riduzione delle dimensioni delle app in pacchetto. I pacchetti di app più piccoli velocizzano il processo di pubblicazione dell'app consentendo allo Store di elaborare meno file; tuttavia questo non è il vantaggio più importante dei pacchetti di asset.

Quando viene creato un pacchetto di asset, è possibile specificare se il pacchetto deve essere autorizzato a essere eseguito. 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. L'importanza di questa distinzione è che durante il processo di pubblicazione, tutti i pacchetti eseguibili devono essere analizzati per garantire che non contengano malware e questo processo di analisi richiede più tempo per i pacchetti più grandi. Tuttavia, se un pacchetto è designato come non eseguibile, l'installazione dell'app garantirà che i file contenuti in questo pacchetto non possano essere eseguiti. Questa garanzia elimina la necessità di un'analisi completa dei pacchetti e ridurrà notevolmente il tempo di analisi malware durante la pubblicazione dell'app (e anche per gli aggiornamenti), rendendo così la pubblicazione significativamente più veloce per le app che usano pacchetti asset. Si noti che i pacchetti di app bundle flat devono essere usati anche per ottenere questo vantaggio di pubblicazione, poiché questo è ciò che consente allo Store di elaborare ogni file di pacchetto con estensione appx o msix in parallelo.

È consigliabile usare pacchetti di asset?

L'aggiornamento della struttura di file dell'app per sfruttare l'uso dei pacchetti asset può produrre vantaggi tangibili: riduzione delle dimensioni dei pacchetti e iterazioni di sviluppo più snella. Se i pacchetti di 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 pacchetti di asset.

Tuttavia, è necessario prestare attenzione che i pacchetti di asset non sono un mezzo per ottenere la facoltatività del contenuto dell'app. I file del pacchetto asset non sono facoltativi e verranno sempre scaricati indipendentemente dall'architettura, dalla lingua o dalla scalabilità del dispositivo di destinazione. Qualsiasi contenuto facoltativo che vuoi che l'app supporti deve essere implementata usando pacchetti facoltativi.

Come creare un pacchetto di asset

Il modo più semplice per creare pacchetti di asset consiste nell'usare il layout dei pacchetti. Tuttavia, i pacchetti di asset possono essere creati manualmente usando MakeAppx.exe. Per specificare i file da includere nel pacchetto di asset, è necessario creare un "file di mapping". In questo esempio, l'unico file nel pacchetto asset è "Video.mp4", ma tutti i file del pacchetto asset devono essere elencati qui. 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).

[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).

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 di logo) non possono essere spostati nei pacchetti di asset. Questi file devono essere duplicati tra i pacchetti dell'architettura.

I pacchetti di asset non devono contenere anche un oggetto resources.pri; Non è possibile usare MRT per accedere ai file del pacchetto di asset. 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 e riduzione dei pacchetti.

Per controllare se un pacchetto di asset può essere eseguito o meno, è possibile usare uap6:AllowExecution nell'elemento Properties di AppxManifest È necessario aggiungere anche uap6 all'elemento Package di primo livello per diventare il seguente:

<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 file eseguibili per velocizzare la pubblicazione.