Differenzielle Updates für MSIX-App-PaketeDifferential updates for MSIX app packages

Grundlegendes zu Updates für MSIX-App-PaketeUnderstanding MSIX app package updates

Wenn ein MSIX-App-Paket erstellt wird, wird eine Manifestdatei generiert, die Details zu den Dateien enthält, die in dem MSIX-App-Paket enthalten sind.When an MSIX app package are created, a manifest file is generated containing details related to the files included in the MSIX app package. Bei der Paketerstellung werden Metadaten erstellt und in dem .msix- oder .msixbundle-Paket gespeichert, sodass Teile des Pakets unter Windows eindeutig identifiziert werden können.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. Später kann Windows dann während des Updates anhand dieser Metadatendatei das alte Paket mit dem neuen Paket vergleichen und ermitteln, was auf das Gerät heruntergeladen werden muss.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. Da anhand dieser Metadaten Teile des Pakets eindeutig identifiziert werden können, bedeutet dies, dass die differenzielle Aktualisierung jeder Version eines Pakets auf jede andere Version des Pakets voll funktionsfähig ist (vorausgesetzt, das Quellpaket hat eine niedrigere Version als das Zielpaket).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).

Alles beginnt mit der Datei „AppxBlockMap.xml“ (die zuvor erwähnten Metadaten).It all starts at the AppxBlockMap.xml file (the aforementioned metadata). Bei der Datei „AppxBlockMap.xml“ handelt es sich um ein XML-Dokument mit einer zweidimensionalen Liste von Informationen zu den Dateien im Paket.The AppxBlockMap.xml file is an XML document that contains a two dimensional list of information about files in the package. In der ersten Dimension sind allgemeine Details zu der jeweiligen Datei angegeben (z. B. Name und Größe). Die zweite Dimension enthält SHA2-256-Hash-Darstellungen jedes 64-KB-Segments der Datei (auch als „Block“ bezeichnet).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").

Der erste Hash stellt den ersten 64-KB-Block der Datei dar und der zweite Hash die verbleibenden 35 KB – vorausgesetzt, die Datei besteht aus 101.188 Bytes.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.

Wenn bei einem Update der zweite Block dieser Datei geändert wurde, würde auch der Hash entsprechend aktualisiert.During an update, if the second block of that file was modified, the hash would also be updated to reflect this fact. Die Downloadkomponente erkennt dies, ruft den zweiten Block ab und verwendet den ersten unveränderten Block des alten Pakets wieder.The download component understands this and will only pull down the second block and reuse the first unchanged block from the old package.

Ferner, wenn sich eine ganze Datei nicht geändert hat (was durch den vollständigen Satz von Blöcken, die sich nicht ändern, bestimmt wird), kann diese Datei aus dem vorhandenen Paket wiederverwendet werden, was zu enormen Einsparungen für Windows 10-Benutzer führt.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

Upgrades auf neuere VersionenUpgrading to newer versions

Wenn eine neuere Version des MSIX-App-Pakets installiert wird, wird die Manifestdatei verglichen und geänderte Blöcke werden identifiziert.When a newer version of the MSIX app package is installed, the manifest file is compared and modified file blocks are identified. Da das MSIX-App-Paket auf die neuere Datei aktualisiert wird, werden nur die geänderten Dateien abgerufen, was den Bandbreitenverbrauch verringert, wenn sich aktualisierte Anwendungen auf einer Netzwerkfreigabe oder außerhalb einer Organisation befinden.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.

Upgrades auf ältere VersionenUpgrading to older versions

Wenn eine ältere Version des MSIX-App-Pakets installiert wird, wird die Manifestdatei verglichen und geänderte Blöcke werden identifiziert.When an older version of the MSIX app package is installed, the manifest file is compared and modifed file blocks are identified. Da das MSIX-App-Paket auf die ältere Datei aktualisiert wird, werden nur die geänderten Dateien abgerufen, was den Bandbreitenverbrauch verringert, wenn sich aktualisierte Anwendungen auf einer Netzwerkfreigabe oder außerhalb einer Organisation befinden.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.

Optimieren der BenutzererfahrungOptimizing upgrade experiences

Die Lieferung oder Installation eines MSIX-App-Pakets an bzw. auf einem Gerät lässt sich so konfigurieren, dass die Erfahrung des Benutzers verbessert wird.The delivery or installation of an MSIX app package to a device can be configured to improve the users experience. Wenn eine App bereitgestellt wird, kann das Gerät so konfiguriert werden, dass die App aktualisiert wird, nachdem der Benutzer sie geschlossen hat, oder dass das Schließen der App und ihre Aktualisierung erzwungen werden.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

Bei der Installation eines MSIX-App-Pakets auf einem Gerät mittels PowerShell wird das Cmdlet add-appxpackage verwendet.Installing an MSIX app package to a device using PowerShell leverages the add-appxpackage cmdlet. Dieses Cmdlet enthält die folgenden Parameter, die die Installation des MSIX-App-Pakets ändern oder die Benutzererfahrung aktualisieren.This cmdlet contains the following parameters which alter the MSIX app package installation or upgrade user experience.

-DeferRegistrationWhenPackagesAreInUse-DeferRegistrationWhenPackagesAreInUse Zeigt an, dass dieses Cmdlet das MSIX-App-Paket daran hindert, die Aktualisierung durchzuführen, während der Benutzer die App aktuell geöffnet hat.Indicates that this cmdlet will prevent the MSIX app package from updating while the user currently has the app open.
-ForceApplicationShutdown-ForceApplicationShutdown Zeigt an, dass dieses Cmdlet das Herunterfahren aller aktiven Prozesse erzwingt, die dem Paket zugeordnet sind, bzw seiner Abhängigkeiten.Indicates that this cmdlet forces all active processes that are associated with the package or its dependencies to shut down
-ForceUpdateFromAnyVersion-ForceUpdateFromAnyVersion Zeigt an, dass das MSIX-App-Paket erzwingt, dass eine bestimmte Version eines Pakets bereitgestellt/registriert wird, unabhängig davon, ob eine höhere Version bereits bereitgestellt/registriert ist.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 Zeigt an, dass das Cmdlet die Bereitstellung aller Ressourcenpakete erzwingt, die über ein Bündelargument angegeben werden.Indicates that the cmdlet forces the deployment of all resource packages specified from a bundle argument. Dieser Parameter setzt die Überprüfung der Ressourcenanwendbarkeit durch die Bereitstellungs-Engine außer Kraft und erzwingt die Bereitstellung aller Ressourcenpakete.This overrides the resource applicability check of the deployment engine and forces staging of all resource packages.
-RetainFilesOnFailure-RetainFilesOnFailure Wenn dieser Parameter auf „True“ festgelegt ist, werden bei einer fehlgeschlagenen Bereitstellung Dateien, die während des Installationsvorgangs auf dem Zielcomputer erstellt wurden, nicht entfernt.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 Gibt an, dass das hinzuzufügende Paket ein Update eines Abhängigkeitspakets ist.Specifies that the package being added is a dependency package update. Ein Abhängigkeitspaket wird entfernt, wenn die übergeordnete App entfernt wird.A dependency package is removed when the parent app is removed. Wird der Parameter nicht angegeben, wird das Paket nicht entfernt, wenn die übergeordnete App entfernt wird.If not specified, the package will not be removed when the parent app is removed.

Eine vollständige Liste der Parameter, die für dieses Cmdlet verfügbar sind, findest du im PowerShell-Artikel add-appxpackage.For a full list of parameters available for this cmdlet, please visit the PowerShell article on add-appxpackage.