有条件地将单个WiX属性设置为不同的值

时间:2011-07-08 16:10:41

标签: wix windows-installer

我有一个安装程序,根据是否设置了属性,将网站部署为SSL或非SSL IIS站点。我被要求添加设置端口的选项,这不是问题,但如果未设置该值,我想将端口设置为默认值(80或443)。

我尝试过类似的事情:

    <SetProperty Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty>
    <SetProperty Id="OUTPORT"  Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty>

但是,显然,WiX抱怨自定义操作具有重复的ID SetOUTPORT。

我是否在这里跳下另一个WiX形的兔子洞?

2 个答案:

答案 0 :(得分:17)

接受的答案是不正确的,需要转换为完全写出自定义操作和排序(不再?)。

根据WiX 3的文档,SetProperty Element

不设置SetProperty \ @Action

<SetProperty Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty>
<SetProperty Id="OUTPORT"  Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty>

Duplicate symbol 'CustomAction:SetInstallFiles' found

<强>动作即可。 字符串。默认情况下,操作为“设置”+ Id属性的值。在多个SetProperty元素以相同的Id(可能具有互斥条件)为目标的情况下,此可选属性可以覆盖操作名称。

以下工作无需更改为编写自定义操作。

<SetProperty Action="SetInstallFiles0" Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty>
<SetProperty Action="SetInstallFiles1" Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty>

它适用于WiX 3.7,我不确定它可用的第一个版本。

答案 1 :(得分:5)

SetProperty现在支持Action属性,当您希望为具有不同条件的相同属性提供多个SetProperty元素时,可以指定自定义操作ID。