Squeak.ru - шаблоны программирования

Установщик, который выбирает MSI в зависимости от архитектуры процессора (32-разрядный x86, 64-разрядный x64 и т. Д.)

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

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

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

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


  • Почему бы не позволить пользователю выбрать правильный MSI? В мире Windows довольно часто используются отдельные установщики для 32-разрядной и 64-разрядной версий. 09.11.2010
  • @ 0xA3: потому что заказчику нужен единый установщик. Кроме того, я считаю, что лучше автоматизировать все возможное, чтобы пользователю приходилось делать как можно меньше для его установки. 09.11.2010

Ответы:


1

Если вы решите использовать NSIS:

!include "x64.nsh"
${If} ${RunningX64}
   MessageBox MB_OK "running on x64"
${Else}
   MessageBox MB_OK "running on x86"
${EndIf}
09.11.2010

2

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

Я привел здесь пример: single-msi-to-install-corrective-32-or-64-bit-c-application

25.12.2010

3

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

08.11.2010
  • Да, это верное решение, но это проблема, которую решили другие, и я бы предпочел не изобретать велосипед. 09.11.2010
  • В этом случае я рекомендую без установки, очень простой в использовании jrsoftware.org/isinfo.php. Лично я считаю, что установка inno проще, чем nsis. 09.11.2010
  • Я установил и сейчас смотрю IS. Я хочу попробовать, но не знаю, с чего начать. Хороший ответ на мой исходный вопрос - это явный переход к выбору того или иного файла в зависимости от процессора. 09.11.2010
  • В программе установки Inno есть множество шаблонов, которые вы можете использовать повторно. Их проще использовать повторно, чем писать с нуля. Документация тоже очень ясна, ИМО. Это сообщение на форуме может решить вашу проблему: vbforums.com/showthread.php?t=596012 < / а> 09.11.2010
  • IIRC, переменная с этой информацией называется Is64BitInstallMode, потому что пользователь может выбрать установку 32Bit на 64Bit с помощью командной строки. 09.11.2010
  • Новые материалы

    Очистить файлы Program .cache в Ubuntu 20.10
    Очистите кеш за несколько простых шагов! GNU / Linux реализовал эффективное управление хранилищем для своих пользователей. Но заметили ли вы, что в вашей системе Linux заканчивается место,..

    Использование Node.js для чтения действительно больших файлов (часть 1)
    В этом сообщении в блоге есть интересный источник вдохновения. На прошлой неделе кто-то на одном из моих каналов в Slack опубликовал тестовое задание, которое он получил на должность..

    Введение в градиентный спуск и обратное распространение
    Введение в градиентный спуск и обратное распространение Как машинное обучение? Машинное обучение ( ML ) - это исследование компьютерных алгоритмов, которые автоматически улучшаются по..

    Шаблон CQRS — C#
    Этот архитектурный шаблон в основном говорит о том, что мы можем использовать одну модель для операций чтения, а другую — для операций записи. Звучит хорошо, но реализовать его может быть..

    Освоение функций потерь в машинном обучении для регрессии: полное руководство по оптимизации…
    Введение: Функция потерь является важным компонентом алгоритмов машинного обучения и статистических моделей. Его роль заключается в измерении несоответствия между прогнозируемым выходом модели и..

    10 языков программирования, которые изменят мир в 2023 году
    Мир программирования постоянно развивается, и востребованные языки постоянно меняются. Однако есть несколько языков, которые выдержали испытание временем и по-прежнему очень ценны для изучения в..

    Чем заняться в наших библиотеках (апрель 2023 г.)
    В апреле этого года мы празднуем обучение по-разному — от принятия позитивного и устойчивого мышления до понимания и сохранения местных популяций пчел, а также изучения новейших и новейших..