2009-08-25 22 views
6

私はstateSaver/savedStateディクショナリがWindowsインストーラでどのように動作するかについてのドキュメントを探していますが、インストールとアンインストールのオーバーライドで誰かが助けることができます。savedStateディクショナリはインストーラでどのように機能しますか?

私のインストーラでCustomActionレジストリエントリに書き込んでいますが、その都度、StateSaverに詳細を追加します。 アンインストール時にこれが考慮されていたと私は推測していましたが、どうですか?

StateSaverディクショナリは、インストール時にファイルに書き込まれ、そのファイルの内容をアンインストールすると、.InstallStateが読み込まれ、見つかったエントリをインストールするために使用されると思います。

私の問題は、アンインストール後に残っているレジストリエントリがいくつかあることです。なぜ、ディクショナリの仕組みが理解できないのかわかりません。

は、ここでこれは、Windowsインストーラで追加されたキーのサブキーを作成している

RegistryKey expressionEvaluatorVersionKey = expressionEvaluatorKey.CreateSubKey(packageVersion); 

をやっているインストールの例です。 アンインストールでこのサブキーを削除するにはどうすればよいですか?

答えて

1

installStateが問題であるかどうかわかりません。これは、さまざまなキーと値のペアを含む単なるファイルですが、そこにはインテリジェントなことはないと思います。

(組み込みの)アンインストーラのプロセスで「このキーを削除する必要がありますが、空ではないため、残しておきます」というメッセージが表示されます。

すべてのレジストリキー/エントリの作成(および暗黙的にすべてのキー/エントリの削除)をカスタムアクションのdllに入れることはできますか?

私がinstallStateで見つけたもう1つの問題 - これが避けようとしています - 人々が来て、installStateファイルを削除することは不明ではないということです。アンインストールのカスタムアクションの記述方法によっては、辞書にないと思われるものを読み込もうとすると例外が発生するため、プログラムを完全にアンインストールできないことがあります。

あなたはこの作業を行うためにカスタムアクションdllを既に使用しているようですので、私の提案はそれほど厄介ではありませんか?

関連する問題