Установщик JAR, который автоматически определяет наличие Java и автоматически запускает приложение
Мне нужно создать установщик, который делает следующее:
- Устанавливает мою банку на клиент.
- Автоматически определяет, установлен ли JRE (в этом случае он не переустанавливает его), в противном случае он устанавливается без нажатия пользователем другой кнопки.
- Автоматически запускает приложение при загрузке клиента.
- Работает в Windows, Mac и Linux.
Есть идеи, как это сделать?
6 ответов
Если коммерческий инструмент в порядке, я могу порекомендовать install4j. 1, 2 и 4 легко сделать с ним, но насчет 3 я не уверен. Изменить: Вероятно, вы могли бы достичь этого, установив ваше приложение в качестве "службы", которую install4j поддерживает для всех платформ. Цитирование на странице Особенности:
install4j предлагает полную поддержку создания и установки сервисов (демонов). Для служб install4j генерирует исполняемые файлы служб в Windows, элементы автозагрузки в Mac OS X и сценарии запуска / остановки на платформах Unix/Linux.
Изменить: Что касается #2, обнаружение JRE: install4 имеет довольно хорошие, гибкие опции для объединения / обнаружения JRE. Вы можете включить JRE (статически или динамически, совместно или нет) или предпочесть использовать уже существующий JRE с возможностью загрузки JRE из вашего установщика в качестве запасного варианта. Посмотрите эти документы для получения дополнительной информации: Как установщики находят пакеты JRE и JRE.
( Подробнее о моем опыте с install4j.)
Для других инструментов вы можете проверить некоторые из предыдущих вопросов об установщике Java на SO:
Коммерческие инструменты, такие как InstallAnywhere, могут это сделать. После установки JAR (и ссылок и тому подобного) установщики могут проверить реестр, если Java уже установлена, и продолжить работу или нет. Пока установщик поддерживает все необходимые платформы, у вас все в порядке.
Вы также можете взглянуть на BitRock InstallBuilder, он предоставляет встроенные функции для выполнения того, что вы хотите. Мы будем рады создать образец установщика для вас, просто напишите нам.
Вы можете использовать launch4j, однако он не устанавливает автоматически Java. Но, возможно, есть способ заставить это работать, например, упаковав JRE.
Я рекомендую скачать исходный код для сценариев сборки популярных Java-программ, таких как limewire, и последовать их примеру. Конец.
... Или вы можете сделать, как я:
- Я сделал обнаружение JRE и загрузил / установил распространяемый при необходимости с NSIS на Windows. Возможно.msi лучше, чем installer.exe, который создает NSIS. Я считаю, что MSI больше похожи на пакеты для Mac, поэтому они позволяют корректные обновления. Может быть, NSIS создает MSI... не уверен.
- Mac - это просто пакет Java App, и вы указываете JRE и другую информацию Java в info.plist, и вы можете при желании создать файл.pkg, чтобы предоставить пользователю установщик и связать его в dmg с помощью программ командной строки dmg.
- Я не делал Linux и не планирую... извините:)
Все это было изрядной работой. Сначала я занимался Windows, а пару лет спустя - Mac.
Вы можете интегрировать все это в скрипты сборки NSIS и Ant. Я не могу вспомнить, почему я не использовал install4j. Наверное, я был слишком дешевым:)
Не слышал ничего о том, что работает на всех этих платформах, но JSmooth может помочь (соответствует вашим потребностям в Windows). Я использовал его около 2 лет назад, и он работал нормально.