显然,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文件的早期检查条件中的属性。
这会起作用吗?还有其他建议吗?
答案 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提供程序不可用时发生的异常。