2009-08-25 14 views
6

Non riesco a trovare la documentazione su come funziona StateSaver/SavedState Dictionary per Windows Installer, nelle installazioni di installazione e annullamento di installazione, può aiutare qualcuno.Come funziona il dizionario di SavedState nell'Installer?

Nei miei programmi di installazione CustomAction ho scritto voci di registro, ogni volta che aggiungo alcuni dei suoi dettagli allo stateSaver. Avevo presunto che questo fosse preso in considerazione durante la disinstallazione, ma come?

Penso che lo StateSaver Dictionary sia scritto su file quando si installa, e quando si disinstalla il contenuto di quel file, .InstallState viene letto e utilizzato per installare le voci che trova.

Il mio problema è che alcune voci del registro rimangono dopo la disinstallazione, non so perché e la mia mancanza di comprensione di come funziona il dizionario non aiuta.

Ecco un esempio di ciò che l'installazione sta facendo

RegistryKey expressionEvaluatorVersionKey = expressionEvaluatorKey.CreateSubKey(packageVersion); 

Questo sta creando una chiave secondaria per una chiave aggiunto con il Windows Installer. Come dovrei cancellare questa sottochiave nella disinstallazione?

risposta

1

Non sono sicuro che installState rappresenti il ​​problema. Questo è solo un file che contiene varie coppie di valori-chiave, non penso che ci sia qualcosa di intelligente in corso lì dentro.

Questo mi sembra che il processo di disinstallazione (incorporato) potrebbe dire "Ho bisogno di cancellare questa chiave ma non è vuota, quindi ho intenzione di lasciarlo".

È possibile inserire tutte le chiavi di registro/creazione di voci (e implicitamente tutte le operazioni di rimozione di chiave/voce) nella dll di azione personalizzata?

Un altro problema che ho riscontrato con installState - ed è per questo che cerco di evitarlo - è che non è sconosciuto per le persone venire e cancellare il file installState. A seconda di come hai scritto la tua azione di disinstallazione personalizzata, questo potrebbe significare che non avrai mai una disinstallazione pulita del tuo programma perché otterrai delle eccezioni quando proverai a leggere cose che ti aspetti di essere nel dizionario che mancano.

Dato che sembra che tu stia già utilizzando una dll di azioni personalizzate per fare questo lavoro, spero che il mio suggerimento non sia così oneroso?

Problemi correlati