Patch di sequenziazione
A partire da Windows Installer 3.0, gli autori possono aggiungere informazioni di sequenziazione patch al database del pacchetto patch nella tabella MsiPatchSequence . Il programma di installazione può usare queste informazioni per determinare quali patch sono applicabili a un pacchetto di installazione, per determinare la sequenza di patch migliore e per installare le patch in un ordine costante indipendente dall'ordine fornito al sistema.
Windows Installer 2.0: Non supportato. Le versioni di Windows Installer precedenti a Windows Installer 3.0 installano le patch nell'ordine in cui vengono fornite al sistema indipendentemente dal fatto che contengano una tabella MsiPatchSequence .
Di seguito è necessario usare la funzionalità di sequenziazione delle patch.
- I pacchetti patch (file con estensione msp) devono avere una tabella MsiPatchSequence contenente informazioni di sequenziazione. Il programma di installazione installa le patch che non hanno una tabella MsiPatchSequence nell'ordine in cui vengono forniti al sistema.
- Le patch vengono installate usando Windows Installer 3.0 o versioni successive.
Windows Installer versione 3.0 include le funzioni seguenti che le applicazioni possono usare per determinare la sequenza di patch migliore.
- La funzione MsiDeterminePatchSequence accetta un elenco di patch e determina in quale sequenza possono essere applicate a un prodotto installato. Questa funzione consente di creare patch o prodotti già installati nel sistema.
- La funzione MsiDetermineApplicablePatches accetta un elenco di patch e determina in quale sequenza possono essere applicate a un prodotto installato. Questa funzione non tiene conto di patch o prodotti già installati nel sistema.
Windows Installer versione 3.0 può applicare più patch a un prodotto in un'unica installazione di patch. Il gruppo di patch può contenere patch che includono informazioni sulla sequenza di patch (una tabella MsiPatchSequence ) e patch che non fanno. Windows Installer installa i pacchetti patch senza questa tabella nell'ordine in cui vengono forniti al sistema. Gli account del programma di installazione per i pacchetti di patch che non contengono una tabella MsiPatchSequence, ma contrassegnati come patch obsolete o sostituite dal metodo descritto nella sezione seguente.
Quando Windows Installer versione 3.0 installa più patch, segue questa procedura per determinare la sequenza in cui vengono applicate singole patch al prodotto:
Le patch installate senza una tabella MsiPatchSequence vengono inserite nella sequenza nell'ordine applicato al prodotto. La prima patch applicata viene posizionata prima nella sequenza.
Le nuove patch senza una tabella MsiPatchSequence vengono inserite nella sequenza. Queste patch vengono applicate dall'installazione di patch corrente. Vengono inseriti nell'ordine fornito al sistema e inseriti dopo tutte le patch nel passaggio 1.
Le patch obsolete vengono eliminate dalla sequenza di patch.
Nota
Un pacchetto di patch può specificare nella proprietà Revision Number Summary un elenco esplicito di patch obsolete da rimuovere dalla patch. Questo elenco è destinato all'uso da parte delle versioni di Windows Installer precedenti alla versione 3.0. Windows Installer versione 3.0 rimuove le patch contrassegnate come obsolete dalla sequenza, solo se le patch non hanno la tabella MsiPatchSequence.
Il programma di installazione passa attraverso la sequenza di patch e determina quali patch sono applicabili nella sequenza specificata. Quando vengono applicate più patch a un prodotto, ogni patch nella sequenza trasforma anche il database di installazione del prodotto (.msi file). Una patch è applicabile in una determinata sequenza solo se la trasformazione del database è in grado di accettare il codice del prodotto, la versione, la lingua e il codice di aggiornamento risultante dall'applicazione delle trasformazioni di tutti i pacchetti di patch precedenti al database del prodotto. Il programma di installazione elimina eventuali patch inapplicabili dalla sequenza.
Il programma di installazione inizia a inserire patch con informazioni di sequenziazione nella tabella MsiPatchSequence . Le patch di aggiornamento secondarie con la tabella MsiPatchSequence vengono inserite nella sequenza dopo le patch sequenze nei passaggi precedenti e nell'ordine delle versioni più basse del prodotto più alto dopo l'aggiornamento. Windows Installer elimina quindi eventuali patch di aggiornamento secondarie inapplicabili in questa sequenza.
Le patch di aggiornamento di piccole dimensioni destinate agli aggiornamenti secondari con una tabella MsiPatchSequence vengono assegnate alla versione più alta della patch di aggiornamento secondaria nella sequenza.
Tutte le patch di aggiornamento di piccole dimensioni che rimangono non firmate dopo i passaggi precedenti e che hanno la tabella MsiPatchSequence , vengono inserite nella sequenza prima del primo aggiornamento secondario con la tabella MsiPatchSequence e dopo il database di installazione di .msi e le patch senza la tabella MsiPatchSequence. Windows Installer elimina quindi tutte le piccole patch di aggiornamento inapplicabili in questa sequenza.
Windows Installer versione 3.0 elimina le patch sostituite dalla sequenza. Quando una patch sostituisce le patch che si verificano in precedenza nella sequenza di patch, la patch contiene tutte le correzioni nelle patch precedenti. Le patch precedenti non sono più necessarie. Windows Installer richiede le informazioni nella tabella MsiPatchSequence per eliminare le patch sostituite.
Nota
Le patch destinate a sostituire un set precedente di patch deve essere creato per sostituire le patch precedenti in tutte le famiglie di patch. Le patch di aggiornamento di piccole dimensioni possono sostituire solo gli aggiornamenti di piccole dimensioni. Gli aggiornamenti secondari possono sostituire sia gli aggiornamenti di piccole dimensioni che altri aggiornamenti secondari.
Patch di aggiornamento di piccole dimensioni che contengono tabelle MsiPatchSequence , vengono sequenziate all'interno delle versioni del prodotto in base alle informazioni di sequenziazione nelle tabelle MsiPatchSequence. Determina la sequenza di patch finale.
Una patch che non deve più essere usata può essere eliminata dalla sequenza di patch. Per altre informazioni su come eliminare le patch dalla sequenza di patch, vedere Eliminazione di patch.
Per un esempio di come la tabella MsiPatchSequence può essere usata per applicare patch nell'ordine in cui vengono create, vedere l'esempio di patch multiple.