Sekvenseringspatchar
Från och med Windows Installer 3.0 kan författare lägga till korrigeringssekvensinformation till korrigeringspaketdatabasen i tabellen MsiPatchSequence. Installationsprogrammet kan använda den här informationen för att avgöra vilka korrigeringar som gäller för ett installationspaket, för att fastställa den bästa korrigeringssekvensen och för att installera korrigeringar i en konstant ordning oberoende av vilken ordning de tillhandahålls till systemet.
Windows Installer 2.0: Stöds inte. Windows Installer-versioner före Windows Installer 3.0 installerar korrigeringar i den ordning de tillhandahålls till systemet oavsett om de innehåller en MsiPatchSequence tabell.
Följande krävs för att använda funktionaliteten för korrigeringssekvenshantering.
- Patch-paket (.msp-filer) måste ha en MsiPatchSequence- tabell som innehåller sekvenseringsinformation. Installationsprogrammet installerar korrigeringar som inte har en MsiPatchSequence-tabell i den ordning som de tillhandahålls till systemet.
- Korrigeringar installeras med Windows Installer 3.0 eller senare.
Windows Installer version 3.0 har följande funktioner som program kan använda för att fastställa den bästa korrigeringssekvensen.
- Funktionen MsiDeterminePatchSequence tar en lista över korrigeringar och avgör i vilken sekvens de kan tillämpas på en installerad produkt. Den här funktionen står för eventuella korrigeringar eller produkter som redan har installerats i systemet.
- Funktionen MsiDetermineApplicablePatches tar en lista över korrigeringar och avgör i vilken sekvens de kan tillämpas på en installerad produkt. Den här funktionen tar inte hänsyn till några korrigeringar eller produkter som redan har installerats i systemet.
Windows Installer version 3.0 kan tillämpa flera korrigeringar på en produkt i en enda korrigeringsinstallation. Gruppen med korrigeringar kan innehålla korrigeringar som innehåller korrigeringssekvensinformation (en MsiPatchSequence tabell) och korrigeringar som inte gör det. Windows Installer installerar korrigeringspaketen utan den här tabellen i den ordning de tillhandahålls till systemet. Installationsprogrammet står för korrigeringspaket som saknar en MsiPatchSequence-tabell, men som har markerats som föråldrade eller ersatta korrigeringar med den metod som beskrivs i följande avsnitt.
När Windows Installer version 3.0 installerar flera korrigeringar följer den dessa steg för att fastställa i vilken ordning enskilda korrigeringar tillämpas på produkten:
Installerade korrigeringar utan en MsiPatchSequence-tabell placeras i sekvensen i den ordning som de tillämpades på produkten. Den första korrigeringen som tillämpades placeras först i sekvensen.
Nya korrigeringar utan en MsiPatchSequence-tabell läggs till i sekvensordningen. Dessa korrigeringar tillämpas av den aktuella korrigeringsinstallationen. De placeras i den ordning som de tillhandahålls till systemet och placeras efter alla korrigeringar i steg 1.
Föråldrade programuppdateringar elimineras från sekvensen med programuppdateringar.
Anteckning
Ett korrigeringspaket kan i egenskapen Revisionsnummersammanfattning ange en explicit lista över föråldrade korrigeringar som ska tas bort av korrigeringen. Den här listan är avsedd att användas av Windows Installer-versioner tidigare än version 3.0. Windows Installer version 3.0 tar bort korrigeringarna som markerats som föråldrade från sekvensen, endast om korrigeringarna inte har tabellen MsiPatchSequence.
Installationsprogrammet går igenom korrigeringssekvensen och avgör vilka korrigeringar som gäller i den angivna sekvensen. När flera korrigeringar tillämpas på en produkt omvandlar varje korrigering i sekvensen även produktens installationsdatabas (.msi fil). En korrigering gäller endast i en specifik sekvens om dess databastransformering kan hantera produktkod, version, språkoch uppgraderingskod, som är resultatet efter att ha applicerat transformeringarna från alla föregående korrigeringspaket på produktdatabasen. Installationsprogrammet eliminerar eventuella oanvändbara korrigeringar från sekvensen.
Installationsprogrammet börjar placera korrigeringar som har sekvenseringsinformation i sin MsiPatchSequence-tabell. Mindre uppgraderingskorrigeringar som har tabellen MsiPatchSequence placeras i sekvensen efter korrigeringarna som sekvenserades i föregående steg och ordnas från deras lägsta till högsta produktversioner innan de uppgraderades. Windows Installer eliminerar sedan eventuella mindre uppgraderingskorrigeringar som inte kan användas i den här sekvensen.
Små uppdateringar korrigeringar för mindre uppgraderingar som har en MsiPatchSequence-tabell tilldelas till den högsta versionen av den mindre uppgraderingskorrigeringen i sekvensen.
Alla små uppdateringar korrigeringar som förblir otilldelade efter föregående steg, och som har MsiPatchSequence tabell, placeras i sekvensen före den första mindre uppgraderingen som har tabellen MsiPatchSequence och efter .msi installationsdatabasen och eventuella korrigeringar utan tabellen MsiPatchSequence. Windows Installer eliminerar sedan eventuella små uppdateringskorrigeringar som inte kan användas i den här sekvensen.
Windows Installer version 3.0 eliminerar ersatta korrigeringar från sekvensen. När en korrigering ersätter korrigeringar som inträffar tidigare i korrigeringssekvensen innehåller korrigeringen alla korrigeringar i de tidigare korrigeringarna. De tidigare korrigeringarna krävs inte längre. Windows Installer kräver informationen i tabellen MsiPatchSequence för att eliminera ersatta korrigeringar.
Anteckning
Patchar som är avsedda att ersätta en tidigare uppsättning patchar måste utformas för att ersätta de tidigare patcharna i alla patchfamiljer. Små uppdateringar korrigeringar kan bara ersätta små uppdateringar. Mindre uppgraderingar kan ersätta både små uppdateringar och andra mindre uppgraderingar.
Små uppdateringspatchar som innehåller MsiPatchSequence tabeller, sekvenseras inom produktversioner enligt sekvenseringsinformationen i deras MsiPatchSequence-tabeller. Detta avgör den sista korrigeringssekvensen.
En korrigering som inte längre ska användas kan elimineras från korrigeringssekvensen. Mer information om hur du eliminerar korrigeringar från korrigeringssekvensen finns i Eliminera korrigeringar.
Ett exempel på hur tabellen MsiPatchSequence kan användas för att tillämpa korrigeringar i den ordning de har skapats finns i Exempel på flera korrigeringar.