【发布时间】:2013-05-15 15:16:42
【问题描述】:
我在 WiX 3.7 版中设置了 32 位和 64 位版本。 WiX 文档在充分解释这一点方面存在缺陷。在documentation for Package/@Platform 中,它说“不鼓励使用此属性;相反,请在candle.exe 命令行中指定-arch 开关”,但没有解释此参数的实际作用(至少我找不到)。 "documentation" for the compiler 完全值得在“文档”一词周围加上引号,因为它基本上是一个存根(例如,与 linker documentation 不同)。对于历史记录,这是编译器文档的全部内容:
candle.exe 公开了 Windows Installer XML 编译器。蜡烛是 负责将输入的 .wxs 文件预处理为有效的 针对 WiX 模式 wix.xsd 的格式良好的 XML 文档。那么,每个 后处理的源文件编译成 .wixobj 文件。
编译过程相对简单。 WiX 架构 适合于一个简单的递归下降解析器。编译器 依次处理每个元素创建新符号,计算 必要的引用并为 .wixobj 文件生成原始数据。
命令行帮助提供了一些,但还不够。
-arch set architecture defaults for package, components, etc.
values: x86, x64, or ia64 (default: x86)
在一个相关的问题Platform identification in WiX 3.0 中,one answer with a sliver of hint 关于可能发生的事情,但这还不够,我不知道它是否准确。
-
-arch参数是否与设置Package/@Platform属性具有相同的效果,还是作用更多? - 该参数是否会影响preprocessor 中可用的任何内容?特别是,它是否设置了
PLATFORM预处理器变量?它还有其他设置吗? - 什么是架构“默认”?显式
Package/@Platform属性是否会覆盖命令行?或相反亦然?或者(更好的是)如果平台声明不一致,是否会出现错误?
其中一些问题的答案似乎应该是显而易见的,而且我确实在编写问题时学到了一些东西。但我想要一个明确的答案,最好(提示)一个指向candle 命令行的更新且准确的文档页面的链接。但是,我确实希望在有人回答时已经解决了这个问题,但是我会尽快节省其他人我花时间解决这个问题的时间。
另一个相关问题WIX: is the Platform attribute of the Package element truly deprecated? 讨论了
Package/@Platform 属性,但没有解决命令行参数。
关于
PLATFORM 预处理器变量。现在显然是BUILDARCH,尽管您很难从文档中知道它。
warning CNDL1034 : The built-in preprocessor variable '$(sys.PLATFORM)' is
deprecated. Please correct your authoring to use the new '$(sys.BUILDARCH)'
preprocessor variable instead.
【问题讨论】:
标签: wix