Differenzielle Updates für MSIX-App-Pakete
Grundlegendes zu Updates für MSIX-App-Pakete
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. 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. 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. 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).
Alles beginnt mit der Datei „AppxBlockMap.xml“ (die zuvor erwähnten Metadaten). Bei der Datei „AppxBlockMap.xml“ handelt es sich um ein XML-Dokument mit einer zweidimensionalen Liste von Informationen zu den Dateien im Paket. 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).
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.
Wenn bei einem Update der zweite Block dieser Datei geändert wurde, würde auch der Hash entsprechend aktualisiert. Die Downloadkomponente erkennt dies, ruft den zweiten Block ab und verwendet den ersten unveränderten Block des alten Pakets wieder.
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.
Upgrades auf neuere Versionen
Wenn eine neuere Version des MSIX-App-Pakets installiert wird, wird die Manifestdatei verglichen und geänderte Blöcke werden identifiziert. 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.
Upgrades auf ältere Versionen
Wenn eine ältere Version des MSIX-App-Pakets installiert wird, wird die Manifestdatei verglichen und geänderte Blöcke werden identifiziert. 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.
Optimieren der Benutzererfahrung
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. 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.
PowerShell
Bei der Installation eines MSIX-App-Pakets auf einem Gerät mittels PowerShell wird das Cmdlet add-appxpackage verwendet. Dieses Cmdlet enthält die folgenden Parameter, die die Installation des MSIX-App-Pakets ändern oder die Benutzererfahrung aktualisieren.
Parameter | Beschreibung |
---|---|
-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. |
-ForceApplicationShutdown | Zeigt an, dass dieses Cmdlet das Herunterfahren aller aktiven Prozesse erzwingt, die dem Paket zugeordnet sind, bzw seiner Abhängigkeiten. |
-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. |
-InstallAllResources | Zeigt an, dass das Cmdlet die Bereitstellung aller Ressourcenpakete erzwingt, die über ein Bündelargument angegeben werden. Dieser Parameter setzt die Überprüfung der Ressourcenanwendbarkeit durch die Bereitstellungs-Engine außer Kraft und erzwingt die Bereitstellung aller Ressourcenpakete. |
-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. |
-Update | Gibt an, dass das hinzuzufügende Paket ein Update eines Abhängigkeitspakets ist. Ein Abhängigkeitspaket wird entfernt, wenn die übergeordnete App entfernt wird. Wird der Parameter nicht angegeben, wird das Paket nicht entfernt, wenn die übergeordnete App entfernt wird. |
Eine vollständige Liste der Parameter, die für dieses Cmdlet verfügbar sind, findest du im PowerShell-Artikel add-appxpackage.