Каковы хорошие замены InstallAnywhere для установки приложения Java EE?
Какой (коммерческий или бесплатный) инструмент установщика вы бы порекомендовали заменить InstallAnywhere в качестве установщика для приложения Java EE? Что вам конкретно нравится в этом, и каковы его недостатки?
Некоторые требования:
- Должен поддерживать запуск пользовательского кода Java как часть процедуры установки
- Должен поддерживать Windows, включая последние 64-битные версии, такие как Windows Server 2008; поддержка других целевых операционных систем является плюсом
- Должен быть в состоянии установить сервер приложений в комплекте (например, Resin или Tomcat) в качестве службы в Windows
- Должен поддерживать базовые функции, такие как копирование и перемещение файлов, редактирование файлов конфигурации, извлечение ZIP-файлов и т. Д.
- (Должен поддерживать комплектацию определенной версии JRE; по крайней мере, с помощью извлечения ZIP-архива)
Изменить: еще несколько пунктов:
- Предпочтительно не зависит от предустановленной JRE (или любой другой сторонней среды выполнения или библиотеки) на целевой машине; другими словами, может производить независимый Windows .exe (или.msi)
- Этот инструмент предпочтительно должен быть кроссплатформенным, чтобы разработка инсталлятора могла выполняться на Linux, Windows или Mac.
- Желательно иметь приличный графический интерфейс для установки установщика. Однако, как только это будет сделано, должна быть возможность пропустить графический интерфейс и сделать сборку установщика частью процесса автоматической сборки.
Изменить: я разместил отдельный ответ о том, что мы в конечном итоге выбрали и почему.
13 ответов
В этом случае, к сожалению, SO не сказал нам много, чего мы еще не знали (и действительно, инструмент, который мы в конечном итоге выбрали, не был упомянут ни в одном ответе). Тем не менее, я публикую здесь наш опыт, так как он может быть полезен другим позже.
Мы (быстро) оценили следующие инструменты установщика, в основном просматривая их веб-сайты и просматривая другую информацию в Интернете: фактический установщик, расширенный установщик, BitRock InstallBuilder, Inno Setup, Install Creator, установщик VISE для Windows, InstallShield, install4j, IzPack, NSIS, openInstaller, Scriptlogic MSI Studio, Smart Install Maker, Symantec Wise Installation Studio и WiX.
Вначале мы отобрали большинство из них и в итоге отобрали два варианта для более тщательной оценки: BitRock InstallBuilder и install4j. Для этих инструментов мы загрузили ознакомительные версии и создали несколько прототипов, чтобы посмотреть, действительно ли поддерживаются наиболее важные для нас вещи и насколько легко или сложно заставить их работать.
Оба варианта были хороши во многих отношениях (и оба казались хорошими альтернативами InstallAnywhere):
- Они производят полностью родные и красивые установщики Windows .exe, которые легко настроить с вашей собственной графикой и т. Д.
- Оба инструмента могут быть легко автоматизированы, так что сборка инсталлятора запускается из Ant. (С install4j мне буквально потребовалось всего пять минут, чтобы выучить его, а затем реализовать.)
- Обе компании, кажется, имеют хорошую поддержку (ну, по крайней мере, для потенциальных клиентов, оценивающих их продукты;-) Особенно от BitRock мы получили очень быстрые ответы.
В следующих случаях install4j показался нам лучше, чем BitRock (многие из них, конечно, субъективны, поэтому YMMV):
- У install4j определенно больше поддержки для запуска пользовательского кода Java - это можно сделать в любой момент во время установки и независимо от того, есть ли в системе какой-либо предустановленный JRE.
- BitRock использует более жесткую последовательность шагов установки, а install4j более гибок. В install4j добавление пользовательских экранов и форм (с пользовательским кодом Java или без него), запрос ввода данных пользователем и т. Д. Можно выполнить в любой момент, до или после установки любых файлов.
- Кроме того, некоторые простые вещи, такие как определение наборов файлов, которые должны быть скопированы в целевую систему, и добавление шага установки для замены определенных строк в файлах конфигурации, казались несколько проще в install4j.
- У install4j улучшена поддержка JRE
- При создании установщиков в Linux внешний вид ID4 install4j был более приятным (более "родным"), чем в BitRock.
- (Варианты лицензирования install4j были для нас лучше - мы настоятельно предпочли пару плавающих лицензий по сравнению с именованными лицензиями для всех разработчиков или дорогую "лицензию на сайт")
Итак, в конечном итоге мы пошли с install4j. Вот еще несколько подробностей о том, почему это было впечатляюще:
- Его IDE, в котором вы собрали установщик, очень прост и удобен в использовании - я мог понять, как быстро выполнить большинство задач, даже не обращаясь к документации. И когда мне пришлось что-то проверять в документации (например, как обращаться к переменным установщика; как начать писать собственный код Java с помощью API install4j), мне не потребовалось много времени, чтобы найти то, что мне нужно.
- Вы можете полностью настраивать экраны и действия во время процедуры установки, а также добавлять пользовательские экраны и действия (закодированные в соответствии с их API Java) в любой момент. Это было важно для нас, потому что нам нужно повторно использовать существующий пользовательский код Java из старого установщика InstallAnywhere.
- В некоторых небольших деталях install4j кажется идеальным для разработчиков Java. Например, если вы хотите добавить сценарий проверки, чтобы проверить вводимые пользователем данные, вы можете очень быстро кодировать их в самой IDE install4j, используя простую старую Java, с помощью кодирования, напоминающей IntelliJ IDEA.
- Мы посчитали стоимость плавающих лицензий install4j разумной, учитывая, насколько хорош инструмент (и прямую сделку по сравнению с завышенной ценой InstallAnywhere...)
- Короче говоря, это казалось лучшим из доступных инструментов для установки приложений Java.
Мы создали BitRock InstallBuilder, кроссплатформенный инструмент для установки, после некоторого разочаровывающего опыта с InstallAnywhere и особенно его двоюродного брата (ныне несуществующего) InstallShield MP. Более половины наших клиентов используют наш инструмент для упаковки программного обеспечения на основе Java, но этот инструмент является нативным, а не на основе Java. Это означает, что у нас есть ряд преимуществ, таких как собственный внешний вид (в том числе Vista, GTK, Qt и т. Д.), И нам не нужно выполнять самораспаковку перед установкой (более быстрый запуск, меньше места), если упомянуть пару. Чтобы ответить на ваши конкретные вопросы:
- Поддерживает вызов кода Java в процессе установки в различные моменты времени (например, когда отображается определенная страница, копируются файлы, во время удаления и т. Д.). Код не компилируется в программе установки, но его можно вызывать извне, а результат использовать в программе установки. Если вы более конкретно знаете, какой код вам нужен, я могу предоставить конкретный пример кода. У нас есть много встроенных действий для функциональности, которые необходимо вручную добавить к другим установщикам, поэтому вам может не понадобиться писать этот код в первую очередь!
- Мы поддерживаем все версии Windows, включая 64-битную и Windows 2008 (несколько клиентов прошли сертификацию на этих платформах с помощью наших установщиков)
- Мы поддерживаем серверы в комплекте приложений, в том числе Tomcat, Resin, JBoss и другие. Посмотрите на BitNami примеры таких стеков, которые мы создали.
- Мы поддерживаем копирование и перемещение файлов, замену значений в конфигурационных файлах, распаковку файлов и большинство других распространенных функций установки. Один из наших принципов заключается в том, что установщик должен предоставлять встроенную поддержку для общих действий по установке и иметь простой, понятный интерфейс для вызова внешнего кода, специфичного для продукта клиента.
- Мы поддерживаем объединение JRE, как вы упоминаете, часто достаточно просто связать каталог JRE и установить соответствующее значение для JAVA_HOME в сценариях запуска
Вы можете взглянуть на некоторых наших клиентов, таких как MySQL, Samsung, Motorola, GitHub и т. Д. InstallBuilder - это коммерческий продукт, но мы предлагаем бесплатные лицензии на проекты с открытым исходным кодом и скидки для малого бизнеса и microISV.
Просто хочу добавить, что моя компания использовала InstallAnywhere около 6 лет, но мы решили двигаться дальше. Причина в два раза.
Прежде всего, их цена - абсолютное ограбление шоссе, и лицензирование строго ограничено по сравнению с прямыми конкурентами, такими как INstall4J и BitRock.
Моя другая проблема с InstallAnywhere заключается в том, что продукт обслуживается лишь минимально. Я использую продукт в течение 6-7 лет благодаря множеству различных версий, ошибки исправляются редко, и вы, конечно, не можете ожидать появления новых функций. По сути, все, что вы можете ожидать, это то, что они добавят поддержку новой версии windows / mac, как только она выйдет. Их плата за поддержку довольно дорогая, но у меня никогда не было запроса на поддержку. Когда я впервые купил продукт, я полагал, что это была компания под названием ZeroG, которая была сосредоточена исключительно на этом продукте. Они фактически поддерживали и улучшали продукт. Тогда это был единственный настоящий билет, и они были на ступеньках выше конкурентов.
Затем он был приобретен Macrovision, а затем Flexera. С тех пор, как ZeroG продал продукт, он стал вспомогательным продуктом для компании-владельца, и фокус на нем был слабым. Похоже, что это было куплено больше, чтобы завершить набор продуктов, а не потому, что компания действительно хотела сохранить продукт.
Слово предостережения, оцените эти продукты тщательно, потому что вы можете стать привязанными к ним. Мы бы оставили продукт раньше, но мы приложили столько усилий не только к установщику, но и к настройке схемы автоматического обновления, основанной на функциях / ограничениях продукта, так что выход из продукта дорогостоящ из-за трудозатрат на воспроизвести это в новом продукте.
Просто мое мнение, но я бы не рекомендовал InstallAnywhere.
Я могу поручиться за izPack. Он основан на Ant, поэтому вы можете упаковать в него установку Ant, и эта установка Ant может содержать пользовательские задачи и / или сценарии, написанные в вашем Ant build.xml (например, с использованием Groovy, Beanshell или любого языка сценариев с поддержкой BSF). Так что он покроет ваши настраиваемые требования.
Я использовал это в прошлом для всего вышеперечисленного - разархивирование /services/custom code. Он мультиплатформенный, хотя я не могу поручиться за этот конкретный пример выше (64-битная Windows). Но если он работает на Java, у вас все будет хорошо.
Единственная головная боль - это JRE. Вам, очевидно, понадобится немного JRE, чтобы запустить это. Однако я думаю, что вы должны быть в состоянии упаковать и выполнить определенную установку JRE в izPack.
В настоящее время мы используем GetDown для управления распространением наших свинг-приложений. Мы используем Tomcat для распространения обновлений и GetDown для загрузки этих обновлений. Он действительно гибкий и мощный, и намного лучше, чем java WebStart, и, поскольку он производит контрольную сумму для изменений, он сохраняет пропускную способность и загружает только что измененные файлы.
Хороший учебник: http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/
Сайт проекта: https://github.com/threerings/getdown
Развертывание в многоплатформенной среде всегда является источником проблем. Предполагается, что оптимальное решение будет нацелено на создание собственных пакетов для всех платформ, таких как RPM, DEB или MSI ... которые также могут быть установлены без присмотра.
Разработчики должны позаботиться о том, чтобы приложение самоизлечивалось и работало без установки.
Это позволит минимизировать усилия по развертыванию.
Я знаю, что это не совсем решение, так как вы спрашиваете, но иногда вы можете получить лучшие результаты таким образом.
Помните, что вы получите бесплатный сервис обновления для Linux, если вы будете следовать этим.
Я все еще надеюсь, что Microsoft добавит что-то похожее на MSI (и это не потребует от вас регистрации на них). Между тем, для Windows вы можете взглянуть на Google Updater, только что выпущенный с открытым исходным кодом - http://code.google.com/p/omaha/
Они выпустили аналогичный продукт для Mac OS http://code.google.com/p/update-engine/ но грустно, что они не думали о создании одного продукта из этих двух.
Я также ознакомился с несколькими многоплатформенными установщиками с открытым исходным кодом. Вот мой комментарий:
- BitRock InstallBuilder: только отлично подходит для разработчиков с открытым исходным кодом, так как предоставляет бесплатную лицензию для использования в проектах с открытым исходным кодом.
- InstallJammer: хороший бесплатный мультиплатформенный установщик с открытым исходным кодом. Единственное беспокойство, что как только кто-то загрузит исполняемый файл из InstallJammer, антивирусная программа немедленно удалит его. Каким-то образом файлы, созданные из InstallJammer, воспринимаются как ложные срабатывания. Вам придется работать немного больше сертификат безопасности перед публикацией.
- Izpack: Хороший многоплатформенный установщик с открытым исходным кодом. Это может быть немного громоздким для людей, не привыкших к муравью. Может быть замечательно при использовании с интерфейсами GUI, такими как PackJacket.
Вы можете попробовать плагин SetupBuilder Gradle, чтобы создать собственный установщик *.msi с помощью простого скрипта сборки Gradle.
- Это свободно.
- Поддерживает 32-битную и 64-битную Windows. Также Linux и OSX.
- Пакет Java VM под Windows и OSX, не требует предустановленной Java VM.
- Может запускать код Java до или после установки.
- Можно создать службу Windows / демон.
- Не имеет графического интерфейса, но использовать Gradle. Если вы уже используете Gradle в качестве языка сценариев сборки, это очень просто.
Jonik, спасибо за публикацию такого подробного отзыва о вашем опыте. Я хотел написать дополнительный ответ, так как вы подняли несколько хороших вопросов.
После выполнения определенных базовых требований (которых, к сожалению, InstallAnywhere больше нет), на самом деле появляются не "плохие" или "хорошие" инструменты, а инструменты, которые лучше подходят для некоторых проектов. Кажется, вы тщательно изучили все параметры, и install4j будет работать лучше для вашего проекта. Вероятно, это хороший выбор, поскольку у вас есть существующая кодовая база Java из вашего предыдущего установщика, которую вы хотите использовать повторно (хотя я хотел бы подумать, что часть этого кода не понадобится в InstallBuilder:)
Что касается InstallBuilder, мы поддерживаем настройку последовательности экранов с помощью тега
Наконец, что касается лицензирования, наша текущая модель не требует покупки дополнительных лицензий, если эти дополнительные программисты будут просто собирать установщики (не проектируя их) или приобретать дополнительные лицензии для машин сборки или непрерывной интеграции. В любом случае пара плавающих лицензий для install4j дороже, чем полная лицензия Enterprise Site для BitRock:)
Еще раз спасибо за отзыв
Я рекомендую взглянуть на cmInstall, который можно найти по адресу http://sourceforge.net/projects/cminstall/
Он отвечает почти всем вашим требованиям и с открытым исходным кодом. Плюс я один из его разработчиков:).
- [да] Должен поддерживать запуск пользовательского кода Java как часть процедуры установки
- [да] Должен поддерживать Windows, включая последние 64-битные версии, такие как Windows Server 2008; поддержка других целевых операционных систем является плюсом
- [может быть легко сделано с помощью сторонних библиотек - например, Tanuki Software] Должен быть в состоянии установить сервер приложений в комплекте (например, Resin или Tomcat) в качестве службы в Windows
- [да] Должен поддерживать базовые функции, такие как копирование и перемещение файлов, редактирование файлов конфигурации, извлечение ZIP-файлов и т. д.
[да - или вы можете программно загрузить и распаковать его] Должен поддерживать комплектацию определенной версии JRE; по крайней мере, включая ZIP-файл для извлечения
6. [нет - требуется jdk 1.6, поддержка.exe или.msi запланирована на будущее] Предпочтительно не зависит от предварительно установленного JRE (или любой другой сторонней среды выполнения или библиотеки) на целевой машине; другими словами, может производить независимый Windows .exe (или.msi)
[да] Инструмент должен быть кроссплатформенным, чтобы разработка инсталлятора могла выполняться на Linux, Windows или Mac.
7. [нет - инфраструктура cminstall "основана на разработчике" - но проста в использовании. Просто прочитайте учебные руководства по адресу http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 и посмотрите, как легко это сделать. построить установщик!] Желательно, чтобы у пользователя был приличный графический интерфейс для сборки установщика. Однако, как только это будет сделано, должна быть возможность пропустить графический интерфейс и сделать сборку установщика частью процесса автоматической сборки.
Я видел, как несколько человек рекомендуют IzPack, но я, честно говоря, не знаю, отвечает ли он вашим требованиям. Это как минимум бесплатно:)
Sun предлагает установщик с открытым исходным кодом:
Я уверен, что все ваши функции поддерживаются.
Но мне кажется, что это слишком сложно для настройки.
Но угадайте, что: у него есть не только GUI, но и (псевдографический) CLI.
Хорошие скриншоты и информация здесь.