servlet paso gratis ejemplos curso con aplicaciones aplicacion java installer java-ee windows-installer

paso - ¿Cuáles son los mejores reemplazos de InstallAnywhere para instalar una aplicación Java EE?



curso servlet (13)

¿Qué herramienta de instalación (comercial o gratuita) recomendaría reemplazar InstallAnywhere como el instalador de una aplicación Java EE? ¿Qué le gusta específicamente al respecto 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; la compatibilidad con otros sistemas operativos de destino es un plus
  • Debe ser capaz de instalar un servidor de aplicaciones incluido (como Resin o Tomcat ) como un servicio en Windows
  • Debe admitir elementos básicos como copiar y mover archivos, editar archivos de configuración, extraer archivos ZIP, etc.
  • (Debe admitir la agrupación de una versión específica de JRE, al menos incluyendo un ZIP para extraer)

Editar: algunos puntos más:

  • Preferiblemente no depende de un JRE preinstalado (o cualquier otro entorno o biblioteca de tiempo de ejecución de terceros) en la máquina de destino; en otras palabras, puede producir un .exe (o .msi) de Windows independiente
  • La herramienta debe ser preferiblemente multiplataforma para que el desarrollo del instalador se pueda realizar 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 el instalador forme parte del proceso de compilación automatizado.

Editar : publiqué una respuesta por separado sobre lo que terminamos eligiendo y por qué.


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 realmente flexible y potente, y mucho mejor que Java WebStart y porque produce suma de verificación para los cambios, ahorra ancho de banda y descarga solo los archivos modificados.

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

Sitio web del proyecto: GetDown


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

  • Admite llamar al código Java como parte de la instalación en varios momentos (como cuando se muestra una página determinada, 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 usa en el instalador. Si es más específico sobre qué tipo de código necesita, puedo proporcionar un código de muestra específico. Tenemos muchas acciones integradas para la funcionalidad que debe agregarse manualmente a otros instaladores, ¡por lo que no es necesario que escriba ese código en primer lugar!
  • Admitimos todas las versiones de Windows, incluidos 64 bits y Windows 2008 (varios clientes han certificado en esas plataformas utilizando nuestros instaladores)
  • Admitimos servidores de aplicaciones incluidos, incluidos Tomcat, Resin, JBoss y otros. Eche un vistazo a BitNami para ver ejemplos de esas pilas que hemos creado.
  • Admitimos copiar y mover archivos, sustituir valores en archivos de configuración, desempaquetar archivos y la mayoría de las demás funciones de instalación comunes. Uno de nuestros principios es que el instalador debe proporcionar soporte integrado para las acciones de instalación comunes y tener una interfaz fácil y limpia para invocar un código externo que sea específico del producto de un cliente.
  • Admitimos la agrupación de JRE, como usted menciona es suficiente para agrupar el directorio de JRE y establecer el valor apropiado para JAVA_HOME en los scripts de lanzamiento.

Puede echar un vistazo a algunos de nuestros customers 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 microISV.


En este caso, lamentablemente, SO no nos dice mucho que no sabíamos (y de hecho, la herramienta que finalmente elegimos no se menciona 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 , Instalador de instalación de BitRock , Configuración de Inno , Creador de instalación , Instalador VISE para Windows , InstallShield , install4j , IzPack , NSIS , openInstaller , Scriptlogic MSI Studio , Smart Install Maker , Symantec Wise Installation Studio y WiX .

Detectamos la mayoría de ellos desde el principio y terminamos seleccionando dos opciones para una evaluación más cercana: BitRock InstallBuilder e 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 qué tan fácil o difícil es hacer que las cosas funcionen.

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

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

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

  • install4j definitivamente tiene un mejor soporte para ejecutar código Java personalizado, se puede hacer en cualquier punto durante la instalación, y sin importar 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, la adición de pantallas y formularios personalizados (con o sin código Java personalizado), solicitando la entrada del usuario, etc., puede hacerse en cualquier momento, antes o después de instalar 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ían algo más fáciles en install4j.
  • install4j tiene mejor soporte para agrupar JRE
  • Al crear instaladores en Linux, el aspecto de install4j IDE fue más agradable (más "nativo") que el de BitRock
  • (Las opciones de licencia de install4j fueron mejores para nosotros; preferimos un par de licencias flotantes a licencias nombradas para todos los desarrolladores o una costosa "licencia de sitio")

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

  • Su IDE, en el que se instala el instalador, es muy simple y fácil de usar: podría 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 verificar algo en la documentación (por ejemplo, cómo referirme a las variables del instalador , cómo empezar a escribir código Java personalizado contra la API install4j ), no tardé en encontrar lo que necesitaba.
  • Puede personalizar completamente las pantallas y las acciones durante el procedimiento de instalación, y también agregar pantallas personalizadas y acciones (codificadas contra su API de Java ) en cualquier punto. Esto fue importante para nosotros porque necesitamos reutilizar el código Java personalizado existente del instalador anterior de InstallAnywhere.
  • En algunos pequeños detalles, install4j parece ideal para desarrolladores de Java . Por ejemplo, si desea agregar un script de validación para verificar la entrada de algún usuario, puede codificarlo muy rápidamente en el IDE de install4j mismo, utilizando Java antigua simple , con asistencia de codificación parecida a la de IntelliJ IDEA.
  • Consideramos que el costo de las licencias flotantes de install4j es razonable, considerando cuán buena es la herramienta (y totalmente rentable en comparación con los precios inflados de InstallAnywhere ...)
  • En resumen, parecía la mejor herramienta de instalación disponible para implementar aplicaciones Java.

He visto a varias personas recomendar IzPack , pero sinceramente no sé si cumple con sus requisitos. Al menos es gratis :)


Jonik, gracias por publicar comentarios tan detallados de tu experiencia. Quería escribir una respuesta de seguimiento, ya que plantea algunos puntos buenos.

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

En cuanto a InstallBuilder, admitimos la personalización de la secuencia de pantalla utilizando la etiqueta <insertBefore> (probablemente deberíamos documentar esto mejor). También es sencillo agrupar un JRE (simplemente incluyendo la carpeta java / en la mayoría de los casos), pero creo que su crítica es válida: dado que esta es una tarea común, deberíamos hacer un mejor trabajo al documentarla / hacerla accesible a través de la GUI, incluyendo Arrastrar y soltar en todas las plataformas compatibles. Ya tenemos en nuestra hoja de ruta la mejora de la GUI en las áreas que usted menciona. Lo curioso es que muchos de nuestros clientes consideran que el formato XML es tan fácil de usar que prefieren editarlo con 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 solo crearán instaladores (no los diseñarán) o comprarán licencias adicionales para las máquinas de integración continua o compilación. En cualquier caso, un par de licencias flotantes para install4j son más caras que una licencia completa de Enterprise Site para BitRock :)

