InstallShield 2010 Premiere: установка 64- и 32-разрядных драйверов

Я использую InstallShield 2010 Premiere.

У меня есть базовый проект MSI, который устанавливает приложение и 32-разрядный драйвер с помощью мастера драйверов и DifxApp.

Я пытаюсь добавить 64-битный драйвер, который будет установлен, если система 64-битная. Однако при добавлении этого 64-битного драйвера установка (в 32-битной системе) завершается ошибкой, и единственное, что я нашел в журнале MSI:

MSIProcessDrivers возвращает значение 3.

Мне даже не удалось попробовать это на 64-битной системе.

Есть ли способ сделать это с помощью одного установочного файла?

РЕДАКТИРОВАТЬ: Я заметил, что проблема связана с DifxApp.dll. Installshield содержит только 1 dll в соответствии с ПОСЛЕДНЕЙ архитектурой, выбранной для драйвера: если у меня есть 2 драйвера, и я установил один из них для целевого x64, DifxApp.dll будет одним из x64, и наоборот при выборе х32.

Я могу вручную вставить как x64, так и x32 DifxApp.dll, но я не могу понять, как заставить пользовательские действия, созданные Installshield, условно взять x32 или x64 dll.

Любые идеи?


person Eldad    schedule 30.12.2009    source источник


Ответы (4)


Что ж, поскольку мне не удалось найти подходящее решение с помощью мастера InstallShield, я вернулся к своим собственным действиям, которые вместо этого вызвали DPInst.exe. Каждое настраиваемое действие запускается условно в зависимости от типа операционной системы. 64-битное настраиваемое действие вызовет 64-битную версию DPInst.exe, то же самое касается 32-битной версии.

person Eldad    schedule 06.01.2010

Конфигурация DIFx для x86 и x64 в одном установщике невозможна. Должно быть два пакета, и внутри этих пакетов измените ссылки на diffxapp (a) .dll в зависимости от предпочтения ОС.

Итак, мой подход:

  • 1 Инсталляционный пакет
  • 2 флага выпуска x86 и x64, содержащие ссылки на драйверы (оба, например, настроены на x86)
  • Соберите пакет x86 с соответствующим флагом выпуска
  • mofify с помощью автоматизации ссылки difx на x64
  • Собрать пакет x64 с соответствующим флагом выпуска

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

Тобиас

person user432758    schedule 27.08.2010

Похоже, что в вашем установщике отсутствует условие для компонента. У вас должны быть установлены драйверы x32 и x64 в разных компонентах и ​​условно установить каждый драйвер, протестировав VersionNT64.

Например: компонент x64 будет иметь "VersionNT64" в качестве условия, а компонент x32 будет иметь "Not VersionNT64".

person KMoraz    schedule 31.12.2009
comment
Это то, что я делал изначально. Однако Installshield сохраняет только одну копию DifxApp.dll (x32 ИЛИ x64). Мне нужно использовать разные dll в соответствии с моими условиями. - person Eldad; 31.12.2009
comment
Ваш установщик не сжат? в таком случае вам необходимо установить свойство исходного местоположения - helpnet.flexerasoftware.com/robo / projects / - person KMoraz; 01.01.2010
comment
Я уже установил 2 разных местоположения источника. Но DifxApp.dll - это не файл, который я поместил туда, а InstallShield Wizard. - person Eldad; 05.01.2010

Следует отметить, что в общем случае использование одного установщика как для 32-битной, так и для 64-битной версии невозможно. Проверьте это за дополнительной информацией.

person On Freund    schedule 10.01.2010