私はVisual Studioでセットアッププロジェクトを持っています。通常のインストールの一部として、Windowsレジストリにいくつかのキーと値を作成/更新します。アップデートを元に戻すにはどうすればいいですか?VSセットアッププロジェクト。アンインストール時にレジストリ値を復元するには?
あなたは「彼らは可逆です」と言うかもしれませんが、私はそうは思わないのです。どのように私はそれが動作すると思います:どのレジストリキーと値を指定するVSデザイナーを使用します。これらのキーと値は、インストール時に書き込まれ、アンインストール時に削除されます。シンプル。リバーシブルではないのは何ですか?
インストール中に書き込まれたキーのいずれかに既存の値がある場合に問題が発生します。新しいインストールでは100の値を取得します。アンインストール後、値はまったくありません。値はなくなります。
「カスタムアクション」でこれを回避しようとしました。
ユーザーが確認した場合、msiexecは値をレジストリに書き込みます。以前のレジストリキーにあったものはなくなりました。
この値を保存するには、インストール時に "before"設定を読み込んで保存するカスタムアクションがあります。それはの前に "更新A"を実行します。ここまでは順調ですね。
通常、アンインストール時に、インストール中に追加された正規のレジストリキーと値を削除します。これはうまく動作します。この "更新B"と呼んでください。
元のレジストリ値を復元するには、別の「カスタムアクション」があります。これはアンインストール時に実行されます。元の値がレジストリに正常に復元されます。レジストリは元のインストール前と同じように見えます。私はこれがProcMon(とりわけレジストリアップデートを監視するツール)を使って動作することを確認しました。この "Update C"と呼んでください。
問題は1つだけです。アンインストール時に、アップデートBがアップデートCの後にに発生しています。これは、カスタムアクションが元のレジストリ設定を復元した後、msiは他のすべてのレジストリアップデートと同様にリストアされた値を消去します。
結果、レジストリには復元された値の代わりに空の値があります。
助けが必要ですか?アップデートをどのように並べ替えることができますか?これにはOrcaが必要ですか?私は実際にこれを実現させるために別のツールをインストールして勉強したくありません。私はまたそれが自動であることを望む。間違いなく、これを実現させるためにMSIエディタを視覚的にクリックする必要はありません。
私はWindowsInstaller.Installerクラスを使用していますJavascriptをビルド後のイベントでこれを行うことができますか? Aaron Stebner published a scriptには、「インストール後にアプリケーションを起動しますか?」というメッセージが追加されます。 Visual Studioによって生成されたMSIへのダイアログ。 Windowsインストーラは「起動アプリ」機能をサポートしていますが、VS2008/2005のデザイナーには公開されていません。起動ダイアログで追加されたVSのポストビルドステップとして実行される簡単なバイオプレートスクリプト。
カスタムアクションの発注と同様のことがありますか?