Freigeben über


Differenzielle Updates für MSIX-App-Pakete

Grundlegendes zu MSIX-App-Paketupdates

Wenn ein MSIX-App-Paket erstellt wird, wird eine Manifestdatei generiert, die Details zu den Dateien enthält, die im MSIX-App-Paket enthalten sind. Während der Paketerstellung wird ein Teil der Metadaten erstellt und im MSIX- oder MSIXBUNDLE-Paket gespeichert, mit dem Teile des Pakets von Windows eindeutig identifiziert werden können. Später kann Windows während des Updates diese Metadatendatei verwenden, um das alte Paket mit dem neuen Paket zu vergleichen und die Dinge zu bestimmen, die auf das Gerät heruntergeladen werden müssen. Angesichts dieser Metadaten können Teile des Pakets eindeutig identifiziert werden. Dies bedeutet, dass die differenzielle Updatemaschine von jeder Version eines Pakets bis zu jeder anderen Version eines Pakets vollständig funktioniert (vorausgesetzt, das Quellpaket hat eine niedrigere Version als das Zielpaket).

Alles beginnt mit der AppxBlockMap.xml-Datei (die oben genannten Metadaten). Die AppxBlockMap.xml Datei ist ein XML-Dokument, das eine zweidimensionale Liste mit Informationen zu Dateien im Paket enthält. Die erste Dimension enthält ausführliche Details zu der Datei (z. B. Name und Größe) und die zweite Dimension stellt SHA2-256-Hashdarstellungen der einzelnen 64 KB-Segmente dieser Datei bereit (auch als "Block").

Der erste Hash stellt den ersten 64 KB-Block der Datei dar, und der zweite Hash stellt die verbleibenden 35 KB dar , wenn die Datei 101188 Bytes ist.

Wenn der zweite Block dieser Datei geändert wurde, wird der Hash auch aktualisiert, um diese Tatsache widerzuspiegeln. Die Downloadkomponente versteht dies und zieht nur den zweiten Block herunter und verwendet den ersten unveränderten Block aus dem alten Paket wieder.

Wenn sich eine gesamte Datei nicht geändert hat (die durch den vollständigen Satz nicht geänderter Blöcke bestimmt wird), kann diese Datei aus dem vorhandenen Paket wiederverwendet werden – was zu enormen Einsparungen für Windows 10-Benutzer führt.

Upgrade auf neuere Versionen

Wenn eine neuere Version des MSIX-App-Pakets installiert wird, werden die Manifestdatei verglichen und geänderte Dateiblöcke identifiziert. Wenn das MSIX-App-Paket auf die neuere Version aktualisiert wird, werden nur die geänderten Dateien abgerufen. Dadurch wird der Bandbreitenverbrauch reduziert, insbesondere wenn sich die aktualisierten Anwendungen auf einer Netzwerkfreigabe oder außerhalb einer Organisation befinden.

Upgrade auf ältere Versionen

Wenn eine ältere Version des MSIX-App-Pakets installiert ist, wird die Manifestdatei verglichen und geänderte Dateiblöcke identifiziert. Da das MSIX-App-Paket auf die ältere Version aktualisiert wird, werden nur die geänderten Dateien abgerufen, die den Bandbreitenverbrauch verringern, wenn sich aktualisierte Anwendungen auf einer Netzwerkfreigabe oder außerhalb einer Organisation befinden.

Optimieren der Upgradeerfahrungen

Die Bereitstellung oder Installation eines MSIX-App-Pakets auf einem Gerät kann so konfiguriert werden, dass die Benutzerfreundlichkeit verbessert wird. Wenn eine App bereitgestellt wird, kann das Gerät so konfiguriert werden, dass die App aktualisiert wird, nachdem der Benutzer die App geschlossen hat, oder erzwingen, dass die App geschlossen und aktualisiert wird.

PowerShell

Die Installation eines MSIX-App-Pakets auf einem Gerät mithilfe von PowerShell nutzt das Add-appxpackage-Cmdlet . Dieses Cmdlet enthält die folgenden Parameter, die die MSIX-App-Paketinstallation oder das Upgrade der Benutzeroberfläche ändern.

Parameter BESCHREIBUNG
-DeferRegistrationWhenPackagesAreInUse Gibt an, dass dieses Cmdlet verhindert, dass das MSIX-App-Paket aktualisiert wird, 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 Gibt an, dass das MSIX-App-Paket erzwingt, dass eine bestimmte Version eines Pakets gestaged/registriert wird, unabhängig davon, ob eine höhere Version bereits gestaged/registriert ist.
-InstallAllResources Gibt an, dass das Cmdlet die Bereitstellung aller Ressourcenpakete erzwingt, die durch ein Bundle-Argument angegeben sind. Dieser Parameter setzt die Überprüfung der Ressourcenanwendbarkeit durch die Bereitstellungs-Engine außer Kraft und erzwingt die Bereitstellung aller Ressourcenpakete.
-RetainFilesOnFailure Bei einer fehlgeschlagenen Bereitstellung werden Dateien, die während des Installationsvorgangs auf dem Zielcomputer erstellt wurden, nicht entfernt, wenn dieser Switch auf "True" festgelegt ist.
-Aktualisieren Gibt an, dass das hinzugefügte Paket ein Abhängigkeitspaketupdate ist. Ein Abhängigkeitspaket wird entfernt, wenn die übergeordnete App entfernt wird. Wenn 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, finden Sie im PowerShell-Artikel zu add-appxpackage.