Quels sont les bons remplacements InstallAnywhere pour installer une application Java EE?

Quel outil d’installation (commercial ou gratuit) recommanderiez-vous pour remplacer InstallAnywhere en tant qu’installateur pour une application Java EE? Qu’aimez-vous spécifiquement à ce sujet et quels sont ses inconvénients?

Quelques exigences:

  • Doit prendre en charge l’ exécution de code Java personnalisé dans le cadre de la procédure d’installation
  • Doit prendre en charge Windows, y compris les dernières versions 64 bits telles que Windows Server 2008; la prise en charge d’autres systèmes d’exploitation cibles est un plus
  • Doit pouvoir installer un serveur d’applications intégré (tel que Resin ou Tomcat ) en tant que service sous Windows
  • Doit supporter des éléments de base comme la copie et le déplacement de fichiers, l’édition de fichiers de configuration, l’extraction de fichiers ZIP, etc.
  • (Doit prendre en charge le regroupement d’une version spécifique de JRE, au minimum en incluant un fichier ZIP à extraire)

Edit: quelques points supplémentaires:

  • De préférence, ne dépend pas d’un JRE préinstallé (ou de tout autre environnement d’exécution ou bibliothèque tiers) sur la machine cible; en d’autres termes, peut produire un fichier Windows .exe indépendant (ou .msi)
  • L’outil doit de préférence être multi-plateforme afin que le développement de l’installateur puisse être effectué sur Linux, Windows ou Mac.
  • Devrait de préférence avoir une interface graphique décente pour mettre l’installateur ensemble. Une fois cela fait, il doit être possible d’ignorer l’interface graphique et de faire du programme d’installation une partie intégrante du processus de génération automatisé.

Edit : J’ai posté une réponse séparée sur ce que nous avons fini par choisir et pourquoi.

Dans ce cas, malheureusement, SO ne nous a pas beaucoup dit que nous ne savions pas déjà (et l’outil que nous avons finalement choisi n’a été mentionné dans aucune réponse). Cependant, je publie nos expériences ici, car elles pourraient être utiles par la suite.

Nous avons (rapidement) évalué les outils d’installation suivants, principalement en consultant leurs sites Web et en recherchant d’autres informations sur le Web: programme d’ installation , programme d’installation avancé , InstallBuilder BitRock , installation Inno , installeur VISE pour Windows , InstallShield , install4j , IzPack , NSIS , openInstaller , MSI Studio Scriptlogic , Smart Install Maker , Symantec Wise Installation Studio et WiX .

Nous avons éliminé la plupart d’entre eux dès le début et avons finalement sélectionné deux options pour une évaluation plus approfondie: BitRock InstallBuilder et install4j . Pour ces outils, nous avons téléchargé des versions d’évaluation et fait du prototypage, pour voir si les éléments les plus importants pour nous sont réellement pris en charge et à quel point il est facile ou difficile de faire fonctionner les choses.

