Я хотел бы сохранить свой верхний уровень .wxs DRY при создании 32-разрядных и 64-разрядных инсталляторов. Я использую аргумент -arch для candle.exe для управления построением архитектуры установщика по умолчанию.
Стена, которую я сейчас нажимаю, заключается в том, что, по-видимому, ProgramFilesFolder отличается между 32 и 64-битными (ProgramFiles64Folder) архитектурами. Вот моя первая попытка обойти:
<?if $(sys.BUILDARCH)=x64 ?>
<Directory Id='ProgramFiles64Folder' Name='PFiles'>
<?else ?>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<?endif ?>
<Directory Id='the-rest' Name="Company Name">
...
Я попробовал это с ошибкой. По-видимому, проверка XML выполняется до того, как будет обработан препроцессор. Когда я вручную меняю, чтобы использовать ProgramFiles64Folder, мои сборки работают.
Я попытался спуститься по маршруту DirectoryRef без успеха. Любые предложения по работе с этим, не заменив sed в файле .wxs?
Примечание. Я пробовал это в Wix 3.5 и 3.6.