【问题标题】:WiX Burn failing to run on TeamCity build serverWiX Burn 无法在 TeamCity 构建服务器上运行
【发布时间】:2014-04-24 10:37:15
【问题描述】:

我有一个使用 Burn 的安装程序,在我的(64 位)开发机器上构建安装程序没有问题。在我们的(64 位)构建服务器上,我收到此错误:

[Step 1/3] 2014-04-24 10:40:09,800 [2796] WARN JetBrains.Container.Log4netDefaultLoggerInitializer - 当前域中未处理的异常:System.BadImageFormatException:无法加载文件或程序集文件:///C:\Program Files (x86)\WiX Toolset v3.8\bin\Heat.exe' 或其依赖项之一。试图加载格式不正确的程序。

incorrect format 警告中可以清楚地看出我正在发生 x86/x64 冲突,但在哪里?带有安装程序的解决方案中的所有项目都设置为任何 CPU,并且 TeamCity 中的构建参数将构建为 x64。我的安装程序项目设置为 x86,我认为这是问题所在。我尝试将安装程序设置为 x64,但随后出现如下错误:

这个 64BitComponent MyAppPool 使用 32BitDirectory INSTALLLOCATION

我认为 TeamCity 正在尝试将 x86 Burn.exe 作为 x64 运行(因为这就是我配置构建的方式)因此出现了问题,但解决方案是什么?我需要构建到 x64,因此无法将构建设置为 x86。

【问题讨论】:

    标签: wix teamcity burn wix3.8


    【解决方案1】:

    由于 Burn 框架的底层模型是用 C++ 编写并编译为 x86 模块,因此您还需要将程序集定位到 x86(而不是“任何 CPU”)。默认情况下,如果加载的第一个程序集在 x64 模式下运行,则任何下游的 x86 程序集加载都可能会失败,因此为了安全起见,您应该将它们全部定位到 x86。

    【讨论】:

    • 那么在为 x64 编译时就没有办法运行 Burn 吗?