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

标签 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 形状的兔子洞里跳下去?

最佳答案

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

根据 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

行动字符串。默认情况下,操作是“Set”+ 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,我不确定它可以从哪个第一个版本中获得。

关于wix - 有条件地将单个 WiX 属性设置为不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627262/

相关文章:

.net - WIX 工具集如何设置属性

Wix 绑定(bind)子字符串或拆分

c# - 安装/部署项目 : Prevent modified files from being removed when uninstalling

visual-studio - Visual Studio WiX 和补丁

wix - 仅安装时的自定义操作

wix - 快捷方式图标

python - 使用 cx_Freeze 创建 MSI 时可用的 bdist_msi 选项

msbuild - WIX 设置中的配置转换

带有复选框选择的 WIX 功能树

installation - WiX:如何在外部设置属性?