Eseguire il rollback di azioni personalizzate
Quando il programma di installazione elabora lo script di installazione, genera contemporaneamente 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 annullate da un rollback dell'installazione, le azioni personalizzate che modificano direttamente il sistema o che eseguono comandi ad altri servizi di sistema, non possono essere sempre 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 azioni. Un'azione personalizzata di rollback deve anche gestire il caso in cui l'azione personalizzata posticipata venga 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 di azioni personalizzate non vengono eseguite quando il rollback è disabilitato. Se un autore di pacchetti richiede questi tipi di azioni personalizzate per l'installazione corretta, è consigliabile usare la proprietàrollbackDisabledin una condizione che impedisce la continuazione dell'installazione quando il rollback è disabilitato. Per informazioni su come disabilitare il rollback, vedere 'installazione del rollback (Windows Installer).