Gracias de nuevo por los comentarios


La implementación en un entorno multiplataforma siempre es una gran fuente de problemas. Considera que la solución óptima se enfocaría en la creación de paquetes nativos para todas las plataformas, como RPM, DEB o MSI ... las que también podrían instalarse desatendidas.

Los desarrolladores deben trabajar para que la aplicación se autocierre y funcione sin instalación.

Hacerlo redundará en beneficio de minimizar los esfuerzos de despliegue.

Sé que esto no es una solución, ya que lo preguntas, pero a veces puedes obtener mejores resultados de esta manera.

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

Todavía espero que Microsoft agregue algo similar a MSI (y eso no requeriría que te registraras en ellos). Mientras tanto, para Windows puedes echarle un vistazo a Google Updater recién publicado 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 de estos dos.


Puede probar el plugin SetupBuilder Gradle para crear un instalador nativo * .msi con un simple script de construcción de Gradle.

  • Es gratis.
  • Admite Windows de 32 bits y 64 bits. También Linux y OSX.
  • Agrupe Java VM 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 / daemon de Windows.
  • No tiene una GUI pero usa Gradle. Si ya usas Gradle como lenguaje de script de compilación, entonces es muy fácil.

Puedo responder por IzPack . Está basado en Ant, por lo que puede empaquetar una instalación Ant en él, y esa instalación Ant puede contener tareas personalizadas y / o scripts escritos en Ant build.xml (por ejemplo, usando Groovy, Beanshell o cualquier lenguaje de scripting habilitado para BSF). Por lo tanto, 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ías estar bien.

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


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. [sí] 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; la compatibilidad con otros sistemas operativos de destino es un plus
  3. [se puede hacer fácilmente mediante el uso de libs de terceros, por ejemplo: Tanuki Software] Debe ser capaz de instalar un servidor de aplicaciones incluido (como Resin o Tomcat) como un servicio en Windows
  4. [sí] Debe admitir elementos básicos como copiar y mover archivos, editar archivos de configuración, extraer archivos ZIP, etc.
  5. [sí - o puede descargarlo y descomprimirlo programáticamente] Debe ser compatible con la agrupación de una versión específica de JRE; al menos incluyendo un ZIP para extraer

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

  6. [sí] 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 el desarrollador" - pero es fácil de usar. Simplemente lea los tutoriales de http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 y vea qué tan fácil es ¡construye 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 el instalador forme parte del proceso de compilación automatizado.


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

En primer lugar, su precio es un robo absoluto de autopistas y la licencia es muy 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 rara vez se corrigen y seguramente no se pueden esperar nuevas características. Esencialmente, todo lo que puede esperar es que agreguen soporte para la nueva versión de Windows / Mac a medida que sale. Sus costos de soporte son bastante caros, pero nunca tuve una solicitud de soporte realmente implementada. Cuando compré el producto por primera vez, creo que era de una compañía llamada ZeroG que se enfocaba exclusivamente en este producto. De hecho, mantuvieron y mejoraron el producto. En aquel entonces era el único boleto real y estaban a pasos agigantados 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 deficiente. Parece que se compró más para completar un conjunto de productos en lugar de porque la compañía realmente quería mantener el producto.

Palabra de advertencia, evalúe estos productos con cuidado porque puede vincularse con ellos. Hubiéramos dejado el producto antes, pero pusimos tanto esfuerzo no solo en el instalador, sino que establecimos un esquema de actualización automática basado en las características / limitaciones del producto que es caro dejar el producto debido a la inversión en mano de obra para reproducir esto en un nuevo producto.

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


Sun ofrece un instalador de código abierto:

openInstaller

Estoy seguro de que todas las funciones 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).
Buenas capturas de pantalla e información here .


También he visto 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 gratuitos, ya que otorga licencia gratuita para su uso en proyectos de código abierto.
  2. InstallJammer : buen instalador multiplataforma gratuito y de código abierto. Solo me preocupa que tan pronto como uno descargue la compilación ejecutable desde InstallJammer, el programa antivirus lo elimine de inmediato. De alguna manera, los archivos creados desde InstallJammer se detectan como falsos positivos. Deberá trabajar un poco más en el certificado de seguridad antes de publicarlo.
  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 la hormiga. Puede ser genial cuando se usa con interfaces frontales de GUI como PackJacket .

usted puede estar interesado en launch4j