Introduzione ai pacchetti di asset

Importante

Se si intende inviare l'app allo Store, è necessario contattare Windows supporto per sviluppatori e ottenere l'approvazione per l'uso dei pacchetti di asset.

I pacchetti asset sono un tipo di pacchetto che funge da percorso centralizzato per i file comuni di un'applicazione, eliminando in modo efficace la necessità di file duplicati in tutti i pacchetti di architettura. I pacchetti asset sono simili ai pacchetti di risorse in cui 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 scalabilità di visualizzazione dell'utente.

Asset Package Bundle Diagram

Poiché i pacchetti asset contengono tutte le architetture, il linguaggio e ridimensionano i file agnostici, sfruttando i pacchetti di asset comportano 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 gestire i pacchetti dell'app in generale.

In che modo i pacchetti asset influiscono sulla pubblicazione?

Il vantaggio più ovvio dei pacchetti di asset è la dimensione ridotta delle app in pacchetto. I pacchetti di app più piccoli accelerano 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 asset, è possibile specificare se il pacchetto deve essere autorizzato a essere eseguito. Poiché i pacchetti asset devono contenere solo file agnostici dell'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 assicurarsi 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 del pacchetto 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 anche i pacchetti di app flat bundle devono essere usati per ottenere questo vantaggio di pubblicazione, poiché questo è ciò che consente allo Store di elaborare ogni file del pacchetto con estensione appx o msix in parallelo.

È consigliabile usare pacchetti asset?

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

Tuttavia, è consigliabile 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, dal linguaggio o dalla scalabilità del dispositivo di destinazione. Qualsiasi contenuto facoltativo che si vuole che l'app supporti venga implementata usando pacchetti facoltativi.

Come creare un pacchetto di asset

Il modo più semplice per creare pacchetti di asset consiste nell'usare il layout del pacchetto. È tuttavia possibile creare manualmente pacchetti di asset usando MakeAppx.exe. Per specificare i file da includere nel pacchetto asset, sarà 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 qui che tutti i file a cui si fa riferimento in AppxManifest (i file di logo) non possono essere spostati in pacchetti di asset: questi file devono essere duplicati tra i pacchetti di architettura.

I pacchetti di asset non devono contenere anche una risorsa.pri; Impossibile usare MRT per accedere ai file del pacchetto asset. Per altre informazioni su come accedere ai file del pacchetto asset e perché i pacchetti 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 è autorizzato a eseguire o meno, è possibile usare uap6:AllowExecution nell'elemento Properties dell'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 asset senza eseguibili per rendere la pubblicazione più veloce.