¿Cuáles son buenos reemplazos InstallAnywhere para instalar una aplicación Java EE?


¿Qué herramienta de instalación (comercial o gratuita) recomendaría reemplazar InstallAnywhere como instalador para una aplicación Java EE? ¿Qué te gusta específicamente de él, y cuáles son sus desventajas?

Algunos requisitos:

  • Debe admitir la ejecución de código Java personalizado como parte del procedimiento de instalación
  • Debe ser compatible con Windows, incluidas las últimas versiones de 64 bits como Windows Server 2008; el soporte para otros sistemas operativos de destino es un plus
  • Debe poder instalar un servidor de aplicaciones incluido (como Resin o Tomcat) como servicio en Windows
  • Debe soportar cosas básicas como copiar y mover archivos, editar archivos de configuración, extraer ZIPs, etc.
  • (Debe soportar la agrupación de una versión específica de JRE; al menos incluyendo un ZIP para ser extraído)

Editar: algunos puntos más:

  • Preferiblemente no depende de un JRE preinstalado (o cualquier otro entorno de ejecución o biblioteca de terceros) en la máquina de destino; en otras palabras, puede producir una Ventana independiente .exe (or .msi)
  • La herramienta debe ser preferiblemente multiplataforma para que el desarrollo del instalador se pueda hacer en Linux, Windows o Mac.
  • Debería tener preferiblemente una GUI decente para armar el instalador. Una vez hecho esto, sin embargo, debe ser posible omitir la GUI y hacer que la construcción del instalador sea parte de la construcción automatizada proceso.

Editar : Yo publiqué una respuesta separada acerca de lo que terminamos eligiendo y por qué.

Author: Community, 2009-04-17

13 answers

En este caso, desafortunadamente, ASÍ que no nos dijo mucho que no sabíamos ya (y de hecho la herramienta que finalmente elegimos no se mencionó en ninguna respuesta). Sin embargo, estoy publicando nuestras experiencias aquí, ya que podrían ser útiles para otros más adelante.

Evaluamos (rápidamente) las siguientes herramientas de instalación, principalmente mirando sus sitios web y buscando otra información en la web: Instalador real, Instalador Avanzado, BitRock InstallBuilder, Configuración Inno, Creador de Instalación, Tornillo de banco instalador para Windows, InstallShield, install4j, IzPack, NSIS, openInstaller, Scriptlogic MSI Studio, Fabricante de Instalación Inteligente, Symantec Wise Installation Studio, y WiX.

Seleccionamos la mayoría de ellos al principio, y terminamos preseleccionando dos opciones para una evaluación más cercana: BitRock InstallBuilder y install4j. Para estas herramientas, descargamos versiones de evaluación e hicimos algunos prototipos, para ver si las cosas que son más importantes para nosotros son realmente compatibles, y lo fácil o difícil que es hacer que las cosas funcionen.

Ambas opciones eran buenas en muchas cosas (y ambas parecían buenas alternativas a InstallAnywhere):

  • Producen ventanas completamente nativas y bonitas .exe instaladores que son fácil de personalizar con tus propios gráficos sucesivamente.
  • Ambas herramientas podrían automatizarse fácilmente para que la construcción del instalador se active desde Ant. (Con install4j literalmente me tomó solo cinco minutos para aprenderlo y luego implementarlo.)
  • Ambas compañías parecen tener un buen soporte (bueno, al menos para los prospectos que evalúan sus productos ;-) Especialmente de BitRock recibimos respuestas muy rápidas.

En las siguientes cosas install4j parecía mejor que BitRock para nuestras necesidades (muchas de estas son subjetivas, de por supuesto, así YMMV):

  • install4j definitivamente tiene mejor soporte para ejecutar código Java personalizado - se puede hacer en cualquier momento durante la instalación, e independientemente de si hay algún JRE preinstalado en el sistema.
  • BitRock utiliza una secuencia de pasos de instalación más codificada, mientras que install4j es más flexible. En install4j, agregar pantallas y formularios personalizados (con o sin código Java personalizado), solicitar al usuario la entrada, etc., se puede hacer en cualquier momento, antes o después instalando cualquier archivo.
  • También algunas cosas básicas como definir los conjuntos de archivos que se van a copiar en el sistema de destino, y agregar un paso de instalación para reemplazar ciertas cadenas en los archivos de configuración parecía algo más fácil en install4j.
  • install4j tiene mejor soporte para la agrupación de JRE
  • Al crear instaladores en Linux, el aspecto del IDE install4j era más agradable (más "nativo") que el de BitRock
  • (las opciones de licencia de install4j fueron mejor para nosotros - preferimos fuertemente un par de licencias flotantes a las licencias nombradas para todos los desarrolladores o una costosa "licencia de sitio")

