Каковы хорошие замены InstallAnywhere для установки приложения Java EE? - PullRequest
43 голосов
/ 17 апреля 2009

Какой (коммерческий или бесплатный) инструмент установки вы бы порекомендовали заменить InstallAnywhere в качестве программы установки для приложения Java EE? Что вам конкретно нравится в этом, и каковы его недостатки?

Некоторые требования:

  • Должен поддерживать запуск пользовательского кода Java как часть процедуры установки
  • Должен поддерживать Windows, включая последние 64-битные версии, такие как Windows Server 2008; поддержка других целевых операционных систем является плюсом
  • Должен иметь возможность установить в комплекте сервер приложений (например, Resin или Tomcat ) в качестве службы в Windows
  • Должен поддерживать базовые функции, такие как копирование и перемещение файлов, редактирование файлов конфигурации, извлечение ZIP-файлов и т. Д.
  • (Должен поддерживать комплектацию определенной версии JRE; по крайней мере, с помощью извлечения ZIP-архива)

Редактировать: еще несколько очков:

  • Предпочтительно не зависит от предварительно установленной JRE (или любой другой сторонней среды выполнения или библиотеки) на целевой машине; другими словами, может производить независимый Windows .exe (или .msi)
  • Средство предпочтительно должно быть кроссплатформенным, чтобы разработка инсталлятора могла выполняться на Linux, Windows или Mac.
  • Желательно иметь приличный графический интерфейс для сборки установщика. Однако, как только это будет сделано, должно иметь возможность пропустить графический интерфейс и сделать сборку установщика частью процесса автоматической сборки.

Ответы [ 13 ]

55 голосов
/ 24 апреля 2009

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

Мы (быстро) оценили следующие инструменты установщика, в основном, просматривая их веб-сайты и просматривая другую информацию в Интернете: Фактический установщик , Расширенный установщик , BitRock InstallBuilder , Inno Setup , Install Creator , Установщик VISE для Windows , InstallShield , install4j , IzPack , NSIS , openInstaller , Scriptlogic MSI Studio , Smart Install Maker , Установка Symantec Wise Студия и 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 ), это не помогло. займет много времени, чтобы найти то, что мне нужно.
  • Вы можете полностью настраивать экраны и действия во время процедуры установки, а также добавлять пользовательские экраны и действия (закодированные в соответствии с их Java API ) в любой момент. Это было важно для нас, потому что нам нужно повторно использовать существующий пользовательский код Java из старого установщика InstallAnywhere.
  • В некоторых мелких деталях install4j кажется идеальным для Java разработчиков. Например, если вы хотите добавить сценарий проверки, чтобы проверить ввод данных пользователем, вы можете очень быстро кодировать его в самой IDE install4j, , используя простую старую Java , с помощью кодирования, напоминающей IntelliJ IDEA.
  • Мы посчитали стоимость плавающих лицензий install4j разумной, учитывая, насколько хорош инструмент (и прямую сделку по сравнению с завышенной ценой InstallAnywhere ...)
  • Короче говоря, это был лучший инструмент для установки, доступный для развертывания приложений Java.
8 голосов
/ 17 апреля 2009

Мы создали 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 является коммерческим продуктом, но мы предлагаем бесплатные лицензии для проектов с открытым исходным кодом и скидки для небольших компаний. бизнес и микроСВ.

7 голосов
/ 17 апреля 2009

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

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

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

6 голосов
/ 21 марта 2013

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

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

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

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

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

Только мое мнение, но я бы не рекомендовал InstallAnywhere.

4 голосов
/ 31 августа 2012

В настоящее время мы используем GetDown для управления распространением наших приложений Swing. Мы используем 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

3 голосов
/ 02 мая 2009

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

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

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

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

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

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

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

2 голосов
/ 29 марта 2016

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

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

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

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

Я рекомендую взглянуть на cmInstall , который можно найти на http://sourceforge.net/projects/cminstall/

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

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

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

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

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

1 голос
/ 25 апреля 2009

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

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

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

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

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

...