如果未选择任何Web功能,如何在Wix中禁用WebSite操作?

时间:2009-11-11 15:00:52

标签: iis wix windows-installer

Wix WebSite操作has to be specified outside of a Component如果您想安全地使用默认网站(安全地说我的意思是安装程序不会在卸载时删除默认网站)。

<Fragment>
    <iis:WebSite Id="DefaultWebSite" Description="Default Web Site" Directory="INSTALLDIR">
        <iis:WebAddress Id="AllUnassigned" Port="80" />
    </iis:WebSite>
</Fragment>

我的安装程序有许多功能,有些功能仅在安装IIS时启用。根据条件禁用功能正常,并且没有创建虚拟目录或站点,但在安装过程中,由于WebSite操作,MSI仍尝试联系IIS,并且在未安装IIS的计算机上失败:

"Cannot connect to Internet Information Server. (-2137221164      )"

我发现了一些关于SKIPCONFIGUREIIS的内容,但这似乎不适用于Wix 3。

3 个答案:

答案 0 :(得分:3)

这让我免于悲痛!只是想补充一点,无论安装状态如何,上面都会在卸载时跳过IIS配置。 I.E.如果安装了该功能,则卸载时不会从IIS中删除虚拟目录。

这似乎对我有用:

<InstallExecuteSequence>
    <!-- Disable ConfigureIIS if we don't need it: -->
    <Custom Action="ConfigureIIs" After="InstallFiles"><![CDATA[&Web=3 OR !Web=3]]></Custom>
</InstallExecuteSequence>

答案 1 :(得分:1)

我设法使用InstallExecuteSequence中的自定义操作条件支持在Wix 3中解决了这个问题。此示例假定“Web”功能是唯一需要执行IIS操作的功能:

<InstallExecuteSequence>
    <!-- Disable ConfigureIIS if we don't need it: -->
    <Custom Action="ConfigureIIs" After="InstallFiles">(&amp;Web = 3)</Custom>
</InstallExecuteSequence>

答案 2 :(得分:0)

我只是在WIX生成的MSI中查找并找到与InstallExecuteSequence表中的ConfigureIis行关联的条件NOT SKIPCONFIGUREIIS AND VersionNT > 400

换句话说,你也可以使用像这样的自定义动作:

<InstallExecuteSequence>
  <!-- Disable the ConfigureIIs action if we don't need it: --> 
  <Custom Action="CA.SkipConfigureIIs" 
          After="InstallFiles">NOT &amp;F.IisFeature = 3</Custom>
</InstallExecuteSequence>


<CustomAction Id="CA.SkipConfigureIIs"
              Property="SKIPCONFIGUREIIS"
              Value="1"
              Return="check" />