wix – `candle`命令行上的`-arch`参数究竟是什么?
我在WiX 3.7版中设置了32位和64位版本.在充分解释这一问题时,WiX文档存在缺陷.在
documentation for
Package/@Platform 中,它说“不鼓励使用此属性;而是在candle.exe命令行指定-arch开关”,但是没有解释这个参数实际上做了什么(至少没有我能找到的).
“documentation” for the compiler完全值得“文档”这个词的空气引用,因为它基本上是一个存根(例如,与
linker documentation不同).对于历史记录,这里完全是编译器文档:
命令行帮助提供了一点,但还不够. -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属性具有相同的效果,还是更多? 其中一些问题的答案看起来应该是显而易见的,事实上我只是在写这个问题时学到了一些东西.但我想要一个明确的答案,最好(提示)指向蜡烛命令行的更新和准确的文档页面的链接.我确实希望在任何人回答的时候已经解决了这个问题,但是,我会尽快拯救其他人,因为我会花时间来解决这个问题. 另一个相关问题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. 解决方法
以下代码段启用32位和64位版本之间的编译时配置,而不引入表示平台的用户变量,而是使用系统提供的用户变量.两个定义的变量都是普通安装的通用变量. 64位系统的最低版本更高.基本程序文件目录在32位和64位版本之间有所不同.
<?if $(sys.BUILDARCH)="x86"?> <?define Minimum_Version="100"?> <?define Program_Files="ProgramFilesFolder"?> <?elseif $(sys.BUILDARCH)="x64"?> <?define Minimum_Version="200"?> <?define Program_Files="ProgramFiles64Folder"?> <?else?> <?error Unsupported value of sys.BUILDARCH=$(sys.BUILDARCH)?> <?endif?> 稍后在WiX源中使用这些定义. <Package [...] InstallerVersion="$(var.Minimum_Version)" /> <Directory Id="$(var.Program_Files)"> [...] </Directory> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |