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