Les deux options étaient bonnes dans beaucoup de choses (et les deux semblaient de bonnes alternatives à InstallAnywhere):

  • Ils produisent des installateurs Windows .exe entièrement natifs et jolis, faciles à personnaliser avec vos propres graphiques, etc.
  • Les deux outils peuvent facilement être automatisés pour que le programme d’installation soit déclenché depuis Ant. (Avec install4j, il ne m’a fallu que cinq minutes pour l’ apprendre et l’implémenter.)
  • Les deux sociétés semblent avoir un bon support (enfin, au moins pour les prospects évaluant leurs produits 😉 Surtout de BitRock, nous avons eu des réponses très rapides.

Dans les choses suivantes, install4j semblait mieux que BitRock pour nos besoins (beaucoup d’entre eux sont subjectifs, bien sûr, alors YMMV):

  • install4j prend définitivement mieux en charge l’exécution de code Java personnalisé – cela peut être fait à n’importe quel moment de l’installation et qu’il y ait ou non du JRE préinstallé sur le système.
  • BitRock utilise une séquence d’étapes d’installation plus codée alors qu’install4j est plus flexible. Dans install4j, l’ajout d’écrans et de formulaires personnalisés (avec ou sans code Java personnalisé), la demande d’utilisateurs, etc., peuvent être effectués à tout moment, avant ou après l’installation de fichiers.
  • En outre, certaines choses élémentaires, telles que la définition des ensembles de fichiers à copier sur le système cible et l’ajout d’une étape d’installation pour remplacer certaines chaînes dans les fichiers de configuration, semblaient un peu plus faciles dans install4j.
  • install4j prend mieux en charge le regroupement JRE
  • Lors de la création des programmes d’installation sous Linux, l’apparence et la convivialité d’IDE install4j était plus agréable (plus “native”) que celle de BitRock.
  • ( les options de licence install4j étaient meilleures pour nous – nous avons fortement préféré deux licences flottantes aux licences nommées pour tous les développeurs ou une “licence de site” coûteuse)

Donc finalement nous sums allés avec install4j . Voici quelques détails sur la raison pour laquelle il était impressionnant:

  • Son IDE, où vous installez l’installateur, est très simple et facile à utiliser – je pourrais trouver comment faire la plupart des choses que je voulais rapidement, même sans regarder la documentation. Et quand j’ai dû vérifier quelque chose dans la documentation (par exemple, comment faire référence aux variables du programme d’ installation , comment commencer à écrire du code Java personnalisé avec l’API install4j ), il n’a pas fallu longtemps pour trouver ce dont j’avais besoin.
  • Vous pouvez personnaliser complètement les écrans et les actions pendant la procédure d’installation, et append des écrans et des actions personnalisés (codés sur leur API Java ) à tout moment. Cela était important pour nous car nous devons réutiliser le code Java personnalisé existant de l’ancien programme d’installation InstallAnywhere.
  • Dans certains petits détails, install4j semble idéal pour les développeurs Java . Par exemple, si vous souhaitez append un script de validation pour vérifier certaines entrées utilisateur, vous pouvez le coder très rapidement dans l’EDI install4j lui-même, en utilisant l’ancien langage Java , avec une assistance de codage similaire à celle d’IntelliJ IDEA.
  • Nous avons jugé le coût des licences flottantes install4j raisonnable, compte tenu de la qualité de l’outil (et de ses avantages par rapport aux prix élevés d’InstallAnywhere …)
  • En bref, cela semblait être le meilleur outil d’installation disponible pour déployer des applications Java.

Je peux me porter garant pour izPack . Il est basé sur Ant, vous pouvez donc y installer une installation Ant et cette installation Ant peut contenir des tâches personnalisées et / ou des scripts écrits avec Ant build.xml (par exemple, Groovy, Beanshell ou tout autre langage de script compatible BSF). Il couvrira donc vos besoins personnalisables.

Je l’ai utilisé par le passé pour tout ce qui précède – décompression / services / code personnalisé. C’est multi-plateforme, même si je ne peux pas garantir cette instance spécifique ci-dessus (Windows 64 bits). Mais si cela fonctionne Java, ça devrait aller.

Le mal de tête est le JRE. Vous auriez évidemment besoin de JRE pour le faire fonctionner. Cependant, je pense que vous devriez pouvoir emballer et exécuter une installation JRE spécifique dans izPack.

Nous avons créé BitRock InstallBuilder , un outil d’installation multi-plateforme après quelques expériences frustrantes avec InstallAnywhere et spécialement son cousin (maintenant disparu) InstallShield MP. Plus de la moitié de nos clients utilisent notre outil pour créer des logiciels basés sur Java, mais l’outil est natif et non Java. Cela signifie que nous avons un certain nombre d’avantages tels que l’apparence native (y compris Vista, GTK, Qt, etc.) et qu’il n’est pas nécessaire de procéder à une auto-extraction avant l’installation (démarrage plus rapide, moins d’espace requirejs). Pour répondre à vos questions spécifiques:

  • Prend en charge l’appel du code Java dans le cadre de l’installation à différents moments (par exemple, l’affichage d’une page donnée, la copie de fichiers, la désinstallation, etc.). Le code n’est pas compilé dans le programme d’installation, mais il peut être appelé en externe et le résultat utilisé dans le programme d’installation. Si vous êtes plus précis sur le type de code dont vous avez besoin, je peux fournir un exemple de code spécifique. Nous avons beaucoup d’actions intégrées pour les fonctionnalités qui doivent être ajoutées manuellement à d’autres programmes d’installation. Vous n’avez donc pas besoin d’écrire ce code en premier lieu!
  • Nous prenons en charge toutes les versions de Windows, y compris 64 bits et Windows 2008 (plusieurs clients ont certifié sur ces plates-formes à l’aide de nos installateurs)
  • Nous prenons en charge les serveurs d’applications regroupés, notamment Tomcat, Resin, JBoss et autres. Jetez un oeil à BitNami pour des exemples de ces stacks que nous avons créées.
  • Nous prenons en charge la copie et le déplacement de fichiers, la substitution de valeurs dans les fichiers de configuration, la décompression de fichiers et la plupart des autres fonctionnalités d’installation courantes. L’un de nos principes est que le programme d’installation doit fournir une prise en charge intégrée pour les actions d’installation courantes et disposer d’une interface simple et propre pour appeler un code externe spécifique au produit d’un client.
  • Nous soutenons le regroupement des JRE, comme vous le mentionnez, il suffit souvent de regrouper le répertoire JRE et de définir la valeur appropriée pour JAVA_HOME dans les scripts de lancement.

Vous pouvez consulter certains de nos clients tels que MySQL, Samsung, Motorola, GitHub, etc. InstallBuilder est un produit commercial, mais nous proposons des licences gratuites pour les projets open source et des réductions pour les petites entresockets et les microISV.

Actuellement, nous utilisons GetDown pour gérer la dissortingbution de nos applications swing. Nous utilisons Tomcat pour dissortingbuer les mises à jour et GetDown pour télécharger ces mises à jour. Il est vraiment flexible et puissant, et bien meilleur que Java WebStart et parce qu’il produit une sum de contrôle pour les modifications, il enregistre la bande passante et télécharge les fichiers simplement modifiés.

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

Site Web du projet: http://code.google.com/p/getdown/

Je veux juste append que mon entreprise utilise InstallAnywhere depuis environ 6 ans, mais nous avons décidé de continuer. La raison est double.

Tout d’abord, leurs prix sont des vols sur route absolus et les licences sont très ressortingctives par rapport aux concurrents directs comme INstall4J et BitRock.

Mon autre problème avec InstallAnywhere est que le produit n’est que très peu entretenu. J’utilise le produit depuis 6 à 7 ans à travers de nombreuses versions différentes et les bogues sont rarement corrigés et vous ne pouvez certainement pas vous attendre à de nouvelles fonctionnalités. Essentiellement, tout ce que vous pouvez espérer, c’est qu’ils ajoutent un support pour la nouvelle version de Windows / Mac à sa sortie. Leurs frais de support sont assez élevés, mais je n’ai jamais eu de demande d’assistance réellement mise en œuvre. Lorsque j’ai acheté le produit pour la première fois, je crois que c’était une société appelée ZeroG qui se concentrait uniquement sur ce produit. Ils ont en fait maintenu et amélioré le produit. À l’époque, c’était le seul vrai ticket et ils étaient au-dessus de la concurrence.

Il a ensuite été acquis par Macrovision, puis par Flexera. Depuis que ZeroG a vendu le produit, celui-ci a été un produit auxiliaire pour la société propriétaire et l’accent a été mis sur ce produit. Il semble qu’il ait été acheté davantage pour compléter une suite de produits plutôt que parce que l’entreprise souhaitait réellement maintenir le produit.

Attention, évaluez ces produits avec soin car vous pouvez y être lié. Nous aurions quitté le produit plus tôt, mais nous avons consacré autant d’efforts non seulement à l’installateur, mais aussi à la mise en place d’un système de mise à jour automatique basé sur les caractéristiques du produit. reproduire ceci dans un nouveau produit.

Juste ma prise, mais je ne recommanderais pas InstallAnywhere.

Le déploiement dans un environnement multi-plateforme est toujours une source importante de problèmes. Il pense que la solution optimale viserait la création de packages natifs pour toutes les plates-formes, telles que RPM, DEB ou MSI … celles qui pourraient également être installées sans surveillance.

Les développeurs doivent travailler à rendre l’application auto-réparable et s’exécuter sans installation.

Cela vous permettra de minimiser les efforts de déploiement.

Je sais que ce n’est pas une solution tout à fait car vous demandiez, mais parfois vous obtiendrez de meilleurs résultats.

N’oubliez pas que vous obtiendrez un service de mise à jour gratuit sous Linux si vous suivez ces instructions.

J’espère toujours que Microsoft appenda quelque chose de similaire à MSI (et cela ne vous obligerait pas à vous y inscrire). Pendant ce temps pour Windows, vous pouvez jeter un oeil à Google Updater qui vient de paraître en tant que source ouverte – http://code.google.com/p/omaha/

Ils ont sorti un produit similaire pour Mac OS http://code.google.com/p/update-engine/ mais ils regrettent de ne pas avoir pensé à créer un seul produit à partir de ces deux logiciels.

Vous pouvez essayer le plug – in SetupBuilder Gradle pour créer un programme d’installation * .msi natif avec un simple script de génération Gradle.

  • Ce est gratuit.
  • Prend en charge Windows 32 bits et 64 bits. Aussi Linux et OSX.
  • Combinez la machine virtuelle Java sous Windows et OSX, ne nécessite pas de machine virtuelle Java préinstallée.
  • Peut exécuter Java Code avant ou après l’installation.
  • Peut créer un service / démon Windows.
  • N’a pas d’interface graphique mais utilise Gradle. Si vous utilisez déjà Gradle comme langage de script de construction, c’est très facile.

vous pourriez être intéressé par launch4j

Jonik, merci d’avoir posté des commentaires aussi détaillés sur votre expérience. Je voulais écrire une réponse car vous avez soulevé de bons points.

Après avoir satisfait à certaines exigences de base (ce que malheureusement InstallAnywhere ne fait plus), il n’ya pas vraiment de «mauvais» ou de «bons» outils, mais plutôt des outils mieux adaptés à certains projets. Il semble que vous ayez étudié attentivement toutes les options et install4j fonctionnera mieux pour votre projet. C’est probablement un bon choix, car vous avez une base de code Java existante de votre ancien programme d’installation que vous souhaitez réutiliser (même si je voudrais penser qu’une partie de ce code ne serait pas nécessaire avec InstallBuilder 🙂

En ce qui concerne InstallBuilder, nous prenons en charge la personnalisation de la séquence d’écran à l’aide de la balise (nous devrions probablement mieux le documenter). Il est également simple de regrouper un JRE (en incluant simplement le dossier java / dans la plupart des cas) mais je pense que vos critiques sont valables: comme il s’agit d’une tâche courante, nous devons mieux documenter / rendre accessible l’interface graphique, y compris glisser-déposer sur toutes les plates-formes sockets en charge. Nous avons déjà dans notre feuille de route l’amélioration de l’interface graphique dans les domaines que vous mentionnez. Ce qui est amusant, c’est que beaucoup de nos clients trouvent le format XML si facile à utiliser qu’ils préfèrent le modifier en utilisant leurs éditeurs de programmation (comme s’ils modifiaient du HTML).

Enfin, en ce qui concerne les licences, notre modèle actuel ne nécessite pas d’acquérir des licences supplémentaires si ces programmeurs supplémentaires ne font que créer les programmes d’installation (ne pas les concevoir) ou acheter des licences supplémentaires pour les machines de construction ou d’continuous integration. Dans tous les cas, deux licences flottantes pour install4j sont plus chères qu’une licence complète pour Enterprise Site pour BitRock 🙂

Merci encore pour les commentaires

Je recommande de consulter cmInstall , disponible à l’ adresse http://sourceforge.net/projects/cminstall/

Il répond à presque tous vos besoins et est open source. De plus, je suis l’un de ses développeurs :).

  1. [yes] Doit prendre en charge l’exécution du code Java personnalisé dans le cadre de la procédure d’installation
  2. [yes] Doit prendre en charge Windows, y compris les dernières versions 64 bits telles que Windows Server 2008; la prise en charge d’autres systèmes d’exploitation cibles est un plus
  3. [peut être facilement fait en utilisant des bibliothèques tierces – par exemple: Tanuki Software] Doit pouvoir installer un serveur d’applications fourni (comme Resin ou Tomcat) en tant que service sous Windows
  4. [yes] Doit supporter des choses basiques comme copier et déplacer des fichiers, éditer des fichiers de configuration, extraire des fichiers ZIP, etc.
  5. [oui – ou vous pouvez le télécharger et le décompresser par programmation] Doit prendre en charge le regroupement d’une version spécifique de JRE; à tout le moins en incluant un ZIP à extraire

    6. [no – il est nécessaire d’installer jdk 1.6, le support pour .exe ou .msi est prévu pour l’avenir] De préférence, ne dépend pas d’un JRE préinstallé (ou tout autre environnement d’exécution ou bibliothèque tiers) sur la machine cible; en d’autres termes, peut produire un fichier Windows .exe indépendant (ou .msi)

  6. [yes] L’outil doit de préférence être multi-plateforme afin que le développement de l’installateur puisse se faire sous Linux, Windows ou Mac.

    7. [non – le framework cminstall est “basé sur le développeur” – mais facile à utiliser.Il suffit de lire les tutoriels sur http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 et de voir comme il est facile de construire un installateur!] Devrait de préférence avoir une interface graphique décente pour mettre l’installateur ensemble. Une fois cela fait, il doit être possible d’ignorer l’interface graphique et de faire du programme d’installation une partie intégrante du processus de génération automatisé.

J’ai également consulté quelques-uns des installateurs multi-plateformes open source. Voici mon commentaire:

  1. BitRock InstallBuilder : uniquement pour les développeurs libres et open source car il offre une licence gratuite pour une utilisation dans des projets open source.
  2. InstallJammer : Bon installateur multi-plateforme gratuit et open source. Seule préoccupation: dès que l’on télécharge la version exécutable depuis InstallJammer, le programme anti-virus le supprime immédiatement. Certains fichiers créés à partir d’InstallJammer sont détectés comme des faux positifs. Vous devrez travailler un peu plus sur le certificate de sécurité avant la publication.
  3. Izpack : Bon installateur multi-plateforme gratuit et open source. Cela peut être un peu lourd pour les personnes non habituées à la fourmi. Peut être génial lorsqu’il est utilisé avec des interfaces graphiques comme PackJacket .

J’ai vu plusieurs personnes recommander IzPack , mais honnêtement, je ne sais pas si cela répond à vos exigences. C’est au moins gratuit 🙂

Sun propose un installateur open source:

OpenInstaller

Je suis sûr que toutes les fonctionnalités demandées sont sockets en charge.
Mais il me semble un peu trop difficile à configurer.

Mais devinez quoi: il a non seulement une interface graphique, mais aussi une interface de ligne de commande (pseudo-graphique).
Belles captures d’écran et informations ici .