私はvs2008でWebセットアッププロジェクトを作成し、いくつかのカスタムアクションを追加しました。インストール中に、デフォルトのフォーム(apppool、appname、website)、いくつかの事前定義されたカスタムフォーム、およびいくつかの自作のカスタムフォームを取得します。インストール中に、レジストリにデータを追加します。
問題は1つだけです。TARGETSITEプロパティです。このプロパティはデフォルトのフォーム(Context.Parameters["TargetSite"]はdefaultWebSiteの"/ LM / W3SVC / 1"のようなもの)で入力され、その値はレジストリに適切に追加されます。修復機能を使用するまでは、すべて問題ありません...
修復中、最初のいくつかのデフォルトフォームはインストールによってスキップされるため、TARGETSITEプロパティは空になります(Context.Parameters["Targetsite"]は"")。悲しいことに、私はそれを妨害して、まさにその理由でそれを追加したレジストリから必要な値を取得することはできません。「overrideInstall」メソッドでカスタムコードがトリガーされる前に、レジストリ値が更新されるためです。onBeforeInstallでさえ、レジストリが更新された後に発生します。
ロールバックが実行されると、修復中にレジストリキーが以前に正しい値にリセットされるため、カスタムアクションコード内からこの値にアクセスできると信じています。
誰かがこの重要な価値を得る方法について何か提案がありますか?
PS:レジストリキー内で条件を設定しようとしたので、TARGETSITE値が空でない場合にのみ更新されますが、これは大いに無視されるのではないかと思います...レジストリキーのTARGETSITE!=""条件フィールドにはまったく影響がありません...