在IIS上安装加载项时,如何验证IIS WMI提供程序是否可用?

时间:2011-01-11 16:00:56

标签: iis wix windows-installer wmi

显然,IIS的管理部分 - IIS WMI提供程序 - 可以与IIS运行时分开安装。

我想为IIS的附件生成安装程序,我知道如何检查WIX项目中是否存在IIS运行时。但是,安装程序需要做各种管理事务,WMI事情,为此它不仅需要IIS,还需要IIS的WMI Provider。正如我所说,可能存在也可能不存在。

在WIX项目中,如何检查IIS WMI提供程序是否存在,如果IIS WMI提供程序不存在,如何向用户提供合理的对话框?


安装程序已经在Javascript中实现了一些MSI自定义操作,我可以使用

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

...检查是否存在WMI提供程序。如果没有WMI提供程序,它将失败(抛出)。我想我可以使用它来设置一个属性,然后在Product.wxs文件的早期检查条件中的属性。

这会起作用吗?还有其他建议吗?

2 个答案:

答案 0 :(得分:0)

我认为更好的方法仍然是浏览注册表以进行适当的设置。另一个问题是找到合适的一个并不总是那么容易。 :)

例如,我的安装程序需要启用IIS6兼容性(对于IIS 7计算机),特别是IIS 6 WMI兼容性。此设置位于HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ InetStp \ Components下,名为WMICompatibility。所以,我应该做的就是创建一个RegistrySearch元素来搜索这个值并检查它是否为1.

为了找到正确的设置,我会搜索所有IIS参数所在的密钥(对于每个版本的IIS可能会有所不同,我在这里不确定),启用所需的IIS WMI提供程序,看看是什么在注册表中更改。我怀疑注册表监控软件可以在这里提供很多帮助。

答案 1 :(得分:0)

是的,通过名字对象测试对象的实例化将会起作用。这是一个合理的策略,比在注册表中探索更好。它始终提供正确的结果。只捕获WMI提供程序不可用时发生的异常。