Каковы хорошие замены 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.
  • Желательно иметь достойный графический интерфейс для объединения установщика. Однако, как только это будет сделано, должно быть возможно пропустить графический интерфейс и сделать инсталлятор частью процесса автоматической сборки.

Редактировать : я опубликовал отдельный ответ о том, что мы в итоге решили и почему.

В этом случае, к сожалению, SO не рассказывала нам многое, что мы уже не знали (и действительно инструмент, который мы в конечном счете выбрали, не упоминался ни в одном ответе). Тем не менее, я публикую здесь свой опыт, так как позже они могут быть полезны другим.

Мы (быстро) оценили следующие инструменты установки, в основном, просматривая их веб-сайты и просматривая другую информацию в Интернете: Actual Installer , Advanced Installer , BitRock InstallBuilder , Inno Setup , Install Creator , Installer 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 внешний вид install4j был более приятным (более «родным»), чем внешний вид BitRock
  • (опции лицензирования install4j были для нас лучше – мы настоятельно предпочли пару плавающих лицензий для названных лицензий для всех разработчиков или дорогостоящую «лицензию сайта»)

Так что в итоге мы пошли с install4j . Вот еще несколько подробностей о том, почему это было впечатляюще:

  • Его IDE, где вы устанавливаете установщик вместе, очень проста и проста в использовании – я мог бы выяснить, как делать большинство вещей, которые я хотел быстро, даже не глядя на документацию. И когда мне нужно было что-то проверить в документации (например, как ссылаться на переменные установщика , как начать писать собственный Java-код против API-интерфейса install4j ), вам не потребовалось много времени, чтобы найти то, что мне нужно.
  • Вы можете полностью настроить экраны и действия во время процедуры установки, а также добавить пользовательские экраны и действия (закодированные против их Java API ) в любой момент. Это было важно для нас, потому что нам нужно повторно использовать существующий пользовательский код Java из старого установщика InstallAnywhere.
  • В некоторых небольших деталях install4j кажется идеальным для разработчиков Java . Например, если вы хотите добавить скрипт проверки, чтобы проверить некоторые пользовательские вводные данные, вы можете быстро это сделать в самой IDE install4j, используя обычную старую Java , с поддержкой кодирования, аналогичной поддержке IntelliJ IDEA.
  • Мы считали, что стоимость плавающих лицензий install4j обоснована, учитывая, насколько хорош инструмент (и совершенно выгодная сделка по сравнению с завышенной ценой для InstallAnywhere …)
  • Короче говоря, это казалось лучшим инструментом установки, доступным для развертывания Java-приложений.

Я могу ручаться за izPack . Это Ant-based, поэтому вы можете упаковать в него Ant-установку, и что Ant install может содержать пользовательские задачи и / или скрипты, написанные в вашем файле Ant build.xml (например, с помощью Groovy, Beanshell или любого скриптового языка с поддержкой BSF). Таким образом, он будет охватывать ваши настраиваемые требования.

Я использовал его в прошлом для всех вышеперечисленных – распаковки / services / custom code. Это многоплатформенная платформа, хотя я не могу ручаться за этот конкретный экземпляр выше (64-битная Windows). Но если он запускает Java, вы должны быть в порядке.

Одна головная боль – это JRE. Очевидно, для этого вам понадобится JRE. Однако я думаю, что вы должны иметь возможность собирать и выполнять определенную установку JRE в izPack.

Мы создали 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.

В настоящее время мы используем GetDown для обработки дистрибутивов наших приложений swing. Мы используем Tomcat для распространения обновлений и GetDown для загрузки этих обновлений. Он действительно гибкий и мощный, и намного лучше, чем Java WebStart, и потому, что он производит контрольную сумму для изменений, он экономит ленту и загружает только что измененные файлы.

Хороший учебник: http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/

Веб-сайт проекта: http://code.google.com/p/getdown/

Просто хочу добавить, что моя компания использовала InstallAnywhere около 6 лет, но мы решили двигаться дальше. Причина в два раза.

Прежде всего, их ценообразование – это абсолютное ограбление шоссе, и лицензирование является строго ограничивающим по сравнению с прямыми конкурентами, такими как INstall4J и BitRock.

