Установка 64-разрядного проекта Installshield

Каков наилучший способ использования InstallShield для создания инсталляторов для 32-разрядных и 64-разрядных сред? Большая часть моего приложения - бит-нейтральная (.net, Java, файлы данных). Я бы предпочел, если бы мне только пришлось упаковать эти файлы один раз. Существует ли стандартный подход к сокращению обслуживания проектов installshield? В настоящее время единственным решением, которое я могу найти, является наличие двух повторяющихся проектов, в которых каждый из компонентов отмечен как 64-разрядный, так и установочный каталог по умолчанию, установленный в ProgramFiles64. Должен быть лучший способ сделать это!

Только очень небольшая часть моего приложения заботится о том, как биты выполняются. У нас есть несколько С++ DLL и JNI-вызовов, которые должны быть разными. Большинство из них определяется во время выполнения, проверяя, работает ли JRE, который находится на 64 бит.

Я бы хотел не распространять два файла размером 130 МБ и в идеале поставлять один большой zip файл с двумя установщиками, каждый из которых ссылается на общие компоненты. Нужно ли создавать модули слияния для общих вещей и ссылаться на них в каждом из проектов?

Мы используем InstallShield 2009 (Premier), если это имеет значение.

Ответ 1

  • Если вы можете уйти с нулевыми 64-битными компонентами в своей настройке, то вы можете просто сделать его 100-разрядной 32-разрядной настройкой, и она будет одинаково хорошо работать в 32-битных и 64-битных Окна.

  • Если это невозможно, я рекомендую использовать флаги конфигурации продукта. В представлении "Релизы" создайте несколько конфигураций продуктов, таких как "XP32" и "XP64". Пометьте поле "Резюме шаблона" следующим образом: один - "Intel; 1033", а другой - "AMD64; 1033". Свяжите каждый с уникальным флагом конфигурации продукта, чтобы идентифицировать его, например. "xp32", "xp64". Затем для каждой функции установите соответствующий флаг выпуска. Вы можете установить 64-битное свойство на своих 64-битных компонентах по мере необходимости; просто убедитесь, что функции, отмеченные как "xp32", не содержат в них 64-битных компонентов. Это позволит вам иметь только один файл проекта InstallShield, но генерировать как 32-разрядные, так и 64-разрядные версии.

Ответ 2

Если вы используете один 32-разрядный проект установки, как указано в этом потоке, вы можете столкнуться с проблемами, связанными с 32-разрядными процессами в 64-разрядных системах, в зависимости от того, что вы делаете. Поскольку ваша установка - это 32-битный процесс, ОС предполагает, что ему необходимо использовать 32-разрядные ресурсы. На 64-битных машинах у вас есть оба. Например, system32 и SysWOW64. (Как ни странно, система 32 содержит 64-битные ресурсы, а SysWOW64 - 32-разрядная.) Вы можете заставить ОС использовать 64-разрядные ресурсы с помощью перенаправления файловой системы SYSNATIVE. Я нашел это полезным при настройке IIS с помощью DISM.exe или PKGMGR.exe в Windows Server 2008R2 и 2012.