如果安装了IIS,我正在尝试选择性地安装虚拟目录。如果没有安装,就跳过它。
我有这张支票:
<Fragment>
<Property Id="IIS_MAJOR_VERSION">
<RegistrySearch Id="CheckIISVersion"
Root="HKLM"
Key="SOFTWAREMicrosoftInetStp"
Name="MajorVersion"
Type="raw" />
</Property>
<iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='INSTALLFOLDER'>
<iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>
</Fragment>
并且基于现有的IIS_MAJOR_VERSION
,我安装了以下特性:
<Feature Id="ProductFeature2" Title="Setup" Level="1">
<ComponentRef Id="AppIIS" />
<Condition Level="0">NOT IIS_MAJOR_VERSION</Condition>
</Feature>
这部分似乎工作,然而,iis:WebSite
节点正在引起问题。我只想找到它,如果IIS_MAJOR_VERSION
也存在。
如果我将iis:WebSite
节点移动到组件组中,它就会工作,但是iis:WebSite
不是在"定位器"模式下安装和卸载(这是坏的)。
是否可以有条件地运行iis:WebSite
检查?
当您从IIS扩展中添加任何元素(如<iis:WebSite>
)时,一个名为ConfigureIIs
的特殊自定义操作被添加到InstallExecuteSequence表中。这个自定义操作是在WiX IIS扩展的帮助下与IIS管理相关的所有内容的所谓入口点。
幸运的是,ConfigureIIs
自定义操作在默认情况下是有条件的,如果需要的话可以跳过它。如果您使用Orca打开生成的MSI包并导航到左侧窗格中的InstallExecuteSequence表,您将看到使用SKIPCONFIGUREIIS
属性的条件。因此,如果您不需要执行任何与IIS相关的活动,则可以将其设置为某些东西(例如1
)。
可以使用SetProperty
元素:
<SetProperty Id="SKIPCONFIGUREIIS" Value="1">NOT IIS_MAJOR_VERSION</SetProperty>