【发布时间】:2014-04-08 09:30:01
【问题描述】:
我目前正在构建一个仅针对 64 位机器的安装程序。该过程的一部分涉及运行Heat.exe 以生成包含部分已部署应用程序的Fragment 元素。
问题是由热量产生的组件产生 ICE:80 错误,这是 WiX 抱怨这些组件针对 32 位系统,而我的安装程序正试图将它们加载到:
<Directory Id="ProgramFiles64Folder">
查看文档有一个-platform 开关,可以用来告诉Heat 我们的目标是x64 环境,但是文档中没有关于如何使用这个开关的线索。我试过了:
-platform=x64
-platform=Win64
为了在生成的组件上设置Win64 属性,似乎没有什么影响输出。有没有人弄清楚这一点?还是我完全找错了树?
如果我手动编辑收获的组件以添加Win64="yes",ICE 错误就会消失。
在我的<Product> 元素中,我有Platform="x64",据我所知,candle 应该接受这个并计算出组件应该默认设置为 x64,但这似乎不起作用。
很困惑。
【问题讨论】:
-
我现在已经通过使用
.wixproj文件中的 InstallerPlatform 属性来完成这项工作。这与在命令行中设置-arch开关相同。 -
在这种情况下我通常会做什么:在 heat-commandline 上使用 XSLT 文件,它将
Win64='yes'-attribute 添加到每个组件。即便如此,我总是使用arch-parameter 和platform-property,只是为了确定。如果您需要适当的 XSLT 文件,我会在答案中发布(因为评论太短)。
标签: wix windows-installer