组件中的WIX“if like statement”

时间:2013-10-14 12:20:12

标签: .net wix windows-installer installation

我有一个asp.net应用程序的WIX设置。用户可以选择应用程序池是在内置帐户还是自定义帐户下运行(类似于IIS高级应用程序池设置>身份)。

用户完成设置后,设置必须检查用户是否选择了内置帐户或自定义帐户。 用户在设置期间设置了以下属性:

USE_BUILTIN_ACCOUNT :如果用户选择了内置帐户,则为True,否则为false

BUILTIN_ACCOUNT :所选内置帐户的名称

IDENTITY_NAME :自定义用户的名称

目前,此设置仅适用于自定义名称:

<Component Id="myAppPoolCmp" Guid="" KeyPath="yes">
    <util:User Id="myAppPoolUser" CreateUser="no" Name="[IDENTITY_NAME]" Password="[IDENTITY_PWD]" Domain="[IDENTITY_DOMAIN]" />
</Component>

如何更改设置,以便根据 USE_BUILTIN_ACCOUNT 的值使用内置帐户或自定义帐户的名称?

2 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

以下代码适用于我:

<Component Id="sMatSupervisorAppPoolCmpBuiltIn" Guid="" KeyPath="yes">
    <Condition><![CDATA[WEB_APP_POOL_USE_BUILTIN_ACCOUNT = "true"]]></Condition>
     <util:User Id="sMatSupervisorAppPoolUserBuiltIn" CreateUser="no" Name="[WEB_APP_POOL_BUILTIN_ACCOUNTS]" />
    <iis:WebAppPool Id="x" Name="[WEB_APP_NAME]" Identity="other" User="y" />
</Component>

<Component Id="sMatSupervisorAppPoolCmp" Guid="" KeyPath="yes">
    <Condition><![CDATA[WEB_APP_POOL_USE_BUILTIN_ACCOUNT <> "true"]]></Condition>
    <util:User Id="sMatSupervisorAppPoolUser" CreateUser="no" Name="[WEB_APP_POOL_IDENTITY_NAME]" Password="[WEB_APP_POOL_IDENTITY_PWD]" Domain="[WEB_APP_POOL_IDENTITY_DOMAIN]" />
    <iis:WebAppPool Id="x" Name="[WEB_APP_NAME]" Identity="other" User="y" />
</Component>

答案 1 :(得分:0)

您不能等到设置结束后询问用户他们想要做什么。您必须在安装事务开始之前在UI中预先执行此操作(收集所有数据,不返回点)。

为了实现,您可能会使用组件条件来创建互斥组件。