Rimozione di patch

A partire da Windows Installer versione 3.0, è possibile creare e installare patch che possono essere disinstallate e in qualsiasi ordine, senza dover disinstallare e reinstallare l'intera applicazione e altre patch. Windows Installer 3.0 consente anche di creare pacchetti patch con una tabella MsiPatchSequence che contiene informazioni sulla sequenziazione delle patch. Con le versioni di Windows Installer precedenti a Windows Installer 3.0, l'unico metodo per rimuovere determinate patch da un'applicazione consiste nel disinstallare l'intera applicazione con patch e quindi reinstallare senza riapplicare eventuali patch da rimuovere.

La disinstallazione di una patch dipende dalla modalità di creazione della patch, dalla versione di Windows Installer usata per installare la patch e dalle modifiche apportate dalla patch all'applicazione. Se una patch non è disinstallabile, l'unico modo per rimuovere la patch consiste nel disinstallare l'intera applicazione e reinstallare senza applicare la patch da rimuovere.

È possibile disinstallare una o più patch usando un'opzione della riga di comando, l'interfaccia di scripting o chiamando MsiRemovePatches da un'altra applicazione. Per altre informazioni su come disinstallare le patch, vedere Disinstallazione di patch .

Il valore della proprietà MSIPATCHREMOVE elenca le patch da disinstallare. Per ogni patch nell'elenco, il programma di installazione verifica che la patch sia disinstallabile. Se l'utente non dispone dei privilegi per rimuovere la patch, la patch è sconosciuta per il prodotto, i criteri di patch impediscono la rimozione o la patch è stata contrassegnata come non disinstallabile, il programma di installazione restituisce un errore che indica una transazione di installazione non riuscita. Per altre informazioni su cosa determina se una patch non è disinstallabile, vedere Patch disinstallabili.

Dopo aver verificato la patch come rimovibile, il programma di installazione rimuove la patch dalla sequenza di applicazione patch. Per altre informazioni su come Windows Installer 3.0 determina la sequenza da usare durante l'applicazione di patch, vedere Sequenziazione di patch. Si noti che la rimozione delle patch dalla sequenza può causare la visualizzazione attiva delle patch contrassegnate come obsolete o sostituite.

Tutte le patch selezionate per la rimozione sono elencate nella proprietà MsiPatchRemovalList . Questa proprietà è una proprietà privata impostata dal programma di installazione e può essere utilizzata in espressioni condizionali o sottoposte a query da azioni personalizzate. La proprietà contiene l'elenco di GUID di codice patch di patch da rimuovere. Un'azione personalizzata può determinare se lo stato di installazione della patch viene applicato, obsoleto o sostituito chiamando la proprietà MsiGetPatchInfoEx o PatchPropertydell'oggetto Patch.

Dopo che una patch è stata rimossa, lo stato dell'applicazione è uguale a se la patch non è mai stata installata. Se possibile, il programma di installazione limita il processo al subset di funzionalità interessate dalla patch da rimuovere. Il programma di installazione imposta automaticamente la proprietà REINSTALL sull'elenco delle funzionalità interessate. I file aggiunti dalla patch vengono rimossi e i file modificati dalla patch vengono sovrascritti. I file e le voci del Registro di sistema vengono ripristinati nella versione prevista dal prodotto meno la patch. Le funzionalità e i componenti aggiunti dalla patch non vengono registrati dall'applicazione. Si noti che altri contenuti aggiunti dalla patch possono rimanere nel computer dell'utente se il contenuto viene usato da un'altra patch ancora applicabile.

Se un file di un componente condiviso viene aggiornato da una patch, la modifica influisce su tutte le applicazioni che condividono il componente. Quando la patch viene rimossa, la modifica influisce su tutte le applicazioni che condividono il componente. Ciò significa che la rimozione di una patch da un'applicazione può ripristinare il file del componente condiviso in una versione precedente rispetto a quella richiesta da un'altra applicazione. Ciò potrebbe correggere la prima applicazione, ma causare l'interruzione del funzionamento della seconda applicazione. In questo caso, la seconda applicazione può essere ripristinata reinstallando la seconda applicazione usando i metodi descritti in Reinstallazione di una funzionalità o di un'applicazione. In questo modo verrà ripristinata la versione con patch del file.

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MSIPATCHREMOVE

MsiRemovePatches

Sequenziazione patch

Patch Uninstall Custom Actions

Patch disinstallabili

Disinstallazione di patch