Introduzione ai pacchetti di asset

Importante

Se si intende inviare l'app allo Store, è necessario contattare il Windows per sviluppatori e ottenere l'approvazione per usare i pacchetti di asset.

I pacchetti di 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 duplicare i file in tutti i pacchetti dell'architettura. I pacchetti di asset sono simili ai pacchetti di risorse in quanto sono entrambi progettati per contenere il contenuto statico necessario per l'esecuzione dell'app, ma sono 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.

Diagramma del bundle del pacchetto asset

Poiché i pacchetti di asset contengono tutti i file indipendenti dall'architettura, dalla lingua e dalla scalabilità, sfruttando i pacchetti di asset si riducono le dimensioni complessive delle app (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 asset influiscono sulla pubblicazione?

Il vantaggio più ovvio 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 a 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 è necessario consentire l'esecuzione del pacchetto. 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 assicurarsi che non contengano malware e questo processo di analisi richiede più tempo per i pacchetti di dimensioni maggiori. Tuttavia, se un pacchetto viene designato come non eseguibile, l'installazione dell'app garantisce che non sia possibile eseguire i file contenuti in questo pacchetto. 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 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 perché questo è ciò che consente a Store di elaborare ogni file di pacchetto con estensione appx o msix in parallelo.

È consigliabile usare i pacchetti di asset?

L'aggiornamento della struttura di file dell'app per sfruttare l'uso dei pacchetti di asset può offrire vantaggi tangibili: riduzione delle dimensioni dei pacchetti e iterazioni di sviluppo più snelle. Se tutti i pacchetti dell'architettura contengono una quantità significativa di file in comune o se la maggior parte dell'app è costituito da file non in esecuzione, è consigliabile investire il tempo aggiuntivo per la conversione in usando i pacchetti di asset.

È tuttavia opportuno prestare attenzione al fatto che i pacchetti di asset non sono un mezzo per ottenere la facoltatività del contenuto dell'app. I file dei pacchetti di asset non sono facoltativi e verranno sempre scaricati indipendentemente dall'architettura, dalla lingua o dalla scalabilità del dispositivo di destinazione. Qualsiasi contenuto facoltativo che l'app supporti deve essere implementato usando pacchetti facoltativi.

Come creare un pacchetto di asset

Il modo più semplice per creare pacchetti di asset è usare il layout di creazione pacchetti. Tuttavia, i pacchetti di asset possono anche 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 di asset è "Video.mp4", ma tutti i file del pacchetto di 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 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 del logo) non possono essere spostati in pacchetti di asset. Questi file devono essere duplicati tra i pacchetti dell'architettura.

Anche i pacchetti di asset non devono contenere un file resources.pri. Non è possibile usare MRT per accedere ai file del pacchetto di asset. Per altre informazioni su come accedere ai file dei pacchetti 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 compressione dei pacchetti.

Per controllare se un pacchetto asset può essere eseguito o meno, è possibile usare uap6:AllowExecution nell'elemento Properties di AppxManifest È anche necessario aggiungere 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 viene specificato, il valore predefinito per AllowExecution è true: impostarlo su false per i pacchetti asset senza eseguibili per velocizzare la pubblicazione.