У меня есть настройка, которую мне нужно поддерживать на IIS6 и IIS7. Сейчас Im помощью встроенного расширения IIS для IIS6 так:Условная функция установки не работает в Wix
<Component Id="C_IISApplication" Guid="{9099909C-B770-4df2-BE08-E069A718B938}" >
<iis:WebSite Id='TSIWSWebSite' Description='TSWeb' SiteId='*' Directory='INSTALLDIR'>
<iis:WebAddress Id='tcpAddress' Port='8081' />
</iis:WebSite>
<iis:WebAppPool Id="BlahWSApplicationPool" Name="Blah" />
<iis:WebVirtualDir Id="VirtualDir"
Alias="Blah"
Directory="INSTALLDIR"
WebSite="BlahWSWebSite"
DirProperties="WebVirtualDirProperties">
<iis:WebApplication Id="WebApplication"
Name="Blah"
WebAppPool="BlahWSApplicationPool"/>
</iis:WebVirtualDir>
</Component>
Я попробовал состояние в особенности так:
<Feature Title="IIS6" Id="IIS6" Description="IIS6" ConfigurableDirectory="INSTALLDIR" Level="1" Absent="disallow" Display="hidden">
<ComponentRef Id="C_IISApplication" />
<Condition Level="0"><![CDATA[IISVERSION <> '#6']]></Condition>
</Feature>
Независимо от того, какое значение моего состояния, метабаза материал запускается, и я получаю сообщение об ошибке в системах IIS7.
Я также попытался поместить условие в компонент, и это тоже не сработало.
С этим пользовательским расположением что-то не так?
Да, я проверил, если IISVERSION является устанавливая путем создания сообщения условия после извлечения значения, и оно действительно возвращает либо # 6, либо # 7. Я также согласен с установкой Level = 1 и condition = # 6, поскольку это проще читать ... на самом деле то, что у меня было оригинально, но Ive пытались использовать разные комбинации, пытаясь получить условие, чтобы не устанавливать эту функцию. – Damien
Я сделал еще несколько тестов и удалил атрибут Display = "hidden" из этой функции. Теперь я вижу, что эта функция не отображается в диалоговом окне функций на машине IIS7 и отображается на машине IIS6. поэтому я не понимаю, почему он выполняет транзакцию с метабазой и не может найти машину IIS, если компонент не установлен. Я думал, что пользовательские действия в схеме IIS будут пропущены, если соответствующий компонент не будет установлен. – Damien