Каковы хорошие замены 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.
- Предпочтительно иметь достойный графический интерфейс для объединения установщика. Однако, если это сделано, должен пропустить графический интерфейс и сделать процесс установки частью процесса автоматической сборки.
Изменить: я опубликовал отдельный ответ о том, что мы решили выбрать и почему.
Ответы
Ответ 1
В этом случае, к сожалению, SO не рассказывал нам многое, что мы уже не знали (и действительно инструмент, который мы в конечном счете выбрали, не упоминался ни в одном ответе). Тем не менее, я публикую здесь свои впечатления, поскольку позже они могут быть полезны другим.
Мы (быстро) оценили следующие инструменты установки, в основном, просматривая их веб-сайты и просматривая другую информацию в Интернете: Actual Installer, Расширенный установщик, BitRock InstallBuilder, Inno Setup, Установить создателя, 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), вам не потребовалось много времени, чтобы найти то, что мне нужно.
- Вы можете полностью настроить экраны и действия во время процедуры установки, а также добавить пользовательские экраны и действия (закодированные против
Ответ 2
Я могу поручиться за izPack. Он основан на Ant, поэтому вы можете упаковать в него Ant, и что Ant install может содержать пользовательские задачи и/или скрипты, написанные в вашем файле Ant build.xml(например, используя Groovy, Beanshell или любой скриптовый язык с поддержкой BSF). Таким образом, он будет отвечать вашим настраиваемым требованиям.
Я использовал его в прошлом для всех вышеперечисленных - unzipping/services/custom code. Это многоплатформенный, хотя я не могу ручаться за этот конкретный экземпляр выше (64-битная Windows). Но если он запускает Java, вы должны быть в порядке.
Одна головная боль - это JRE. Очевидно, для этого вам понадобится JRE. Однако я думаю, что вы должны иметь возможность собирать и выполнять определенную установку JRE в izPack.
Ответ 3
Мы создали BitRock InstallBuilder, инструмент кроссплатформенной установки после некоторого разочаровывающего опыта с InstallAnywhere и особенно его кузеном (ныне несуществующим) InstallShield MP. Более половины наших клиентов используют наш инструмент для упаковки программного обеспечения на базе Java, но этот инструмент является родным, а не основанным на Java. Это означает, что у нас есть ряд преимуществ, таких как внешний вид и внешний вид (включая Vista, GTK, Qt и т.д.), И не нужно делать самоизвлечения до установки (более быстрый запуск, меньше требований к пространству), чтобы упомянуть пару. Чтобы ответить на ваши конкретные вопросы:
- Поддерживает вызов Java-кода как часть установки в несколько точек времени (например, когда отображается определенная страница, скопированные файлы, время удаления и т.д.). Код не компилируется в установщике, но его можно вызывать извне и результат, используемый в установщике. Если вы более конкретны, какой именно код вам нужен, я могу предоставить конкретный пример кода. У нас есть много встроенных действий для функциональных возможностей, которые необходимо добавить вручную другим установщикам, поэтому вам может не понадобиться писать этот код в первую очередь!
- Мы поддерживаем все версии Windows, включая 64-битную и Windows 2008 (несколько клиентов сертифицированы на этих платформах с помощью наших установщиков)
- Мы поддерживаем серверы приложений, включая Tomcat, Resin, JBoss и другие. Взгляните на BitNami на примеры таких стеков, которые мы создали.
- Мы поддерживаем копирование и перемещение файлов, замену значений в файлах конфигурации, распаковку файлов и большинство других обычных функций установки. Один из наших принципов заключается в том, что установщик должен обеспечить встроенную поддержку общих действий по установке и иметь простой и понятный интерфейс для вызова внешнего кода, специфичного для клиентского продукта.
- Мы поддерживаем связывание JRE, так как вы говорите достаточно часто, чтобы связать каталог JRE и установить соответствующее значение для JAVA_HOME в сценариях запуска
Вы можете взглянуть на некоторые из наших customers, таких как MySQL, Samsung, Motorola, GitHub и т.д. InstallBuilder - коммерческий но мы предлагаем бесплатные лицензии на проекты с открытым исходным кодом и скидки для малого бизнеса и microISV.
Ответ 4
В настоящее время мы используем 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/
Ответ 5
Просто хочу добавить, что моя компания использовала InstallAnywhere около 6 лет, но мы решили двигаться дальше. Причина в два раза.
Прежде всего, их ценообразование - это абсолютное ограбление шоссе, и лицензирование является строго ограничивающим по сравнению с прямыми конкурентами, такими как INstall4J и BitRock.
Моя другая проблема с InstallAnywhere заключается в том, что продукт минимально поддерживается. Я использую продукт в течение 6-7 лет через множество разных версий, и ошибки редко исправляются, и вы наверняка не можете ожидать новых функций. По сути, все, что вы можете ожидать, это то, что они добавят поддержку новой версии windows/mac по мере ее появления. Их плата за поддержку довольно дорогая, но у меня никогда не было запроса на поддержку, фактически реализованного. Когда я впервые купил продукт, я считаю, что это была компания ZeroG, которая была ориентирована исключительно на этот продукт. Они фактически поддерживали и улучшали продукт. Тогда это был единственный реальный билет, и они были прыжками и ограничениями выше соревнований.
Затем он был приобретен Macrovision, а затем Flexera. С тех пор, как ZeroG продала продукт, он стал вспомогательным продуктом для собственной компании, и основное внимание на нем было неудовлетворительным. Похоже, что он был куплен больше, чтобы завершить набор продуктов, а не потому, что компания действительно хотела сохранить продукт.
Осторожно, тщательно оценивайте эти продукты, потому что вы можете привязаться к ним. Мы бы оставили продукт раньше, но мы прилагаем столько усилий не только к установщику, но и создаем автоматическую схему обновления, основанную на характеристиках/ограничениях продукта, которые дорого выходят из продукта из-за трудовых инвестиций в воспроизведите это в новом продукте.
Просто я беру, но я бы не рекомендовал InstallAnywhere.
Ответ 6
Развертывание в многоплатформенной среде всегда является большим источником проблем. Он считает, что оптимальное решение будет нацелено на создание собственных пакетов для всех платформ, таких как RPM, DEB или MSI... те, которые также могут быть установлены без присмотра.
Разработчики должны работать над тем, чтобы сделать самовосстановление приложения и работать без установки.
Выполнение этого приведет к снижению эффективности развертывания.
Я знаю, что это не совсем такое решение, как вы спрашиваете, но иногда вы можете получить лучшие результаты таким образом.
Помните, что вы получите бесплатную услугу обновления в Linux, если будете следовать этим требованиям.
Я все еще надеюсь, что Microsoft добавит нечто похожее на MSI (и это не потребует от вас регистрации на них). Между тем для Windows вы можете взглянуть на Google Updater, выпущенный только как открытый источник - http://code.google.com/p/omaha/
Они выпустили аналогичный продукт для Mac OS http://code.google.com/p/update-engine/, но грустно, что они не думали о создании одного продукта из этих двух.
Ответ 7
вам может быть интересно launch4j
Ответ 8
Jonik, спасибо за публикацию такой подробной информации о вашем опыте. Я хотел написать следующий ответ, так как вы поднимаете некоторые хорошие моменты.
После выполнения определенных базовых требований (которые, к сожалению, InstallAnywhere больше не существует), на самом деле нет "плохих" или "хороших" инструментов, а скорее инструментов, которые лучше подходят для некоторых проектов. Кажется, вы тщательно изучили все варианты, и install4j будет работать лучше для вашего проекта. Это, вероятно, хороший выбор, так как у вас есть существующая Java-база данных из вашего предыдущего установщика, которую вы хотите использовать повторно (хотя я бы хотел подумать, что часть этого кода не потребуется в InstallBuilder:)
Что касается InstallBuilder, мы поддерживаем настройку последовательности экранов с помощью <insertBefore> тег (мы, вероятно, должны лучше документировать это). Также просто собрать JRE (в большинстве случаев, включая java/folder), но я думаю, что ваша критика верна: поскольку это общая задача, мы должны лучше справляться с документированием/сделать ее доступной, хотя графический интерфейс, включая drag-and-drop на всех поддерживаемых платформах. У нас уже есть в нашей дорожной карте, улучшающей графический интерфейс в тех областях, которые вы упоминаете. Самое забавное, что многие наши клиенты находят формат XML настолько простым в использовании, что предпочитают его редактировать с помощью своих редакторов (как если бы они редактировали HTML)
Наконец, в отношении лицензирования наша текущая модель не требует приобретения дополнительных лицензий, если эти дополнительные программисты будут просто создавать инсталляторы (не разрабатывая их) или приобретать дополнительные лицензии для построенных или непрерывных интеграционных машин. В любом случае, пара плавающих лицензий для install4j дороже, чем полная лицензия на Enterprise Site для BitRock:)
Еще раз спасибо за отзывы
Ответ 9
Я рекомендую взглянуть на cmInstall, который можно найти по адресу
http://sourceforge.net/projects/cminstall/
Он отвечает почти всем вашим требованиям и является открытым исходным кодом. Плюс я один из его разработчиков:).
- [yes] Должен поддерживать запуск пользовательского кода Java как часть процедуры установки
- [yes] Должна поддерживать Windows, включая новейшие 64-разрядные версии, такие как Windows Server 2008; поддержка других целевых операционных систем - это плюс
- [может быть легко выполнена с использованием сторонних библиотек - например: Tanuki Software] Должна быть в состоянии установить подключенный сервер приложений (например, Resin или Tomcat) в качестве службы в Windows
- [yes] Должен поддерживать основные элементы, такие как копирование и перемещение файлов, редактирование файлов конфигурации, извлечение ZIP файлов и т.д.
-
[yes - или вы можете запрограммировать его и разархивировать) Должна поддерживать привязку определенной версии JRE; по крайней мере, включив ZIP файл, который нужно извлечь
6. [no - ему нужен jdk 1.6, поддержка для .exe или .msi запланирована на будущее] Предпочтительно не зависит от предустановленной JRE (или любой другой сторонней среды исполнения или библиотеки) на целевой машине; другими словами, может создавать независимый Windows.exe(или .msi)
-
[yes] Инструмент должен быть предпочтительно межплатформенным, чтобы программа установки могла быть выполнена в Linux, Windows или Mac.
7. [no - инфраструктура cminstall является "основанной на разработчике", но проста в использовании. Просто прочитайте руководства из http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 и посмотреть, как легко построить установщик!] Желательно иметь достойный графический интерфейс для установки установщика вместе. Однако, как только это будет сделано, должно быть возможно пропустить графический интерфейс и сделать процесс установки частью процесса автоматической сборки.
Ответ 10
Я видел, как несколько человек рекомендуют IzPack, но я честно не знаю, соответствует ли оно вашим требованиям. Это, по крайней мере, бесплатно:)
Ответ 11
Sun предлагает установщик с открытым исходным кодом:
OpenInstaller
Я уверен, что все ваши запрошенные функции поддерживаются.
Но мне кажется, что слишком сложно настроить.
Но угадайте, что: у него есть не только GUI, но и (псевдографический) CLI.
Хорошие скриншоты и информация здесь.
Ответ 12
Вы можете попробовать SetupBuilder Gradle Plugin, чтобы создать собственный установщик *.msi с простой конструкцией Gradle script.
- Это бесплатно.
- Поддержка 32-битной и 64-битной Windows. Также Linux и OSX.
- Свяжите виртуальную машину Java под Windows и OSX, не требуется предустановленная виртуальная машина Java.
- Может запускать Java-код до или после установки.
- Может создать службу/демон Windows.
- Нет графического интерфейса, но используйте Gradle. Если вы уже используете Gradle в качестве языка сборки script, тогда это очень просто.
Ответ 13
Кроме того, я обнаружил, что некоторые из разработчиков с множеством платформ с открытым исходным кодом. Вот мой комментарий:
- BitRock InstallBuilder: только отлично подходит для разработчиков с открытым исходным кодом, поскольку он дает бесплатную лицензию для использования в проектах с открытым исходным кодом.
- InstallJammer: хороший бесплатный и открытый сервер с несколькими версиями. Только одна проблема заключается в том, что как только одна загрузка исполняемой сборки из InstallJammer, антивирусная программа немедленно удалит ее. Как-то файлы, созданные из InstallJammer, попадают в False Positives. Перед публикацией вам нужно будет еще немного получить сертификат безопасности.
- Izpack: Хороший бесплатный и с открытым исходным кодом многоплатформенный установщик. Это может быть немного громоздкой для людей, не привыкших к ant. Может быть замечательным при использовании с интерфейсами GUI, например PackJacket.