Установщик JAR, который автоматически определяет наличие Java и автоматически запускает приложение.

Мне нужно создать установщик, который выполняет следующие действия:

  1. Устанавливает мой jar на клиенте.
  2. Автоматически определяет, установлена ​​ли JRE (в этом случае она не переустанавливается), в противном случае устанавливает ее без нажатия пользователем другой кнопки.
  3. Автозапуск приложения при загрузке клиента.
  4. Работает в Windows, Mac и Linux.

Есть идеи, как это сделать?


person Community    schedule 15.06.2009    source источник


Ответы (6)


Если коммерческий инструмент подходит, я могу порекомендовать install4j. 1, 2 и 4 легко сделать с ним, но насчет 3 я не уверен. Изменить: вы, вероятно, могли бы добиться этого, установив свое приложение как «службу», которую install4j поддерживает для всех платформ. Цитата со страницы Features:

install4j предлагает полную поддержку для создания и установки сервисов (демонов). Для служб install4j генерирует исполняемые файлы служб в Windows, элементы автозагрузки в Mac OS X и сценарии запуска / остановки на платформах Unix / Linux.

Изменить: Что касается № 2, обнаружение JRE: install4 имеет довольно приятные, гибкие параметры для связывания / обнаружения JRE. Вы можете включить JRE (статически или динамически, совместно или нет) или предпочесть использовать тот, который уже присутствует, с возможностью загрузки JRE из вашего установщика в качестве запасного варианта. Дополнительную информацию можно найти в этих документах: Как установщики находят JRE и Пакеты JRE.

(Подробнее о моем опыте работы с install4j.)

Что касается других инструментов, вы можете проверить некоторые из предыдущих вопросов установщика Java по SO:

person Jonik    schedule 15.06.2009
comment
Кстати, отмечая ответ Питера, я бы определенно рекомендовал выбрать install4j вместо InstallAnywhere, который слишком дорог и неуклюж. Мы заменили InstallAnywhere на install4j; см. дополнительную информацию о моем опыте по ссылке выше. - person Jonik; 15.06.2009

Коммерческие инструменты, такие как InstallAnywhere, могут это сделать. После установки JAR (и ссылок и т. П.) Установщики могут проверить реестр, если Java уже установлена, и продолжить или нет. Пока установщик поддерживает все необходимые платформы, все в порядке.

person Peter Kofler    schedule 15.06.2009

Вы можете использовать launch4j, однако он не устанавливает автоматически java. Но, возможно, есть способ заставить это работать, например, упаковав JRE.

person miguelle    schedule 15.06.2009

Вы также можете взглянуть на BitRock InstallBuilder, он предоставляет встроенные функции для выполнения того, что вы хотите. Мы будем рады создать для вас образец установщика, просто напишите нам.

person Daniel Lopez    schedule 18.07.2009

Я рекомендую скачать исходный код сценариев сборки популярных программ на Java, таких как limewire, и следовать их примеру. Конец.

... Или вы можете поступить так же, как я:

  • Я выполнил обнаружение JRE и загрузил / установил распространяемый пакет, если требуется, с NSIS в Windows. Может быть .msi лучше, чем installer.exe, который создает NSIS. Я считаю, что msi больше похожи на пакеты на Mac, поэтому они позволяют правильные обновления. Может быть, NSIS создает MSI ... не уверен.
  • Mac - это просто пакет Java-приложений, и вы указываете JRE и другую информацию Java в info.plist, и вы можете при желании создать файл .pkg, чтобы предоставить пользователю установщик и связать его в dmg с помощью программ командной строки dmg.
  • Я не делал Linux и не планирую ... извините :)

На все это пришлось потрудиться. Сначала я работал с Windows, а через пару лет - с Mac.

Вы можете интегрировать все это в сценарии сборки NSIS и Ant. Не могу вспомнить, почему не использовал install4j. Наверное, я был слишком дешевым :)

person Cal    schedule 01.11.2009

Не слышал ни о чем, что работает на всех этих платформах, но JSmooth может помочь (соответствует вашим потребностям в Windows ). Я использовал его около 2 лет назад, и он работал нормально.

person abyx    schedule 15.06.2009
comment
Привет, abyx .. Мне нужна твоя помощь в JSmooth .. Ты можешь мне помочь? - person Venky; 23.03.2011
comment
@Venkatesh - Прошло 4 года с тех пор, как я последний раз использовал его, и я не могу сказать, что ничего не помню ... Извините :) - person abyx; 23.03.2011