Konfiguruję kompilacje 32- i 64-bitowe w wersji 3.7 WiX. Dokumentacja WiX jest wadliwa w odpowiednim wyjaśnieniu tego. W dokumencie documentation for Package/@Platform
jest napisane: "Odradzam używanie tego atrybutu, zamiast tego określ przełącznik -arch przy linii poleceń candle.exe", ale nie ma wyjaśnienia, co właściwie robi ten argument (a przynajmniej nie mogę go znaleźć). The "documentation" for the compiler całkowicie zasługuje na notowania lotnicze wokół słowa "dokumentacja", ponieważ jest to po prostu skrót (na przykład w przypadku linker documentation). W odniesieniu do historycznych rekordów, oto w całości dokumentacja kompilatora:Co dokładnie robi argument "-arch" na linii komend `candle`?
Kompilator XML Instalatora Windows jest ujawniony przez candle.exe. Świeca jest odpowiedzialna za wstępne przetwarzanie wejściowych plików .wxs do poprawnych dobrze uformowanych dokumentów XML w stosunku do schematu WiX, wix.xsd. Następnie każdy przetworzony plik źródłowy jest kompilowany do pliku .wixobj.
Proces kompilacji jest stosunkowo prosty. Schemat WiX nadaje się do prostego parsera rekursywnego zejścia. Kompilator przetwarza każdy element z kolei, tworząc nowe symbole, obliczając niezbędne odniesienia i generując nieprzetworzone dane dla pliku .wixobj.
Pomoc wiersza poleceń oferuje nieco, ale za mało.
-arch set architecture defaults for package, components, etc.
values: x86, x64, or ia64 (default: x86)
W podobnym pytaniem Platform identification in WiX 3.0, tam one answer with a sliver of hint o tym, co może się dziać, ale to ledwie wystarczające, a ja nie wiem, czy to jest poprawne.
- Czy
-arch
argumentem mają taki sam efekt jak ustawienie atrybutuPackage/@Platform
, czy też zrobić więcej? - Czy argument ma wpływ na wszystko, co dostępne w preprocessor? W szczególności, czy ustawia on zmienną preprocesora
PLATFORM
? Czy ustawi coś jeszcze? - Co to jest architektura "domyślna"? Czy wyraźny atrybut
Package/@Platform
przesłania wiersz polecenia? Lub odwrotnie? Lub (jeszcze lepiej) czy wystąpił błąd w przypadku niespójnej deklaracji platformy?
Niektóre z tych pytań mają odpowiedzi, które wydają się być oczywiste, i rzeczywiście nauczyłem się czegoś po prostu pisania tego pytania. Ale chciałbym uzyskać ostateczną odpowiedź, najlepiej (podpowiedź) link do zaktualizowanej i dokładnej strony dokumentacji dla linii poleceń candle
. Spodziewam się, że rozwiązałem to do czasu, gdy ktokolwiek odpowie, ale tak samo szybko ocaliłbym innych ludzi, których czasu poświęcę na zastanowienie się nad tym.
Inne powiązane pytanie, WIX: is the Platform attribute of the Package element truly deprecated?, mówi o atrybucie
Package/@Platform
, ale nie odnosi się do argumentu wiersza poleceń.
O tej
PLATFORM
zmiennej preprocesora. Teraz jest widocznie
BUILDARCH
, choć trudno byłoby o tym wiedzieć z dokumentacji.
warning CNDL1034 : The built-in preprocessor variable '$(sys.PLATFORM)' is
deprecated. Please correct your authoring to use the new '$(sys.BUILDARCH)'
preprocessor variable instead.
Jak ustawić przełącznik '-arch' na x64, jeśli budujesz instalator WiX w Visual Studio? – Jammer
@Jammer Przełącznik '-arch' jest ustawiony w linii poleceń' candle' po kompilacji; nie bierze udziału w budowaniu tego kompilatora. Jeśli pytasz, czy istnieje sposób, aby '-arch x64' był domyślny dla takiego pliku binarnego, nie znam odpowiedzi od ręki. – eh9
Ahh, udało mi się to rozwiązać. Jeśli ustawisz właściwość 'PlatformInstaller' na x64 w pliku' .wixproj', wiersz poleceń świecy będzie zawierał przełącznik -arch x64. – Jammer