Запуск install4j на 64-битной JRE в Win

Можно ли с помощью Install4J создать один файл мультимедиа для Windows, который может работать в обоих случаях, когда у пользователя установлена ​​32-битная или 64-битная JRE?

У меня есть случай, когда я оборачиваю приложение, которому не нужны функции 64-битной ОС. Поэтому я выбрал 32-битный (Install4J) исполняемый файл для создания. В конце концов, мы столкнулись с проблемами при попытке установить на 64-разрядную версию Win7 с установленной 64-разрядной JRE. Установщик пожаловался на отсутствие 32-битной JRE.

В справочном руководстве Install4J я нашел следующее:

В Windows собственный исполняемый файл может быть либо 32-разрядным, либо 64-разрядным исполняемым файлом. Если вам нужна 64-битная JRE для вашего приложения, вы можете создать 64-битные установщики и программы запуска для медиафайла. Обратите внимание, что невозможно создать средства запуска, которые работают как с 64-разрядной, так и с 32-разрядной JRE. Поскольку средство запуска запускает JVM с интерфейсом JNI, загружая DLL JVM, архитектура должна быть такой же. Если вы ориентируетесь как на 32-разрядные, так и на 64-разрядные JRE и операционные системы, вам необходимо создать для них разные медиафайлы.

Я надеюсь, что жирный шрифт относится к тем случаям, когда вам нужны определенные 64-битные функции.

Любая помощь? Заранее спасибо.


person deyo.vuk    schedule 05.06.2012    source источник
comment
Кажется очевидным, что вам нужно два медиафайла.   -  person Andrew T Finnell    schedule 05.06.2012


Ответы (3)


К сожалению, в настоящее время это невозможно. Я бы рекомендовал использовать 32-битный пакет JRE. Это будет работать как для 32-битной Windows, так и для 64-битной Windows. Случай уже установленной 64-битной JRE может быть не столь важен.

person Ingo Kegel    schedule 05.06.2012
comment
Привет, Инго, какие-либо обновления по этому поводу - доступна ли эта функция? - person rxx; 29.06.2016
comment
Нет никаких изменений. Мы не планируем разрабатывать гибридные 32-битные/64-битные установщики для Windows. - person Ingo Kegel; 29.06.2016
comment
Можно ли проверить версию/архитектуру JRE при запуске продукта (после успешной установки и нажатия на исполняемый файл) - person rxx; 29.06.2016
comment
Разрядность JRE задается System.getProperty("sun.arch.data.model"), и вы можете проверить 64-битную Windows через com.install4j.api.Util.is64BitWindows() - person Ingo Kegel; 29.06.2016

Мне удалось найти решение, которое на самом деле является «взломом».

Идея состоит в том, чтобы упаковать соответствующую 32-битную Java в виде пакета и указать Install4J не использовать пользовательскую Java и не зависеть от нее. В качестве выходных данных Install4J создаст папку «jre» на том же уровне, где установлено само приложение. Таким образом, можно запустить и установщик, и приложение, даже если на компьютере пользователя не установлена ​​JRE.

Я создал такую ​​конфигурацию Install4J следующим образом:

  • откройте «Медиа», а затем «Windows» (или любой другой, если вы хотите связать JRE для Unix или Mac)
  • выберите "Связанная JRE"
  • установите флажок «Связать следующую JRE», а затем найдите нужную версию Java.
  • оставьте неотмеченными «Установить как общую JRE» и «Установить, только если не найдено другой подходящей JRE» (это поместит JRE в папку, в которой вы установили приложение)
person deyo.vuk    schedule 05.06.2012
comment
Программы запуска и установки могут быть либо 32-битными, либо 64-битными, в зависимости от настроек в мастере медиафайлов. В любом случае ваша конфигурация будет работать только с 32-разрядной JRE. - person Ingo Kegel; 06.06.2012

Более новые версии install4j имеют переключатель 32/64 бит в файлах мультимедиа. Я думаю, начиная с install4j 4.

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

person Stroboskop    schedule 31.07.2014