1

私はvs2008でWebセットアッププロジェクトを作成し、いくつかのカスタムアクションを追加しました。インストール中に、デフォルトのフォーム(apppool、appname、website)、いくつかの事前定義されたカスタムフォーム、およびいくつかの自作のカスタムフォームを取得します。インストール中に、レジストリにデータを追加します。

問題は1つだけです。TARGETSITEプロパティです。このプロパティはデフォルトのフォーム(Context.Parameters["TargetSite"]はdefaultWebSiteの"/ LM / W3SVC / 1"のようなもの)で入力され、その値はレジストリに適切に追加されます。修復機能を使用するまでは、すべて問題ありません...

修復中、最初のいくつかのデフォルトフォームはインストールによってスキップされるため、TARGETSITEプロパティは空になります(Context.Parameters["Targetsite"]は"")。悲しいことに、私はそれを妨害して、まさにその理由でそれを追加したレジストリから必要な値を取得することはできません。「overrideInstall」メソッドでカスタムコードがトリガーされる前に、レジストリ値が更新されるためです。onBeforeInstallでさえ、レジストリが更新された後に発生します。

ロールバックが実行されると、修復中にレジストリキーが以前に正しい値にリセットされるため、カスタムアクションコード内からこの値にアクセスできると信じています。

誰かがこの重要な価値を得る方法について何か提案がありますか?

PS:レジストリキー内で条件を設定しようとしたので、TARGETSITE値が空でない場合にのみ更新されますが、これは大いに無視されるのではないかと思います...レジストリキーのTARGETSITE!=""条件フィールドにはまったく影響がありません...

4

1 に答える 1

1

インストーラーのレジストリ キーを回避することで問題を解決しました。Context.Parameters["TARGETSITE"] 値を保存するインストーラーの registryEntry の下にサブキーを手動で作成します。カスタム キーであるため、修復機能によって keyValue が上書きされることはありません。これで、コンテキストまたはレジストリに価値があります。

FunFacts: インストーラー独自のキー内に customKey を作成するとき、インストーラーのレジストリ キーを削除する標準メカニズムを利用すると、customKey も消えてしまいます。

他の誰かがいつかこの問題に直面した場合、これが役立つかもしれません...

于 2009-12-17T12:59:12.100 に答える