Así que finalmente fuimos con install4j. Aquí hay algunos detalles más sobre por qué fue impresionante:

  • Su IDE, donde se pone el instalador juntos, es muy simple y fácil de usar - pude averiguar cómo hacer la mayoría de las cosas que quería rápidamente, incluso sin mirar la documentación. Y cuando tuve que comprobar algo en la documentación (por ejemplo, cómo hacer referencia a variables del instalador; cómo empezar a escribir código Java personalizado en la API install4j), no me llevó mucho tiempo encontrar lo que necesitaba.
  • Puede personalizar completamente las pantallas y acciones durante el procedimiento de instalación, y también agregar pantallas y acciones personalizadas (codificadas contra su API Java) en cualquier momento. Esto era importante para nosotros porque necesitamos reutilizar el código Java personalizado existente del antiguo InstallAnywhere instalador.
  • En algunos pequeños detalles, install4j parece ideal para desarrolladores Java. Por ejemplo, si desea agregar un script de validación para verificar alguna entrada del usuario, puede codificarlo muy rápidamente en el propio IDE install4j, utilizando Java antiguo simple, con una asistencia de codificación similar a la de IntelliJ IDEA.
  • Consideramos que el costo de las licencias flotantes de install4j es razonable, teniendo en cuenta lo buena que es la herramienta (y francamente ganga en comparación con el precio inflado de InstallAnywhere...)
  • En resumen, parecía la mejor herramienta de instalación disponible para implementar aplicaciones Java.
 54
Author: Jonik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-28 22:13:01

Puedo responder por IzPack. Está basado en Ant, por lo que puede empaquetar una instalación de Ant en ella, y esa instalación de Ant puede contener tareas personalizadas y/o scripts escritos dentro de su compilación de Ant.xml (por ejemplo, usando Groovy, Beanshell o cualquier lenguaje de scripting habilitado para BSF). Así que cubrirá su requisito personalizable.

Lo he usado en el pasado para todo lo anterior - descomprimir/servicios/código personalizado. Es multiplataforma, aunque no puedo responder por esa instancia específica anterior (Windows de 64 bits). Pero si ejecuta Java, debería estar bien.

El único dolor de cabeza es el JRE. Obviamente necesitarías algún JRE para ejecutar esto. Sin embargo, creo que debería ser capaz de empacar y ejecutar una instalación JRE específica dentro de IzPack.

 7
Author: Brian Agnew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-17 10:34:31

Creamos BitRock InstallBuilder, una herramienta de instalación crossplatform después de algunas experiencias frustrantes con InstallAnywhere y especialmente su primo (ahora desaparecido) InstallShield MP. Más de la mitad de nuestros clientes utilizan nuestra herramienta para empaquetar software basado en Java, pero la herramienta es nativa, no basada en Java. Eso significa que tenemos una serie de ventajas, como la apariencia nativa (incl. Vista, GTK, Qt, etc.) y no hay necesidad de hacer autoextracción antes de la instalación (arranque más rápido, menos requisitos de espacio) para mencionar un par. Para responder a sus preguntas específicas:

  • Admite la llamada a código Java como parte de la instalación en varios puntos del tiempo (como cuando se muestra una determinada página, se copian archivos, en el momento de la desinstalación, etc.).). El código no se compila en el instalador, pero se puede llamar externamente y el resultado se utiliza en el instalador. Si usted es más específico acerca de qué tipo de código que necesita, puedo proporcionar un código de ejemplo específico. Tenemos un montón de acciones integradas para la funcionalidad que debe agregarse manualmente a otros instaladores, por lo que es posible que no necesite escribir ese código en primer lugar.
  • Apoyamos todas las versiones de Windows, incluyendo 64bit y Windows 2008 (varios clientes han certificado en esas plataformas utilizando nuestros instaladores)
  • Admitimos servidores de aplicaciones agrupados, incluidos Tomcat, Resin, JBoss y otros. Echa un vistazo a BitNami para ver ejemplos de tales pilas que hemos creado.
  • Nosotros admite la copia y el movimiento de archivos, la sustitución de valores en archivos de configuración, el desempaquetado de archivos y la mayoría de las otras funciones de instalación comunes. Uno de nuestros principios es que el instalador debe proporcionar soporte integrado para acciones de instalación comunes y tener una interfaz fácil y limpia para invocar código externo que es específico para el producto de un cliente.
  • Apoyamos la agrupación de JRE, como usted menciona a menudo es suficiente solo para agrupar el directorio JRE y establecer el valor apropiado para JAVA_HOME en los scripts de lanzamiento

Puedes echar un vistazo a algunos de nuestros clientes como MySQL, Samsung, Motorola, GitHub, etc. InstallBuilder es un producto comercial, pero ofrecemos licencias gratuitas para proyectos de código abierto y descuentos para pequeñas empresas y MICROVS.

 6
