Rollback di azioni personalizzate
Quando il programma di installazione elabora lo script di installazione, genera simultaneamente uno script di rollback. Oltre allo script di rollback, il programma di installazione salva una copia di ogni file eliminato durante l'installazione. Questi file vengono conservati in una directory di sistema nascosta. Al termine dell'installazione, lo script di rollback e i file salvati vengono eliminati. Se un'installazione non riesce, il programma di installazione tenta di eseguire il rollback delle modifiche apportate durante l'installazione e ripristinare lo stato originale del computer.
Anche se le azioni personalizzate che pianificano le operazioni di sistema inserendo righe nella tabella di database vengono invertite da un rollback dell'installazione, le azioni personalizzate che modificano direttamente il sistema o che eseguono comandi ad altri servizi di sistema, non possono sempre essere annullate da un rollback. Un'azione personalizzata di rollback è un'azione eseguita dal programma di installazione solo durante il rollback dell'installazione e lo scopo è invertire un'azione personalizzata che ha apportato modifiche al sistema.
Un'azione personalizzata di rollback è un tipo di azione personalizzata di esecuzione posticipata, perché l'esecuzione viene posticipata quando viene richiamata durante la sequenza di installazione. Differisce da un'azione personalizzata posticipata regolare in quanto viene eseguita solo durante un rollback. Un'azione personalizzata di rollback deve sempre precedere l'azione personalizzata posticipata di cui esegue il rollback nella sequenza di azione. Un'azione personalizzata di rollback deve anche gestire il caso in cui l'azione personalizzata posticipata viene interrotta al centro dell'esecuzione. Ad esempio, se l'utente deve premere il pulsante Annulla durante l'esecuzione dell'azione personalizzata.
Si noti che il rollback delle azioni personalizzate non può essere eseguito in modo asincrono. Vedere Azioni personalizzate sincrone e asincrone.
Il complemento a un'azione personalizzata di rollback è un'azione personalizzata di commit. Il programma di installazione esegue un'azione personalizzata di commit durante la sequenza di installazione, copia l'azione personalizzata nello script di rollback, ma non esegue l'azione durante il rollback.
Si noti che un'azione personalizzata di rollback potrebbe non essere in grado di rimuovere tutte le modifiche apportate dalle azioni personalizzate di commit. Anche se il programma di installazione scrive le azioni personalizzate di rollback e commit nello script di rollback, eseguire il commit di azioni personalizzate solo dopo che il programma di installazione ha elaborato correttamente lo script di installazione. Le azioni personalizzate di commit sono le prime azioni da eseguire nello script di rollback. Se un'azione personalizzata di commit ha esito negativo, il programma di installazione avvia il rollback, ma può solo eseguire il rollback di tali operazioni già scritte nello script di rollback. Ciò significa che, a seconda dell'azione personalizzata di commit, un rollback potrebbe non essere in grado di annullare le modifiche apportate dall'azione. È possibile ignorare gli errori nelle azioni personalizzate di commit creando l'azione personalizzata per ignorare i codici restituiti.
Quando il programma di installazione esegue un'azione personalizzata di rollback, l'unico parametro di modalità impostato è MSIRUNMODE_ROLLBACK. Per una descrizione dei parametri della modalità di esecuzione, vedere MsiGetMode .
È possibile specificare un'azione personalizzata di rollback aggiungendo un flag di opzione al campo Tipo della tabella CustomAction. Vedere Azione personalizzata In-Script Opzioni di esecuzione per il flag di opzione che designa un'azione personalizzata di rollback.
Il rollback e il commit delle azioni personalizzate non vengono eseguite quando il rollback è disabilitato. Se un autore del pacchetto richiede questi tipi di azioni personalizzate per un'installazione corretta, è consigliabile usare la proprietà RollbackDisabled in una condizione che impedisce la continuazione dell'installazione quando il rollback è disabilitato. Per informazioni su come disabilitare il rollback, vedere Rollback Installation (Windows Installer).