Aggiornamenti differenziali per pacchetti di app MSIX

Informazioni sugli aggiornamenti dei pacchetti di 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 creata e archiviata una porzione di metadati nel pacchetto con estensione msix o msixbundle, che consente a Windows di identificare in modo univoco le parti del pacchetto. Successivamente, durante l'aggiornamento, Windows può usare il file di metadati per confrontare il vecchio e il nuovo pacchetto e stabilire quali elementi scaricare nel dispositivo. Dato che questi metadati consentono di identificare in modo univoco le parti del pacchetto, il meccanismo di aggiornamento differenziale funziona perfettamente da qualsiasi versione di un pacchetto a qualsiasi altra versione del pacchetto (presupponendo che il pacchetto di origine sia di una versione inferiore rispetto a quello di destinazione).

Tutto inizia dal file AppxBlockMap.xml (i metadati menzionati in precedenza). AppxBlockMap.xml è un documento XML che contiene un elenco bidimensionale di informazioni sui file nel pacchetto. La prima dimensione indica i dettagli generali sul file, ad esempio nome e dimensioni, mentre la seconda fornisce rappresentazioni hash SHA2-256 di ogni sezione da 64 kB, o blocco, del file.

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 viene modificato, anche l'hash viene aggiornato di conseguenza. Il componente di download, comprendendo questo meccanismo, scarica solo il secondo blocco e riutilizza il primo blocco invariato dal pacchetto precedente.

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

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. Quando il pacchetto dell'app MSIX viene aggiornato alla versione più recente, vengono recuperati solo i file modificati, in modo da ridurre l'utilizzo della larghezza di banda se le applicazioni aggiornate si trovano in una condivisione di rete o all'esterno di 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 i blocchi di file modificati. Quando il pacchetto dell'app MSIX viene aggiornato alla versione precedente, vengono recuperati solo i file modificati, in modo da ridurre l'utilizzo della larghezza di banda se le applicazioni aggiornate si trovano in una condivisione di rete o all'esterno di un'organizzazione.

Ottimizzazione delle esperienze di aggiornamento

È possibile configurare il recapito o l'installazione di un pacchetto dell'app MSIX in un dispositivo per migliorare l'esperienza degli utenti. Quando viene distribuita un'app, il dispositivo può essere configurato per aggiornare l'app dopo la chiusura dell'app o per forzare la chiusura dell'applicazione e aggiornare l'app in modo forzato.

PowerShell

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

Parametro Descrizione
-DeferRegistrationWhenPackagesAreInUse Indica che questo cmdlet impedirà l'aggiornamento del pacchetto dell'app MSIX mentre 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 forzerà la gestione temporanea o la registrazione di una versione specifica di un pacchetto, indipendentemente dal fatto che una versione successiva sia già stata sottoposta a gestione temporanea o registrata.
-InstallAllResources Indica che il cmdlet forza la distribuzione di tutti i pacchetti di risorse specificati da un argomento bundle. Questa operazione sostituisce il controllo dell'applicabilità delle risorse del motore di distribuzione e forza 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 che sono stati 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 con la rimozione dell'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, vedi l'articolo di PowerShell relativo ad add-appxpackage.