J'ai une configuration que je dois prendre en charge sur IIS6 et IIS7. Pour l'instant Im en utilisant les construit dans les extensions IIS pour IIS6 comme ceci:Fonctionnalité d'installation conditionnelle ne fonctionnant pas dans 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>
J'ai essayé une condition dans les caractéristiques comme ceci:
<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>
Quelle que soit la valeur de mon état, la métabase les choses sont exécutées et j'obtiens une erreur sur les systèmes IIS7.
J'ai également essayé de mettre la condition dans le composant et cela n'a pas fonctionné non plus.
Y at-il un problème avec mon utilisation?
Oui, j'ai vérifié si IISVERSION est étant défini en créant un message de condition après avoir récupéré la valeur et il renvoie en effet soit # 6 ou # 7. Je suis également d'accord avec le réglage de Level = 1 et la condition = # 6 comme il est plus facile à lire ... c'est réellement ce que j'avais initialement mais j'ai essayé différentes combinaisons essayant d'obtenir la condition de ne pas installer la fonctionnalité. – Damien
J'ai effectué d'autres tests et supprimé l'attribut Display = "hidden" de la fonction. Je peux maintenant voir que la fonctionnalité n'est pas visible dans la boîte de dialogue des fonctions sur la machine IIS7 et visible sur la machine IIS6. donc je ne comprends pas pourquoi il fait la transaction de métabase et ne peux pas trouver la machine IIS si le composant n'est pas installé. Je pensais que les actions personnalisées dans le schéma IIS seraient toutes ignorées si le composant correspondant n'était pas installé. – Damien