Author: Daniel Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-17 13:27:01

Solo quiero añadir que mi empresa ha utilizado InstallAnywhere durante unos 6 años, pero hemos decidido seguir adelante. La razón es doble.

En primer lugar, su precio es un robo de carretera absoluto y la licencia es severamente restrictiva en comparación con competidores directos como INstall4J y BitRock.

Mi otro problema con InstallAnywhere es que el producto solo se mantiene mínimamente. He estado usando el producto durante 6-7 años a través de muchas versiones diferentes y los errores son rara vez fijo y seguramente no se puede esperar nuevas características. Esencialmente todo lo que puede esperar es que agregarán soporte para la nueva versión de windows/mac a medida que salga. Sus cargos de soporte son bastante caros, pero nunca he tenido una solicitud de soporte realmente implementada. Cuando compré el producto por primera vez creo que era de una empresa llamada ZeroG que se centraron únicamente en este producto. En realidad mantuvieron y mejoraron el producto. En ese entonces era el único boleto real y estaban saltos y límites por encima de la competencia.

Luego fue adquirido por Macrovision y luego Flexera. Desde que ZeroG vendió el producto, ha sido un producto auxiliar para la empresa propietaria y el enfoque en él ha sido pobre. Parece que se compró más para completar un conjunto de productos en lugar de porque la empresa realmente quería mantener el producto.

Palabra de precaución, evalúe estos productos cuidadosamente porque puede atarse a ellos. Habríamos dejado la producto antes, pero ponemos tanto esfuerzo no solo en el instalador, sino en la configuración de un esquema de actualización automática basado en las características/limitaciones del producto que es costoso dejar el producto debido a la inversión de mano de obra para reproducir esto en un nuevo producto.

Solo mi opinión, pero no recomendaría InstallAnywhere.

 4
Author: springcorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-21 02:43:38

Actualmente estamos usando GetDown para manejar la distribución de nuestras aplicaciones swing. Usamos Tomcat para distribuir actualizaciones y GetDown para descargar esas actualizaciones. Es muy flexible y potente, y mucho mejor que java WebStart y debido a que produce suma de comprobación para los cambios que guarda bandwith y descarga archivos recién cambiados.

Un buen tutorial : http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/

Sitio web del proyecto: https://github.com/threerings/getdown

 4
Author: Heidarzadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-18 12:46:55

La implementación en un entorno multiplataforma siempre es una gran fuente de problemas. Se piensa que la solución óptima se dirigiría a la creación de paquetes nativos para todas las plataformas, como RPM, DEB o MSI ... los que podrían ser instalados desatendidos también.

Los desarrolladores deben trabajar en hacer que la aplicación se repare automáticamente y se ejecute sin instalación.

Al hacerlo, se minimizarán los esfuerzos de implementación.

Sé que esto no es una solución como usted donde preguntar, pero a veces puede obtener mejores resultados de esta manera.

Recuerde que obtendrá un servicio de actualización gratuito en Linux si sigue estos.

Todavía espero que Microsoft agregue algo similar a MSI (y eso no requeriría que se registre en ellos). Mientras tanto para Windows se puede echar un vistazo a Google Updater acaba de publicar como código abierto - http://code.google.com/p/omaha /

Lanzaron un producto similar para Mac OS http://code.google.com/p/update-engine / pero es triste que no pensaran en crear un producto a partir de estos dos.

 3
Author: sorin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-02 12:24:56

Puedes probar el complemento SetupBuilder Gradle para crear un nativo *.instalador msi con un sencillo script de compilación de Gradle.

  • Es gratis.
  • Soporta Ventanas de 32 bits y 64 bits. También Linux y OSX.
  • Empaquetar la VM Java en Windows y OSX, no requiere una VM Java preinstalada.
  • Puede ejecutar código Java antes o después de la instalación.
  • Puede crear un servicio/demonio de Windows.
  • No tiene una interfaz gráfica de usuario, pero usa Gradle. Si ya utiliza Gradle como construir lenguaje de script entonces es muy fácil.
 2
Author: Horcrux7,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-29 16:36:14

Te puede interesar launch4j

 1
Author: dfa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-17 10:22:18

Jonik, gracias por publicar comentarios tan detallados de su experiencia. Quería escribir una respuesta complementaria, ya que usted plantea algunos puntos positivos.

Después de que se cumplen ciertos requisitos básicos (que desafortunadamente InstallAnywhere ya no lo hace) no hay realmente herramientas 'malas' o 'buenas', sino más bien herramientas que son más adecuadas para algunos proyectos. Parece que ha estudiado cuidadosamente todas las opciones e install4j funcionará mejor para su proyecto. Esta es probablemente una buena opción, ya que una base de código Java existente de su instalador anterior que desea reutilizar (aunque me gustaría pensar que parte de ese código no sería necesario con InstallBuilder:)

