具有启动条件以预先请求IIS的WIX MSI在WS2008上失败

Che*_*eso 12 iis windows-installer wix windows-server-2008

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

财产:

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

条件:

<Condition Message="Cannot install. You must install IIS before installing this product.">
  NOT IIS56 = "#0" OR NOT IIS7 = "#0"
</Condition>
Run Code Online (Sandbox Code Playgroud)

(IIS6也有一个属性,但这应该与此无关).

用户报告他看到此"无法安装"消息.他还说IIS已安装并正常运行.

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

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

它可能类似于此处描述的问题.这个问题尚未解决.

想法?

Rob*_*ady 30

为什么不使用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>
Run Code Online (Sandbox Code Playgroud)

  • +1.@Cheeso,你正用这种方法重新发明轮子. (2认同)