我在WiX版本3.7中設置了32位和64位版本。 WiX文件在對此進行充分解釋時存在缺陷。在documentation for Package/@Platform
中,它表示「不鼓勵使用此屬性;而是在candle.exe命令行中指定-arch開關」,但沒有解釋此參數實際上做了什麼(至少沒有我可以找到的)。 "documentation" for the compiler完全值得圍繞單詞「文檔」的空氣報價,因爲它基本上是一個存根(例如,與linker documentation不同)。對於歷史記錄,下面是完整的編譯器文檔:「candle」命令行上的`-arch`參數究竟做了什麼?
Windows Installer XML編譯器由candle.exe公開。 Candle是 ,負責將輸入的.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
,雖然你很難從文檔中知道它。
如何在Visual Studio中構建WiX安裝程序,如何將'-arch'開關設置爲x64? – Jammer
@Jammer'-arch'開關在編譯完成後在'candle'的命令行中設置;它不涉及構建該編譯器。如果你問是否有辦法讓'-arch x64'成爲這種二進制文件的默認值,我不知道答案。 – eh9
啊,我確實解決了這個問題。如果您在'.wixproj'文件中將'PlatformInstaller'屬性設置爲x64,那麼蠟燭的命令行將包含-arch x64開關。 – Jammer