【问题标题】:When installing an add-on to IIS, how can I verify the IIS WMI Provider is available?向 IIS 安装附加组件时,如何验证 IIS WMI 提供程序是否可用?
【发布时间】:2011-01-11 16:00:55
【问题描述】:

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

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

在 WIX 项目中,如何检查 IIS WMI Provider 是否存在,如果 IIS WMI Provider 不存在,如何向用户呈现合理的对话框?


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

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

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

这行得通吗?还有其他建议吗?

【问题讨论】:

    标签: iis wix windows-installer wmi


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想到了使用注册表,因为在Wix项目中根据注册表搜索设置属性更容易。但我不太相信我能够明确确定要扫描的 reg 密钥,以确定 WMI 提供程序是否存在。也许其中一个物体会在那里,但不会有另一个。等等。太多的可能性和极端情况。这就是为什么我决定通过名字对象使用对象的实例化作为存在性测试。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多