3

这样的情况:我有一个 wxs 构建文件。它基于 3 个预处理器变量:

Build=[Client\Server] 
Platform=[Win32\x64]
Configuration=[Release\Debug]

我唯一需要做的就是创建一个 setup Visual Studio 项目,它可以一次构建我的安装包的所有这 8 个配置。

例如

Cmd.exe «candle.exe –dPlatform=Win32 –dConfiguration=Debug –dBuild=Server Product.wxs»
Cmd.exe «light.exe –ext WixUIExtension –ext WiXIISExtension Product.wixobj –out Product_Server(Release)_x86.msi»

Cmd.exe «candle.exe –dPlatform=Win32 –dConfiguration=Release –dBuild=Server Product.wxs»
Cmd.exe «light.exe –ext WixUIExtension –ext WiXIISExtension hsm.wixobj –out Product_Server(Release)_x86.msi»

但我不能使用基于命令提示符的解决方案。需要一个完全 WiX 设置解决方案。

有什么建议吗?

4

3 回答 3

1

似乎是一个无法解决的问题。唯一的方法 - 创建不同的项目......从 vs 我们只能操作诸如“平台”和“配置”之类的预处理器变量。每个额外的预处理器变量都会迫使我们在“variable_range”中使用多个解决方案。

显而易见的建议是将您的源代码分开在不同的文件中。只是为了同意您对每个构建的正确开发方式的关注。但是这种方式给源代码带来了更多的可读性。

可能会被删除......但是,如果有人知道这个问题的真正解决方案......请告诉我。

于 2012-06-09T05:57:14.637 回答
1

您可以通过创建新的构建配置来创建单独的输出。例如,我们有两种使用非常相似的来源构建的产品。您可以在属性组中指定输出名称。它将手动编辑您的 wixproj,但会在 Visual Studio 中正常加载。

做这样的事情:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug (App1)' ">
    <OutputName>App1</OutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug (App2)' ">
    <OutputName>App2</OutputName>
</PropertyGroup>

Visual Studio 应显示两种配置 - 调试 (App1) 和调试 (App2)。

于 2016-10-19T10:15:13.383 回答
0

我花了最后 1/2 天试图解决这个问题。在我看来,唯一的方法是单独的项目。我正在尝试对项目进行命令行重新编译,但似乎 MSBuild 在编译 wixproj 文件时没有检测到构建属性的更改,然后在我运行“干净”后 WiX 编译器没有拾取正确的源文件强制重新编译。

至少对于多个​​项目,源代码可以共享并在一个解决方案中全部使用。

于 2013-12-04T16:02:17.640 回答