Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het bijwerken van moderne Windows-app-pakketten is geoptimaliseerd om ervoor te zorgen dat alleen de essentiële gewijzigde bits van de app worden gedownload om een bestaande Windows-app bij te werken.
Metagegevens in het AppxBlockMap.xml-bestand
Op hoog niveau wordt tijdens het maken van pakketten een stukje metagegevens gemaakt en opgeslagen in het app-pakketbestand (.appx of .msix), waardoor delen van het pakket uniek kunnen worden geïdentificeerd door Windows. Wanneer u een app-pakket bijwerkt, gebruikt Windows het metagegevensbestand om het oude pakket te vergelijken met het nieuwe pakket en te bepalen wat er moet worden gedownload naar het apparaat.
Omdat de metagegevens delen van het pakket uniek kunnen worden geïdentificeerd, betekent dit dat de differentiële updatemachines volledig functioneren van elke versie van een pakket naar elke andere versie van een pakket (ervan uitgaande dat het bronpakket een lagere versie heeft dan het doelpakket).
De metagegevens bevinden zich in het AppxBlockMap.xml bestand (de bovengenoemde metagegevens). Het AppxBlockMap.xml bestand is een XML-bestand dat een tweedimensionale lijst met informatie over bestanden in het pakket bevat. De eerste dimensie bevat details op hoog niveau van het bestand (bijvoorbeeld naam en grootte) en de tweede dimensie biedt SHA2-256 hash-weergaven van elk 64 kB-segment van dat bestand (het 'blok').
Hier volgt een voorbeeld van een AppxBlockMap.xml-bestand.
<!--?xml version="1.0" encoding="UTF-8"?-->
<blockmap hashmethod="http://www.w3.org/2001/04/xmlenc#sha256"
xmlns="http://schemas.microsoft.com/appx/2010/blockmap">
<file lfhsize="66" size="101188" name="asset1.jpg">
<block hash="2bidNE0JyaO+FjaTpRe0g8HzUCblUf/cfBcTXiZR74c="/>
<block hash="+jeFwKrGk5gw9wSICWsWRtEQXwcLC7af4EWS7DgrAkY="/>
</file>
<file lfhsize="61" size="108823" name="asset2.jpg">
<block hash="u0+5S0GOzwyAfYx54tKycZyHRBYm2ybvq27dkIKqDsQ="/>
<block hash="F9h0FRMetL6BNCszAYB0bgyx2KWN+dO1bls4Q9m267c="/>
</file>
...
</blockmap>
Het eerste bestand (asset1.jpg) heeft twee blok-hashes. De eerste hash vertegenwoordigt het eerste blok van 64 kB van het bestand en de tweede hash vertegenwoordigt de resterende 35 kB, aangezien het bestand 101188 bytes is.
Als tijdens een update het tweede blok van dat bestand wordt gewijzigd, wordt de hash ook bijgewerkt om dat weer te geven. Het downloadonderdeel haalt het tweede blok op en hergebruikt het eerste ongewijzigde blok van het oude pakket.
Als een volledig bestand op grotere schaal niet wordt gewijzigd (bepaald door een volledige set blokken die niet worden gewijzigd), kan dat bestand opnieuw worden gebruikt vanuit het bestaande pakket, waardoor tijd en resources worden bespaard.
Beperkingen voor app-updates
Updates worden uitgevoerd binnen dezelfde pakketfamilie
De familienaam van het pakket bestaat uit de pakketnaam en Publisher. Als u wilt kunnen bijwerken, moeten de metagegevens van het nieuwe pakket hetzelfde zijn als het eerder geïnstalleerde pakket. Hier volgt een voorbeeld van een familienaam van een pakket: Contoso.ContosoApp_8wekyb3d8bbwe.
App-updates moeten naar een hogere versie worden geüpdatet.
Over het algemeen moeten app-updates de versie van het nieuwe pakket hoger zijn dan het huidige pakket. Het updateproces van de app staat niet toe dat pakketten met lagere versies standaard worden geïnstalleerd. Vanaf Windows 10 versie 1809 kunt u ForceUpdateToAnyVersion gebruiken om toe te staan dat pakketten met een lagere versie worden geïnstalleerd wanneer er een overschrijvingsschakelaar wordt opgegeven als onderdeel van de update-argumenten. Het is momenteel beschikbaar in PowerShell met behulp van de optie ForceUpdateFromAnyVersion , via PackageManager-API, EnterpriseModernAppManagement CSP en in het Bestand AppInstaller.
Opmerking
Als u de functie ForceUpdateToAnyVersion gebruikt voor een app uit de Windows Store, zal Windows Update de app automatisch bijwerken naar de nieuwste toepasselijke versie.
App-updatepakket kan een andere architectuur hebben
Het updatepakket voor het momenteel geïnstalleerde app-pakket kan van een andere architectuur zijn, zolang de nieuwe architectuur wordt ondersteund op het besturingssysteem waarin het wordt geïmplementeerd. Als u bijvoorbeeld x86-versie van MyFavApp(v1.0.0.0) hebt geïnstalleerd op een x64-Windows 10-apparaat en het updatepakket(v2.0.0.0) x64-versie is: MyFavApp(1.0.0.0) wordt bijgewerkt naar MyFavApp(v2.0.0.0).
Pakketten kunnen worden bijgewerkt van een MSIX naar een MSIXbundle
Een updatepakket kan van MSIX-pakket naar een MSIXbundle-pakket gaan, maar niet omgekeerd. Wanneer een MSIXbundle is geïnstalleerd, moet de pakketupdate een bundel blijven.
Differentiële updatetechnologie optimaliseren
Er zijn een aantal manieren om ervoor te zorgen dat de differentiële updatetechnologie tot het maximum is geoptimaliseerd.
- Houd bestanden in het pakket klein. Dit zorgt ervoor dat als er een wijziging nodig is die van invloed is op het volledige bestand, de update nog steeds klein is.
- Wijzigingen in bestanden moeten indien mogelijk additief zijn. Additieve wijzigingen zorgen ervoor dat apparaten van eindgebruikers deze gewijzigde blokken alleen downloaden.
- Wijzigingen in bestanden moeten indien mogelijk zijn opgenomen in 64 kB-blokken. Als uw app grote bestanden heeft en wijzigingen in het midden van een bestand vereist, kan het aanzienlijk helpen om wijzigingen in een set blokken te bevatten.