2011-01-11 4 views
0

IISの管理部分(IIS WMIプロバイダ)は、IISランタイムとは別にインストール可能です。IISにアドオンをインストールする場合、IIS WMIプロバイダが利用可能であることを確認するにはどうすればよいですか?

IISへのアドオン用のインストーラを作成したいと思います.WIXプロジェクトでIISランタイムが存在するかどうかを確認する方法を知っています。しかし、インストーラーはさまざまな管理作業、つまりWMIのことを行う必要があります。そのためには、IISだけでなくIIS用のWMIプロバイダーも必要です。私が言ったように、存在してもいなくてもよい。

WIXプロジェクトでは、IIS WMIプロバイダの存在を確認する方法と、IIS WMIプロバイダが存在しない場合に適切なダイアログをユーザーに提示する方法を教えてください。


インストーラは、すでにJavaScriptで実装され、いくつかのMSIカスタムアクションを持っている、と私は、WMIプロバイダの存在を確認するために...

var iis = GetObject("winmgmts:root\WebAdministration"); 

を使用することができます。 WMIプロバイダがない場合は失敗します(スロー)。私はこれを使ってPropertyを設定し、Product.wxsファイルのConditionの早い段階でPropertyをチェックすることができます。

これは動作する予定ですか?他の提案はありますか?

答えて

0

これは、適切な設定のためにレジストリを参照するのが良い方法だと思います。別の質問は、正しいものを見つけることが必ずしも容易ではないということです。 :)

例えば、私のインストーラは、IIS 6互換性(IIS 7マシン用)、特にIIS 6 WMI互換性を有効にする必要があります。この設定は、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ InetStp \ Componentsの下にあり、WMICompatibilityという値になっています。したがって、私がすべきことは、RegistrySearch要素を作成してこの値を検索し、1であることを確認することです。

正しい設定を見つけるために、すべてのIISパラメータが存在するキーを検索しますIISの各バージョンについては、私はここではわかりません)、必要なIIS WMIプロバイダを有効にして、レジストリで変更された内容を確認してください。私は、レジストリモニタソフトウェアがここで多く役立つと思う。

+0

私はWixプロジェクトのレジストリ検索に従ってプロパティを設定する方が簡単だから、レジストリを使うことを考えました。 WMIプロバイダが存在しているかどうかを判断するために、regキーをスキャンするかどうかを決定することができるという確信はほとんどありませんでした。多分、オブジェクトの1つがそこに存在するかもしれませんが、別のオブジェクトは存在しません。等々。あまりにも多くの可能性とエッジケース。だからこそ私は存在のテストとしてモニカを通してオブジェクトのインスタンス化を使うことに決めました。 – Cheeso

0

はい、モニカを介してオブジェクトのインスタンス化をテストする方法があります。それは合理的な戦略であり、登録簿の周りで談合するよりも優れています。常に正しい結果を提供します。 WMIプロバイダが利用できない場合に発生する例外をキャッチするだけです。

関連する問題