使用预定义变量WIX一个或多个条件组件

时间:2013-04-16 01:07:53

标签: wix

您好基于环境(UAT,TEST,DEV,PROD)和服务器特定(Server1,Server2 ..)我正在过滤配置文件。

<Component Id="cmp39F4D3AA1248B5FE5EB2F92D189B27E1" Directory="dirCFCE6D07D3330FE628276777F0488B18" Guid="{56788F77-A729-47CE-BBA4-9D7D7F175536}">
<File Id="fil10B3B7732D0DDBD4AA773E0B7F34D092" KeyPath="yes" Source="$(var.SDirect.B2CWeb.ProjectDir)Web.ProdBuild.Web1.config.xml" >
<CopyFile Id="SCopy_ConfigPROD1" DestinationProperty="DestFilesWebsiteFolder" DestinationName="Web.config" />
</File>
              <Condition> <![CDATA[ENVPROPERTY~="PROD"]]></Condition>
</Component>

以上组件工作正常;在通过MSIEXEC安装时,通过命令行设置ENVPROPERTY属性值。

但是当我更改上面的语句时,如果安装程序需要检测安装程序需要检测的计算机名或Servername,安装程序必须确保部署上述组件。

<Component Id="cmp39F4D3AA1248B5FE5EB2F92D189B27E1" Directory="dirCFCE6D07D3330FE628276777F0488B18" Guid="{56788F77-A729-47CE-BBA4-9D7D7F175536}">
<File Id="fil10B3B7732D0DDBD4AA773E0B7F34D092" KeyPath="yes" Source="$(var.SDirect.B2CWeb.ProjectDir)Web.ProdBuild.Web1.config.xml" >
<CopyFile Id="SCopy_ConfigPROD1" DestinationProperty="DestFilesWebsiteFolder" DestinationName="Web.config" />
</File>
    <Condition> <![CDATA[ENVPROPERTY~="PROD" AND ComputerName~="Server1"]]></Condition>
</Component>

任何人都可以帮助设置满足ENVPROPERTY =“PROD”和ComputerName =“Server1”的条件语句,即MSI包安装的服务器名称(机器)。这样就可以部署上面的组件,而不是在部署包时跳过它们。

提前致谢

1 个答案:

答案 0 :(得分:0)

只能在命令行中使用公共属性。公共财产的所有字母都应为大写。将 ComputerName 属性用作 COMPUTERNAME ,就像另一个一样。