Моя другая проблема с InstallAnywhere заключается в том, что продукт минимально поддерживается. Я использую продукт в течение 6-7 лет через множество разных версий, и ошибки редко исправляются, и вы наверняка не можете ожидать новых функций. По сути, все, что вы можете ожидать, это то, что они добавят поддержку новой версии windows / mac по мере ее появления. Их плата за поддержку довольно дорогая, но у меня никогда не было запроса на поддержку, фактически реализованного. Когда я впервые купил продукт, я считаю, что это была компания ZeroG, которая была ориентирована исключительно на этот продукт. Они фактически поддерживали и улучшали продукт. Тогда это был единственный реальный билет, и они были прыжками и ограничениями выше соревнований.

Затем он был приобретен Macrovision, а затем Flexera. С тех пор, как ZeroG продала продукт, он стал вспомогательным продуктом для собственной компании, и основное внимание на нем было неудовлетворительным. Похоже, что он был куплен больше, чтобы завершить набор продуктов, а не потому, что компания действительно хотела сохранить продукт.

Будьте осторожны, тщательно оценивайте эти продукты, потому что вы можете привязываться к ним. Мы бы оставили продукт раньше, но мы прилагаем столько усилий не только к установщику, но и создаем автоматическую схему обновления, основанную на характеристиках / ограничениях продукта, которые дорого выходят из продукта из-за трудовых инвестиций в воспроизведите это в новом продукте.

Просто я беру, но я бы не рекомендовал InstallAnywhere.

Развертывание в многоплатформенной среде всегда является большим источником проблем. Он считает, что оптимальное решение будет нацелено на создание собственных пакетов для всех платформ, таких как RPM, DEB или MSI … те, которые также могут быть установлены без присмотра.

Разработчики должны работать над тем, чтобы сделать самовосстановление приложения и работать без установки.

Это позволит компенсировать затраты на развертывание.

Я знаю, что это не совсем такое решение, как вы спрашиваете, но иногда вы можете получить лучшие результаты таким образом.

Помните, что вы получите бесплатную услугу обновления в Linux, если будете следовать этим требованиям.

Я все еще надеюсь, что Microsoft добавит что-то похожее на MSI (и это не потребует от вас регистрации на них). Между тем для Windows вы можете взглянуть на Google Updater, только что выпущенный как открытый источник – http://code.google.com/p/omaha/

Они выпустили аналогичный продукт для Mac OS http://code.google.com/p/update-engine/, но грустно, что они не думали о создании одного продукта из этих двух.

Вы можете попробовать SetupBuilder Gradle Plugin создать собственный установщик * .msi с помощью простого скрипта сборки Gradle.

  • Это бесплатно.
  • Поддерживает 32-битную и 64-битную Windows. Также Linux и OSX.
  • Свяжите виртуальную машину Java под Windows и OSX, не требуется предустановленная виртуальная машина Java.
  • Может запускать Java-код до или после установки.
  • Может создать службу / демон Windows.
  • Не имеет графического интерфейса, но использует Gradle. Если вы уже используете Gradle как язык сценария сборки, это очень просто.

вы можете быть заинтересованы в launch4j

Jonik, спасибо за публикацию такой подробной информации о вашем опыте. Я хотел написать следующий ответ, так как вы поднимаете некоторые хорошие моменты.

