2009-08-25 5 views
6

Ich habe Schwierigkeiten, eine Dokumentation darüber zu finden, wie das stateSaver/savedState Dictionary für den Windows Installer funktioniert. In den Überschreibungen für Install und UnInstall kann jemand helfen.Wie funktioniert das SavedState Dictionary im Installer?

In meiner Installateure Custom Ich habe Einträge in der Registrierung geschrieben, jedes Mal, wenn ich füge ich einige sein Detail auf die state. Ich hatte vermutet, dass dies bei der Deinstallation berücksichtigt wurde, aber wie?

Ich denke, das StateSaver-Wörterbuch wird bei der Installation in die Datei geschrieben, und bei der Deinstallation des Inhalts dieser Datei wird .InstallState gelesen und verwendet, um die gefundenen Einträge zu installieren.

Mein Problem ist, einig Registry-Einträge nach der Deinstallation bleiben, ich weiß nicht, warum und mein Mangel an Verständnis dafür, wie die Umsetzung funktioniert ist nicht zu helfen.

Hier ist ein Beispiel dafür, was die Installation ist

RegistryKey expressionEvaluatorVersionKey = expressionEvaluatorKey.CreateSubKey(packageVersion); 

tun Dies ist ein Teilschlüssel für einen Schlüssel zu schaffen mit dem Windows Installer hinzugefügt. Wie soll ich diesen Sub Key in der Deinstallation löschen?

Antwort

1

Ich bin nicht sicher, Install ist Ihr Problem. Dies ist nur eine Datei, die verschiedene Schlüssel/Wert-Paare enthält. Ich glaube nicht, dass dort irgendetwas Intelligentes vor sich geht.

Das klingt für mich wie die (integrierte) Uninstaller Prozess sagen könnte: „Ich brauche diesen Schlüssel zu löschen, aber es ist nicht leer, deshalb werde ich es verlassen“.

Könnten Sie vielleicht alle Registrierungsschlüssel/Eintrag Schöpfung setzen (und implizit alle Schlüssel/Eintrag Entfernung) in die dll Custom Action?

Ein anderes Problem, das ich mit InstallState gefunden habe - und deshalb versuche ich es zu vermeiden - ist, dass es nicht unbekannt ist, dass Leute mitkommen und die Datei installState löschen. Abhängig davon, wie Sie Ihre benutzerdefinierte Aktion "Deinstallieren" geschrieben haben, bedeutet dies möglicherweise, dass Sie Ihr Programm nie sauber deinstallieren, da Sie beim Versuch, Inhalte zu lesen, die Sie vermutlich im fehlenden Wörterbuch finden, Ausnahmen erhalten.

Da Sie scheinen bereits eine benutzerdefinierte Aktion DLL werden mit dieser Arbeit hoffentlich ist mein Vorschlag zu tun, nicht so belastend?

Verwandte Themen