Aggiornamenti differenziali per pacchetti di app MSIXDifferential updates for MSIX app packages

Informazioni sugli aggiornamenti dei pacchetti di app MSIXUnderstanding MSIX app package updates

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.When an MSIX app package are created, a manifest file is generated containing details related to the files included in the MSIX app package. 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.During package creation, a piece of metadata is created and stored in the .msix or .msixbundle package which allows parts of the package to be uniquely identified by the Windows. 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.Later on, during update, Windows can use this metadata file to compare the old package to the new package and determine the things that need to be downloaded to the device. 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).Given this metadata allows parts of the package to be uniquely identified, this means the differential update machinery fully functions from any version of a package to any other version of a package (assuming source package has a lower version than target package).

Tutto inizia dal file AppxBlockMap.xml (i metadati menzionati in precedenza).It all starts at the AppxBlockMap.xml file (the aforementioned metadata). AppxBlockMap.xml è un documento XML che contiene un elenco bidimensionale di informazioni sui file nel pacchetto.The AppxBlockMap.xml file is an XML document that contains a two dimensional list of information about files in the package. 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.The first dimension lays out high level details on the file (e.g. name and size) and the second dimension provides SHA2-256 hash representations of each 64KB slice of that file (aka the "block").

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.The first hash represents the first 64KB block of the file and the second hash represents the remaining 35KB - given the file is 101188 bytes.

Durante un aggiornamento, se il secondo blocco del file viene modificato, anche l'hash viene aggiornato di conseguenza.During an update, if the second block of that file was modified, the hash would also be updated to reflect this fact. Il componente di download, comprendendo questo meccanismo, scarica solo il secondo blocco e riutilizza il primo blocco invariato dal pacchetto precedente.The download component understands this and will only pull down the second block and reuse the first unchanged block from the old package.

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.Furthermore, if an entire file hasn't changed (which is determined by the full set of blocks not changing) then that file can be reused from the existing package - resulting in tremendous savings for Windows 10 users

Aggiornamento a versioni più recentiUpgrading to newer versions

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.When a newer version of the MSIX app package is installed, the manifest file is compared and modified file blocks are identified. 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.As the MSIX app package is upgraded to the newer version only the modified files are retrieved decreasing the bandwidth consumption if updated applications reside on a network share or external to an organization.

Aggiornamento a versioni precedentiUpgrading to older versions

Quando viene installata una versione precedente del pacchetto dell'app MSIX, il file manifesto viene confrontato e vengono identificati i blocchi di file modificati.When an older version of the MSIX app package is installed, the manifest file is compared and modifed file blocks are identified. 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.As the MSIX app package is upgraded to the older version only the modified files are retrieved decreasing the bandwidth consumption if updated applications reside on a network share or external to an organization.

Ottimizzazione delle esperienze di aggiornamentoOptimizing upgrade experiences

È possibile configurare il recapito o l'installazione di un pacchetto dell'app MSIX in un dispositivo per migliorare l'esperienza degli utenti.The delivery or installation of an MSIX app package to a device can be configured to improve the users experience. 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.When an app is deployed the device can be configured to update the app after the user closes the app , or force the application to be closed and update the app forcably.

PowerShellPowerShell

L'installazione di un pacchetto dell'app MSIX in un dispositivo con PowerShell sfrutta il cmdlet add-appxpackage.Installing an MSIX app package to a device using PowerShell leverages the add-appxpackage cmdlet. Questo cmdlet contiene i parametri seguenti che modificano l'esperienza utente di installazione o aggiornamento del pacchetto dell'app MSIX.This cmdlet contains the following parameters which alter the MSIX app package installation or upgrade user experience.

-DeferRegistrationWhenPackagesAreInUse-DeferRegistrationWhenPackagesAreInUse Indica che questo cmdlet impedirà l'aggiornamento del pacchetto dell'app MSIX mentre l'app è aperta.Indicates that this cmdlet will prevent the MSIX app package from updating while the user currently has the app open.
-ForceApplicationShutdown-ForceApplicationShutdown Indica che questo cmdlet forza l'arresto di tutti i processi attivi associati al pacchetto o alle relative dipendenze.Indicates that this cmdlet forces all active processes that are associated with the package or its dependencies to shut down
-ForceUpdateFromAnyVersion-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.Indicates that the MSIX app package will force a specific version of a package to be staged/registered, regardless of whether a higher version is already stages/registered.
-InstallAllResources-InstallAllResources Indica che il cmdlet forza la distribuzione di tutti i pacchetti di risorse specificati da un argomento bundle.Indicates that the cmdlet forces the deployment of all resource packages specified from a bundle argument. Questa operazione sostituisce il controllo dell'applicabilità delle risorse del motore di distribuzione e forza la gestione temporanea di tutti i pacchetti di risorse.This overrides the resource applicability check of the deployment engine and forces staging of all resource packages.
-RetainFilesOnFailure-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.In the case of a failed deployment, if this switch is set to True, files that have been created on the target machine during the installation process are not removed.
-Update-Update Specifica che il pacchetto da aggiungere è un aggiornamento del pacchetto di dipendenze.Specifies that the package being added is a dependency package update. Un pacchetto di dipendenze viene rimosso con la rimozione dell'app padre.A dependency package is removed when the parent app is removed. Se non è specificato, il pacchetto non verrà rimosso quando viene rimossa l'app padre.If not specified, the package will not be removed when the parent app is removed.

Per un elenco completo dei parametri disponibili per questo cmdlet, vedi l'articolo di PowerShell relativo ad add-appxpackage.For a full list of parameters available for this cmdlet, please visit the PowerShell article on add-appxpackage.