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。
答案 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">(&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 &F.IisFeature = 3</Custom>
</InstallExecuteSequence>
<CustomAction Id="CA.SkipConfigureIIs"
Property="SKIPCONFIGUREIIS"
Value="1"
Return="check" />