能否在Visual Studio配置环境中使用条件安装配置?例如,选择DEBUG或RELEASE配置时,Wix会在构建的安装包中选择不同的可执行文件。
基本上,我需要从同一项目构建不同的安装包,但它们由组件区分。有些组件来自同一项目,但使用不同的预处理器选项进行构建。
当然可以包含每个所需的组件,然后定义功能以选择安装的特定组件,但我真的不想重新分发某些可执行文件。
构建不同的Wix项目是唯一的解决方案吗?
能否在Visual Studio配置环境中使用条件安装配置?例如,选择DEBUG或RELEASE配置时,Wix会在构建的安装包中选择不同的可执行文件。
基本上,我需要从同一项目构建不同的安装包,但它们由组件区分。有些组件来自同一项目,但使用不同的预处理器选项进行构建。
当然可以包含每个所需的组件,然后定义功能以选择安装的特定组件,但我真的不想重新分发某些可执行文件。
构建不同的Wix项目是唯一的解决方案吗?
将其他两个答案和Luca的研究结合起来,我提出了这个解决方案,它似乎可以工作(请注意,字符串比较似乎是区分大小写的,缺少引号似乎是正确的,我已经用WiX 3.7测试过了):
<?if $(var.Configuration) = Debug ?>
<!-- DEBUG ONLY -->
[ ... insert debug only XML here ... ]
<!-- END DEBUG ONLY -->
<?else?>
<!-- RELEASE ONLY -->
[ ... insert release only XML here ... ]
<!-- END RELEASE ONLY -->
<?endif?>
您的Wix脚本可以访问构建参数,例如配置('debug'或'release')。因此,您可以通过在组件声明中引用$(var.Configuartion)来有条件地包含当前配置的正确二进制文件:
<Component Id="myProject.dll"
DiskId="1"
Guid="*">
<File Id="myProject.dll"
Name="myProject.dll"
Source="..\myProject\bin\$(var.Configuration)\myProject.dll" />
</Component>
<?if?>
,根据配置条件性地包含/排除组件。
<?else>
should be<?else?>
- Bishoy$(var.Configuration)
而不是$(Configuration)
。 - BrainSlugs83$(var.Configuration)
在 Wix 4.0 中无效。 - Ajay