Con respecto a InstallBuilder, apoyamos la personalización de la secuencia de pantalla usando la etiqueta (probablemente deberíamos documentar mejor esto). También es sencillo agrupar un JRE (solo incluyendo la carpeta java/ en la mayoría de los casos) , pero creo que su crítica es válida: ya que esta es una tarea común, deberíamos hacer un mejor trabajo en la documentación / hacerlo accesible a través de la interfaz gráfica de usuario, incluyendo arrastrar y soltar en todas las plataformas compatibles. Ya tenemos en nuestra hoja de ruta mejorando la GUI en las áreas que mencionas. Lo curioso es que muchos de nuestros clientes encuentran el formato XML tan fácil de usar que prefieren editarlo usando sus editores de programación (como si estuvieran editando HTML)

Finalmente, con respecto a las licencias, nuestro modelo actual no requiere la compra de licencias adicionales si esos programadores adicionales simplemente construirá los instaladores (no los diseñará) o comprará licencias adicionales para máquinas de construcción o integración continua. En cualquier caso, un par de licencias flotantes para install4j son más caras que una licencia de Sitio Empresarial completa para BitRock:)

Gracias de nuevo por los comentarios

 1
Author: Daniel Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-25 13:38:20

Recomiendo echar un vistazo a cmInstall , que se puede encontrar en http://sourceforge.net/projects/cminstall /

Cumple con casi todos sus requisitos y es de código abierto. Además soy uno de sus desarrolladores :).

  1. [yes] Debe admitir la ejecución de código Java personalizado como parte del procedimiento de instalación
  2. [sí] Debe ser compatible con Windows, incluidas las últimas versiones de 64 bits como Windows Server 2008; el soporte para otros sistemas operativos de destino es un plus
  3. [puede se puede hacer fácilmente mediante el uso de libs de terceros-por ejemplo:Software Tanuki] Debe ser capaz de instalar un servidor de aplicaciones incluido (como Resin o Tomcat) como un servicio en Windows
  4. [yes] Debe soportar cosas básicas como copiar y mover archivos, editar archivos de configuración, extraer ZIPs, etc.
  5. [yes-or you can programatically download & unzip it ]Must support bundling a specific version of JRE; at the very least by including a ZIP to be extracted

    6.[no necesita jdk 1.6 instalado, soporte para .exe or .msi está previsto para el futuro]Preferiblemente no depende de un JRE preinstalado (o cualquier otro entorno de ejecución o biblioteca de terceros) en la máquina de destino; en otras palabras, puede producir un Windows independiente .exe (or .msi)

  6. [yes] La herramienta debe ser preferiblemente multiplataforma para que el desarrollo del instalador se pueda hacer en Linux, Windows o Mac.

    7.[no - el framework cminstall está "basado en desarrolladores" - pero es fácil de usar.Solo lee el tutoriales de http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 y ver lo fácil que es construir un instalador!] Debería tener preferiblemente una GUI decente para armar el instalador. Una vez hecho esto, sin embargo, debe ser posible omitir la GUI y hacer que la construcción del instalador sea parte del proceso de compilación automatizado.

 1
Author: Flueras Bogdan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-03 23:25:11

También he revisado algunos de los instaladores multiplataforma de código abierto. Aquí está mi comentario:

  1. BitRock InstallBuilder : Solo es ideal para desarrolladores de código abierto y libre, ya que da licencia gratuita para su uso en proyectos de código abierto.
  2. InstallJammer: Buen instalador multiplataforma gratuito y de código abierto. Solo una preocupación que tan pronto como uno descarga la compilación ejecutable de InstallJammer, el programa antivirus lo eliminará inmediatamente. De alguna manera archivos construido a partir de InstallJammer están siendo capturados como Falsos positivos. Usted tendrá que trabajar un poco más certificado de seguridad antes de publicar.
  3. Izpack : Buen instalador multiplataforma gratuito y de código abierto. Puede ser un poco engorroso para las personas que no están acostumbradas a las hormigas. Puede ser genial cuando se usa con front-ends GUI como PackJacket .
 1
Author: angel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-27 08:51:54

He visto a varias personas recomendar IzPack, pero honestamente no sé si cumple con sus requisitos. Es al menos gratis:)

 0
Author: willcodejavaforfood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-30 22:11:56

Sun ofrece un instalador de código abierto:

OpenInstaller

Estoy seguro de que todas las características solicitadas son compatibles.
Pero me parece un poco difícil de configurar.

Pero adivina qué: No solo tiene una GUI sino también una CLI (pseudo-gráfica).
Bonitas capturas de pantalla e información aquí.

 0
Author: ivan_ivanovich_ivanoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-29 22:01:54