嘿,我有一个用 WiX 构建的 MSI,它尝试指定仅在安装 IIS 时满足的启动条件。这种情况在 WS2008 x64 上无法正常工作。它适用于我的 Windows 7 x64 机器。

属性(property):

<!-- This is used later in a Launch condition. -->
<!-- see http://learn.iis.net/page.aspx/135/discover-installed-components/ -->
<Property Id="IIS7" Value="#0">
  <RegistrySearch Id="IIS7W3SVC"
                  Type="raw"
                  Root="HKLM"
                  Key="SOFTWARE\Microsoft\InetStp\Components"
                  Name="W3SVC" />
</Property>

条件:
<Condition Message="Cannot install. You must install IIS before installing this product.">
  NOT IIS56 = "#0" OR NOT IIS7 = "#0"
</Condition>

(IIS6 也有一个属性,但这在这里应该无关紧要)。

用户报告说他看到了此“无法安装”消息。他还说 IIS 已安装并运行。

WS2008 是否有不同的 IIS 注册表项?
确定 IIS 是否存在的首选机制是什么?

这是 WIX 3.5。不确定确切的 WS2008 版本。

它可能类似于 the issue described here 。这个问题无解。

想法?

最佳答案

为什么不直接使用 Wix IIS 扩展和 IISMAJORVERSION 和 IISMINORVERSION?

我们使用它们,我知道它们适用于我们从 XP 到 2008R2 使用过的每个版本的 Windows

  <!-- Reference WixIIsExtension in project and pull in property by ref -->
  <PropertyRef Id="IISMAJORVERSION"/>
  <Condition Message="Install requires IIS 6 or 7.">
     <![CDATA[Installed OR (IISMAJORVERSION AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7"))]]>
  </Condition>

关于iis - 具有预请求 IIS 的启动条件的 WIX MSI 在 WS2008 上失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5734966/

10-14 16:27