如果安装了IIS,我正在尝试安装虚拟目录。如果没有安装,那就跳过它。
我有这张支票:
<Fragment>
<Property Id="IIS_MAJOR_VERSION">
<RegistrySearch Id="CheckIISVersion"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp"
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
支票?
答案 0 :(得分:0)
从IIS扩展中添加任何元素(如<iis:WebSite>
)时,会在InstallExecuteSequence表中添加一个名为ConfigureIIs
的特殊自定义操作。在WiX IIS扩展的帮助下,此自定义操作是与IIS管理相关的所有内容的所谓入口点。
幸运的是,ConfigureIIs
自定义操作默认情况下是必要时跳过它的方式。如果使用Orca打开生成的MSI包并导航到左窗格中的InstallExecuteSequence表,您将看到条件使用SKIPCONFIGUREIIS
属性。因此,我们的想法是将其设置为某种内容(例如1
),以防您不需要执行任何与IIS相关的活动。
可以使用SetProperty
元素:
<SetProperty Id="SKIPCONFIGUREIIS" Value="1">NOT IIS_MAJOR_VERSION</SetProperty>