Изменить существующий сценарий WIX 2 для добавления 64-разрядных компонентов - PullRequest
1 голос
/ 26 октября 2009

У меня есть скрипт установщика, написанный на Wix 2 несколько лет назад. Теперь мне нужно добавить два 64-битных компонента. Одна 64-битная DLL должна быть скопирована в папку system32, а другая b4-битная EXE - в ProgramFiles.

Установщик должен создать раздел реестра. В настоящее время он использует элемент для записи ключа и настраиваемое действие (в 32-битном MSI dll) для записи серийного номера.

Ключ должен быть доступен для 64-битного EXE.

Возможно ли это сделать в одном MSI? Кроме того, как создать условие, которое копирует только 64-разрядные файлы, когда система является 64-разрядной?

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Чтобы установить 64-разрядные компоненты, MSI должен быть помечен как 64-разрядный, в противном случае пути файловой системы и реестра будут перенаправлены. Помимо добавления 64-битных атрибутов, 32-битные и 64-битные пакеты должны отображаться как разные продукты; то есть вы должны создать новые коды продуктов и обновлений.

Я думаю, что могут быть проблемы с использованием WiX 2 для создания 64-битных MSI, поэтому вам может потребоваться обновление до WiX 3.x.

Поскольку вам нужны два MSI-файла для 32-битной и 64-битной Windows, вы можете легко предотвратить установку 32-битных файлов на 64-битный ПК, не включив их в 64-битную программу установки. Если вам нужен один исполняемый файл установщика для x86 и x64, вам нужно использовать загрузчик, который выбирает, какой MSI запускать. Я не знаю, может ли это сделать burn.exe из дистрибутива WiX.

Один из способов приблизиться к исходному макету - это использовать один главный файл WiX с условными обозначениями, которые выбирают, какие функции встроить, в зависимости от целевой архитектуры, а затем иметь модули для конкретной архитектуры, которые связаны. такого решения в https://svn.bluestop.org/viewvc/repos/sctpDrv/wix/. Обратите внимание, что он поддерживает только x86 и x64, а не Itanium (он же Intel64).

1 голос
/ 27 октября 2009

msi не позволяет устанавливать 32-битные и 64-битные компоненты в одну и ту же msi. Вы должны создать отдельный MSI для обеих архитектур.

...