После выполнения определенных базовых требований (что, к сожалению, InstallAnywhere больше не существует), на самом деле нет «плохих» или «хороших» инструментов, а скорее инструментов, которые лучше подходят для некоторых проектов. Кажется, вы тщательно изучили все варианты, и install4j будет работать лучше для вашего проекта. Это, вероятно, хороший выбор, поскольку у вас есть существующая Java-firebase database из вашего предыдущего установщика, которую вы хотите использовать повторно (хотя я бы хотел подумать, что некоторые из этого кода не нужны в InstallBuilder 🙂

Что касается InstallBuilder, мы поддерживаем настройку последовательности экранов с помощью тега (мы, вероятно, должны лучше документировать это). Также просто собрать JRE (в большинстве случаев, включая java / folder), но я думаю, что ваша критика верна: поскольку это общая задача, мы должны лучше справляться с документированием / сделать ее доступной, хотя графический интерфейс, включая drag-and-drop на всех поддерживаемых платформах. У нас уже есть в нашей дорожной карте, улучшающей графический интерфейс в тех областях, которые вы упоминаете. Самое смешное, что многие наши клиенты находят формат XML настолько простым в использовании, что предпочитают его редактировать с помощью своих редакторов (как если бы они редактировали HTML)

Наконец, в отношении лицензирования наша текущая модель не требует приобретения дополнительных лицензий, если эти дополнительные программисты будут просто создавать инсталляторы (не разрабатывая их) или приобретать дополнительные лицензии для построенных или непрерывных интеграционных машин. В любом случае, пара плавающих лицензий для install4j дороже, чем полная лицензия на Enterprise Site для BitRock 🙂

Еще раз спасибо за отзыв

Я рекомендую посмотреть cmInstall , который можно найти по адресу http://sourceforge.net/projects/cminstall/

Он отвечает почти всем вашим требованиям и является открытым исходным кодом. Плюс я один из его разработчиков :).

  1. [yes] Должен поддерживать запуск пользовательского кода Java как часть процедуры установки
  2. [yes] Должна поддерживать Windows, включая последние 64-разрядные версии, такие как Windows Server 2008; поддержка других целевых операционных систем – плюс
  3. [можно легко сделать, используя сторонние библиотеки, например: Программное обеспечение Tanuki] Должно быть возможно установить вложенный сервер приложений (например, Resin или Tomcat) в качестве службы в Windows
  4. [yes] Должен поддерживать основные элементы, такие как копирование и перемещение файлов, редактирование файлов конфигурации, извлечение ZIP-файлов и т. д.
  5. [yes – или вы можете программно загрузить и распаковать его] Должен поддерживать привязку определенной версии JRE; по крайней мере, включив ZIP-архив

    6. [нет – ему нужно установить jdk 1.6, поддержка для .exe или .msi запланирована на будущее] Предпочтительно не зависит от предустановленной JRE (или любой другой среды или среды выполнения сторонних разработчиков) на целевой машине; другими словами, может создавать независимый Windows .exe (или .msi)

  6. [yes] Инструмент должен быть предпочтительно межплатформенным, чтобы можно было установить программу установки на Linux, Windows или Mac.

    7. [no – инфраструктура cminstall является «основанной на разработчике», но проста в использовании. Просто прочтите руководства из http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 и посмотрите, насколько легко это сделать. построить установщик!] Желательно иметь достойный графический интерфейс для объединения установщика. Однако, как только это будет сделано, должно быть возможно пропустить графический интерфейс и сделать инсталлятор частью процесса автоматической сборки.

Я также получил несколько из нескольких разработчиков с несколькими версиями с открытым исходным кодом. Вот мой комментарий:

  1. BitRock InstallBuilder : только отлично подходит для разработчиков с открытым исходным кодом, поскольку он дает бесплатную лицензию для использования в проектах с открытым исходным кодом.
  2. InstallJammer : Хорошая бесплатная и открытая система для нескольких платформ. Только одна проблема заключается в том, что как только одна загрузка исполняемой сборки из InstallJammer, антивирусная программа немедленно удалит ее. Как-то файлы, созданные из InstallJammer, попадают в False Positives. Перед публикацией вам нужно будет немного больше получить сертификат безопасности.
  3. Izpack : хороший бесплатный и открытый сервер с несколькими версиями . Это может быть немного громоздкой для людей, не привыкших к муравьям. Может быть замечательным при использовании с интерфейсами GUI, такими как PackJacket .

Я видел, как некоторые люди рекомендуют IzPack , но я честно не знаю, соответствует ли это вашим требованиям. Это по крайней мере бесплатно 🙂

Sun предлагает установщик с открытым исходным кодом:

OpenInstaller

Я уверен, что все ваши запрошенные функции поддерживаются.
Но мне кажется, что слишком сложно настроить.

Но угадайте, что: у него есть не только графический интерфейс, но и (псевдографический) CLI.
Хорошие скриншоты и информация здесь .

Давайте будем гением компьютера.