Aggiornamenti differenziali per pacchetti di app MSIX

Informazioni sugli aggiornamenti dei pacchetti 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, una parte di metadati viene creata e archiviata nel pacchetto con estensione msix o msixbundle, che consente di identificare in modo univoco le parti del pacchetto Windows. Successivamente, durante l'aggiornamento, Windows possibile usare questo file di metadati per confrontare il pacchetto precedente con il nuovo pacchetto e determinare gli elementi da scaricare nel dispositivo. Dato che questi metadati consentono l'identificazione univoca di parti del pacchetto, il sistema di aggiornamento differenziale funziona completamente da qualsiasi versione di un pacchetto a qualsiasi altra versione di un pacchetto (presupponendo che la versione del pacchetto di origine sia inferiore a quella del pacchetto di destinazione).

Tutto inizia in corrispondenza del file AppxBlockMap.xml (i metadati di cui si è fatto riferimento). Il AppxBlockMap.xml file è un documento XML che contiene un elenco bidimensionale di informazioni sui file nel pacchetto. La prima dimensione fornisce 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 del file è stato modificato, viene aggiornato anche l'hash per riflettere questo fatto. Il componente di download lo comprende ed estrae solo il secondo blocco e riutilizza il primo blocco non modificato 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 un conseguente enorme risparmio per gli utenti Windows 10 utenti

Aggiornamento a versioni più recenti

Quando viene installata una versione più recente del pacchetto dell'app MSIX, il file manifesto viene confrontato e vengono identificati i 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 di larghezza di banda se le applicazioni aggiornate si trovano in una condivisione di rete o esterne a un'organizzazione.

Aggiornamento a versioni precedenti

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

Ottimizzazione delle esperienze di aggiornamento

La distribuzione o l'installazione di un pacchetto di app MSIX in un dispositivo può essere configurata per migliorare l'esperienza utente. Quando viene distribuita un'app, il dispositivo può essere configurato per aggiornare l'app dopo che l'utente chiude l'app o forzare la chiusura dell'applicazione e aggiornare l'app in modo forzato.

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 o l'aggiornamento dell'esperienza utente del pacchetto dell'app MSIX.

Parametro Descrizione
-DeferRegistrationWhenPackagesAreInUse Indica che questo cmdlet impedirà l'aggiornamento del pacchetto dell'app MSIX mentre l'utente ha attualmente l'app aperta.
-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 l'installazione/registrazione di una versione specifica di un pacchetto, indipendentemente dal fatto che sia già installata o registrata una versione successiva.
-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 In caso di 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 dipendenze. Un pacchetto di dipendenze viene rimosso quando viene rimossa l'app padre. Se non specificato, il pacchetto non verrà rimosso quando viene rimossa l'app padre.

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