Aggiornamenti differenziali per pacchetti di app MSIX

Informazioni sugli aggiornamenti del pacchetto dell'app MSIX

Quando viene creato un pacchetto dell'app MSIX, viene generato un file manifesto contenente i dettagli relativi ai file inclusi nel pacchetto dell'app MSIX. Durante la creazione del pacchetto, viene creato e archiviato un frammento di metadati nel pacchetto con estensione msix o msixbundle che consente l'identificazione univoca di parti del pacchetto da parte di Windows. Più avanti, durante l'aggiornamento, Windows può usare questo file di metadati per confrontare il pacchetto precedente con il nuovo pacchetto e determinare gli elementi che devono essere scaricati nel dispositivo. Dato che questi metadati consentono di identificare in modo univoco parti del pacchetto, ciò significa che i macchinari di aggiornamento differenziale funzionano completamente da qualsiasi versione di un pacchetto a qualsiasi altra versione di un pacchetto (presupponendo che il pacchetto di origine abbia una versione inferiore rispetto al pacchetto di destinazione).

Tutto inizia dal file AppxBlockMap.xml (i metadati indicati in precedenza). Il file AppxBlockMap.xml è un documento XML che contiene un elenco bidimensionale di informazioni sui file nel pacchetto. La prima dimensione dispone di dettagli di alto livello sul file (ad esempio nome e dimensioni) e la seconda dimensione fornisce rappresentazioni hash SHA2-256 di ogni sezione di 64 KB del file (noto anche come "blocco").

Il primo hash rappresenta il primo blocco di 64 KB del file e il secondo hash rappresenta i 35 KB rimanenti, presupponendo che il file sia di 101188 byte.

Durante un aggiornamento, se il secondo blocco di tale file è stato modificato, l'hash verrà aggiornato anche per riflettere questo fatto. Il componente di download riconosce questo aspetto e rimuoverà solo il secondo blocco e riusa il primo blocco invariato dal pacchetto precedente.

Inoltre, se un intero file non è stato modificato (determinato dal set completo di blocchi che non cambiano), tale file può essere riutilizzato dal pacchetto esistente, con conseguente notevole risparmio per gli utenti di Windows 10

Aggiornamento alle versioni più recenti

Quando viene installata una versione più recente del pacchetto dell'app MSIX, il file manifesto viene confrontato e vengono identificati blocchi di file modificati. Poiché il pacchetto dell'app MSIX viene aggiornato alla versione più recente, vengono recuperati solo i file modificati riducendo il consumo della larghezza di banda se le applicazioni aggiornate risiedono in una condivisione di rete o esterna a un'organizzazione.

Aggiornamento alle versioni precedenti

Quando viene installata una versione precedente del pacchetto dell'app MSIX, il file manifesto viene confrontato e vengono identificati blocchi di file modificati. Poiché il pacchetto dell'app MSIX viene aggiornato alla versione precedente, vengono recuperati solo i file modificati riducendo il consumo della larghezza di banda se le applicazioni aggiornate risiedono in una condivisione di rete o esterna a un'organizzazione.

Ottimizzazione delle esperienze di aggiornamento

Il recapito o l'installazione di un pacchetto di app MSIX in un dispositivo possono essere configurati per migliorare l'esperienza degli utenti. Quando un'app viene distribuita, il dispositivo può essere configurato per aggiornare l'app dopo che l'utente chiude l'app oppure forzare la chiusura e l'aggiornamento dell'app in modo forcabe.

PowerShell

L'installazione di un pacchetto di app MSIX in un dispositivo tramite PowerShell sfrutta il cmdlet add-appxpackage . Questo cmdlet contiene i parametri seguenti che modificano l'installazione del pacchetto dell'app MSIX o aggiornano l'esperienza utente.

Parametro Descrizione
-DeferRegistrationWhenPackagesAreInUse Indica che questo cmdlet impedirà l'aggiornamento del pacchetto dell'app MSIX mentre l'utente ha attualmente aperto l'app.
-ForceApplicationShutdown Indica che questo cmdlet forza l'arresto di tutti i processi attivi associati al pacchetto o alle relative dipendenze
-ForceUpdateFromAnyVersion Indica che il pacchetto dell'app MSIX forza una versione specifica di un pacchetto per la gestione temporanea o la registrazione, indipendentemente dal fatto che una versione successiva sia già in fase o registrata.
-InstallAllResources Indica che il cmdlet forza la distribuzione di tutti i pacchetti di risorse specificati da un argomento bundle. In questo modo viene eseguito l'override del controllo dell'applicabilità delle risorse del motore di distribuzione e viene forzata la gestione temporanea di tutti i pacchetti di risorse.
-RetainFilesOnFailure Nel caso di una distribuzione non riuscita, se questa opzione è impostata su True, i file creati nel computer di destinazione durante il processo di installazione non vengono rimossi.
-Update Specifica che il pacchetto da aggiungere è un aggiornamento del pacchetto di dipendenza. Un pacchetto di dipendenza viene rimosso quando l'app padre viene rimossa. Se non specificato, il pacchetto non verrà rimosso quando l'app padre viene rimossa.

Per un elenco completo dei parametri disponibili per questo cmdlet, vedere l'articolo di PowerShell su add-appxpackage.