Установщик, который выбирает MSI на основе архитектуры ЦП (32-разрядная x86, 64-разрядная x64 и т. Д.) - PullRequest
5 голосов
/ 09 ноября 2010

У меня есть установщик (проект установки Visual Studio), который использует DIFxApp и преобразование Orca для установки драйверов . Проблема в том, что есть два модуля слияния DIFxApp - один для x86 и один для x64. Если я ссылаюсь на них обоих, установка работает только на 64-битных машинах, тогда как ссылки на только версию x86 позволяют мне устанавливать на 32-битные машины.

Кажется, что единственное решение - создать два MSI (один для x86 и один для x64), каждый из которых ссылается на правильный модуль слияния. У меня вопрос: как мне создать установщик, который выбирает, какой MSI устанавливать на основе процессора целевой машины?

Я немного поработал с NSIS , так что, возможно, проще всего пойти по этому пути. Другие возможности: Inno-Setup и dotNetInstaller .

Подобные вопросы (но с неадекватными ответами):

Ответы [ 3 ]

19 голосов
/ 09 ноября 2010

Если вы решили пойти с NSIS:

!include "x64.nsh"
${If} ${RunningX64}
   MessageBox MB_OK "running on x64"
${Else}
   MessageBox MB_OK "running on x86"
${EndIf}
2 голосов
/ 25 декабря 2010

Вы можете использовать настраиваемое действие для определения ОС, а затем вызвать нужного установщика.

Я привел пример здесь: одиночное приложение msi-to-install-correct-32-or-64-bit-c-application

0 голосов
/ 09 ноября 2010

Как насчет создания небольшой программы (лаунчера), которая определяет тип ОС (64 0r 32 бит, должно быть легко).Маленькая программа затем запускает правильный установщик в зависимости от результата обнаружения.Программа не должна иметь никаких окон и иметь тот же значок, что и установщик.Просто предоставьте клиенту все три файла: installer.exe (программа), inst32.msi и inst64.msi.Если это слишком много для вашего клиента, просто сожмите его в самораспаковывающийся zip-файл, который автоматически запустит installer.exe.

...