web-dev-qa-db-fra.com

Quels sont les bons remplacements InstallAnywhere pour l'installation d'une application Java EE)?

Quel outil d'installation (commercial ou gratuit) recommanderiez-vous de remplacer InstallAnywhere comme programme d'installation pour une application Java EE)? Qu'est-ce que vous aimez spécifiquement à ce sujet et quels sont ses inconvénients?

Quelques exigences:

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

Edit: quelques points supplémentaires:

  • Ne dépend pas de préférence 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 Windows .exe (ou .msi) indépendant
  • L'outil doit de préférence être multiplateforme afin que le développement du programme d'installation puisse se faire sous Linux, Windows ou Mac.
  • Devrait avoir de préférence une interface graphique décente pour assembler l'installateur. Une fois cela fait, cependant, il doit être possible de sauter l'interface graphique et de faire de la construction de l'installateur une partie du processus de construction automatisé.
45
Jonik

Dans ce cas, malheureusement, SO ne nous a pas dit grand-chose que nous ne savions pas déjà (et en effet l'outil que nous avons finalement choisi n'a été mentionné dans aucune réponse). publier nos expériences ici, car elles pourraient être utiles à d'autres plus tard.

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

Nous avons éliminé la plupart d'entre eux au début, et avons fini par sélectionner 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 choses les plus importantes pour nous sont vraiment prises en charge, et comment il est facile ou difficile de faire fonctionner les choses.

Les deux options étaient bonnes à bien des égards (et les deux semblaient de bonnes alternatives à InstallAnywhere):

  • Ils produisent des installateurs Windows .exe complètement natifs et jolis qui sont faciles à personnaliser avec vos propres graphiques, etc.
  • Les deux outils pourraient facilement être automatisés afin que la construction de l'installateur soit déclenchée depuis Ant. (Avec install4j, il m'a littéralement fallu seulement cinq minutes pour l'apprendre puis 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 obtenu 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, donc YMMV):

  • install4j a définitivement une meilleure prise en charge pour l'exécution de Java Java personnalisé - cela peut être fait à tout moment pendant l'installation, et qu'il y ait ou non un JRE préinstallé sur le système.
  • BitRock utilise une séquence d'étapes d'installation plus codée en dur tandis que install4j est plus flexible. Dans install4j, l'ajout d'écrans et de formulaires personnalisés (avec ou sans Java) personnalisé, demander à l'utilisateur une entrée, etc., peut être fait à tout moment, avant ou après l'installation de tout fichier.
  • De plus, certaines choses de base comme 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 d'installateurs sous Linux, l'aspect et la convivialité de install4j IDE était plus agréable (plus "natif") que celui de BitRock
  • (install4j's options de licence étaient mieux pour nous - nous avons fortement préféré quelques licences flottantes aux licences nommées pour tous les développeurs ou une "licence de site" coûteuse)

Donc, finalement, nous sommes allés avec install4j . Voici plus de détails sur les raisons pour lesquelles c'était impressionnant:

  • Son IDE, où vous montez le programme d'installation, est très simple et facile à utiliser - je pourrais comprendre comment faire la plupart des choses que je voulais rapidement, même sans regarder la documentation. Et quand je devais vérifier quelque chose dans la documentation (par exemple, comment faire référence à variables d'installation ; comment commencer à écrire un code personnalisé Java contre le code install4j API ), 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 également ajouter des écrans et des actions personnalisés (codés par rapport à leur API Java ) à tout moment. C'était important pour nous, car nous devons réutiliser le code personnalisé Java Java 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 ajouter un script de validation pour vérifier certaines entrées utilisateur, vous pouvez coder cela très rapidement dans install4j IDE lui-même, en utilisant du vieux Java =, avec une assistance au 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 d'une bonne affaire par rapport au prix gonflé d'InstallAnywhere ...)
  • En bref, il semblait être le meilleur outil d'installation disponible pour déployer des applications Java.
56
Jonik

Nous avons créé BitRock InstallBuilder , un outil d'installation multiplateforme 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 conditionner des logiciels basés sur Java, mais l'outil est natif et non basé sur Java. Cela signifie que nous avons un certain nombre d'avantages tels que l'aspect et la convivialité natifs (y compris Vista, GTK, Qt, etc.) et pas besoin de faire une auto-extraction avant l'installation (démarrage plus rapide, moins d'espace requis) pour n'en mentionner que quelques-uns. Pour répondre à vos questions spécifiques:

  • Prend en charge l'appel Java dans le cadre de l'installation à plusieurs moments dans le temps (comme lorsqu'une certaine page est affichée, les fichiers copiés, au moment de 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 doit être ajouté manuellement à d'autres installateurs, vous n'aurez donc peut-être 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 groupés, y compris Tomcat, Resin, JBoss et autres. Jetez un œil à BitNami pour des exemples de telles piles 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, le déballage des fichiers et la plupart des autres fonctionnalités d'installation courantes. L'un de nos principes est que le programme d'installation doit fournir un support intégré pour les actions d'installation courantes et avoir une interface simple et propre pour invoquer du code externe spécifique au produit d'un client.
  • Nous prenons en charge 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 jeter un oeil à certains de nos clients tels que MySQL, Samsung, Motorola, GitHub, etc. InstallBuilder est un produit commercial, mais nous offrons des licences gratuites pour les projets open source et des remises pour les petites entreprises et microISV.

8
Daniel Lopez

Je veux juste ajouter que mon entreprise utilise InstallAnywhere depuis environ 6 ans, mais nous avons décidé de passer à autre chose. La raison en est double.

Tout d'abord, leur prix est un vol routier absolu et les licences sont sévèrement restrictives par rapport à des 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 bugs sont rarement corrigés et vous ne pouvez certainement pas vous attendre à de nouvelles fonctionnalités. Essentiellement, tout ce que vous pouvez attendre, c'est qu'ils ajouteront la prise en charge de la nouvelle version de Windows/Mac à mesure qu'elle sortira. Leurs frais d'assistance sont assez chers, mais je n'ai jamais eu de demande d'assistance réellement mise en œuvre. Quand j'ai acheté le produit pour la première fois, je pense que c'était d'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 billet et ils étaient des bonds au-dessus de la concurrence.

Ensuite, il a été acquis par Macrovision puis Flexera. Depuis que ZeroG a vendu le produit, il s'agit d'un produit accessoire pour la société propriétaire et l'attention portée à celui-ci a été médiocre. Il semble qu'il ait été acheté davantage pour compléter une suite de produits plutôt que parce que la société souhaitait réellement maintenir le produit.

Attention, évaluez soigneusement ces produits car vous pouvez vous y lier. Nous aurions quitté le produit plus tôt, mais nous avons mis tant d'efforts non seulement sur l'installateur, mais sur la mise en place d'un système de mise à jour automatique basé sur les caractéristiques/limitations du produit qu'il est coûteux de quitter le produit en raison de l'investissement en main-d'œuvre pour reproduire cela dans un nouveau produit.

Juste mon avis, mais je ne recommanderais pas InstallAnywhere.

7
springcorn

Je peux garantir 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 dans votre Ant build.xml (par exemple en utilisant Groovy, Beanshell ou tout autre langage de script compatible BSF). Il couvrira donc vos besoins personnalisables.

Je l'ai utilisé dans le passé pour tout ce qui précède - décompression/services/code personnalisé. C'est multi-plateforme, bien que je ne puisse pas garantir cette instance spécifique ci-dessus (Windows 64 bits). Mais s'il exécute Java, ça devrait aller.

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

7
Brian Agnew

Actuellement, nous utilisons GetDown pour gérer la distribution de nos applications swing. Nous utilisons Tomcat pour distribuer 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 somme de contrôle pour les changements, il enregistre la bande passante et télécharge les fichiers juste 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: https://github.com/threerings/getdown

4
Heidarzadeh

Le déploiement dans un environnement multiplateforme est toujours une grande source de problèmes. Il pense que la solution optimale viserait la création de packages natifs pour toutes les plateformes, comme RPM, DEB ou MSI ... celles qui pourraient être installées sans surveillance également.

Les développeurs doivent s'efforcer de rendre l'application auto-réparatrice et de l'exécuter sans installation.

Cela permettra de minimiser les efforts de déploiement.

Je sais que ce n'est pas tout à fait une solution car vous demandez, mais parfois vous pouvez obtenir de meilleurs résultats de cette façon.

N'oubliez pas que vous obtiendrez un service de mise à jour gratuit sous Linux si vous les suivez.

J'espère toujours que Microsoft ajoutera quelque chose de similaire à MSI (et cela ne vous obligerait pas à vous y inscrire). Pendant ce temps, pour Windows, vous pouvez jeter un œil à Google Updater qui vient d'être publié en open source - http://code.google.com/p/omaha/

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

3
sorin

Vous pouvez essayer le SetupBuilder Gradle Plugin pour créer un programme d'installation natif * .msi avec un simple script de construction Gradle.

  • Ce est gratuit.
  • Prise en charge de Windows 32 bits et 64 bits. Aussi Linux et OSX.
  • Bundle la Java VM sous Windows et OSX, ne nécessite pas de machine virtuelle préinstallée Java VM.
  • 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 simple.
2
Horcrux7

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

  1. BitRock InstallBuilder : Idéal uniquement pour les développeurs libres et open source car il donne une licence gratuite pour une utilisation dans des projets open source.
  2. InstallJammer : Bon programme d'installation multiplateforme gratuit et open source. Une seule préoccupation est que dès que l'on télécharge la version exécutable d'InstallJammer, le programme anti-virus la supprimera immédiatement. D'une manière ou d'une autre, les fichiers créés à partir d'InstallJammer sont détectés comme faux positifs. Vous devrez travailler un peu plus de certificat de sécurité avant de publier.
  3. Izpack : Bon programme d'installation multiplateforme gratuit et open source. Cela peut être un peu lourd pour les personnes non habituées aux fourmis. Peut être idéal lorsqu'il est utilisé avec des interfaces graphiques comme PackJacket .
1
angel

vous pourriez être intéressé par launch4j

1
dfa

Je recommande de jeter un œil à cmInstall , qui peut être trouvé à http://sourceforge.net/projects/cminstall/

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

  1. [oui] Doit prendre en charge l'exécution personnalisée Java code dans le cadre de la procédure d'installation
  2. [oui] Doit prendre en charge Windows, y compris les dernières versions 64 bits comme Windows Server 2008; la prise en charge d'autres systèmes d'exploitation cibles est un plus
  3. [peut être fait facilement en utilisant des bibliothèques tierces - par exemple: Logiciel Tanuki] Doit pouvoir installer un serveur d'applications fourni (tel que Resin ou Tomcat) en tant que service sur Windows
  4. [oui] Doit prendre en charge des éléments de base tels que la copie et le déplacement de fichiers, la modification de fichiers de configuration, l'extraction de 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. [non - il nécessite l'installation de jdk 1.6, la prise en charge de .exe ou .msi est prévue pour l'avenir] Ne dépend pas de préférence 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 Windows .exe (ou .msi) indépendant

  6. [oui] L'outil doit de préférence être multiplateforme afin que le développement du programme d'installation puisse se faire sur Linux, Windows ou Mac.

    7. [non - le framework cminstall est "basé sur les développeurs" - mais facile à utiliser. Lisez simplement les tutoriels de http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 et voyez comme il est facile de construire un installateur!] Devrait avoir de préférence une interface graphique décente pour assembler l'installateur. Une fois cela fait, cependant, il doit être possible d'ignorer l'interface graphique et d'intégrer la construction de l'installateur au processus de construction automatisé.

1
Flueras Bogdan

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

Une fois que certaines exigences de base sont remplies (ce qui malheureusement n'est plus le cas pour InstallAnywhere), il n'y a 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 de votre ancien programme d'installation que vous souhaitez réutiliser (bien que j'aimerais penser qu'une partie de ce code ne serait pas nécessaire avec InstallBuilder: )

Concernant InstallBuilder, nous prenons en charge la personnalisation de la séquence d'écran à l'aide de la balise <insertBefore> (nous devrions probablement mieux documenter cela). Il est également simple de regrouper un JRE (en incluant simplement le dossier Java/dans la plupart des cas), mais je pense que votre critique est valable: puisque c'est une tâche courante, nous devrions faire un meilleur travail pour documenter/le rendre accessible via l'interface graphique, y compris glisser-déposer sur toutes les plateformes prises en charge. Nous avons déjà dans notre feuille de route l'amélioration de l'interface graphique dans les domaines que vous mentionnez. Le plus drôle, c'est que beaucoup de nos clients trouvent le format XML si facile à utiliser qu'ils préfèrent le modifier à l'aide de leurs éditeurs de programmation (comme s'ils éditaient du HTML)

Enfin, en ce qui concerne les licences, notre modèle actuel ne nécessite pas l'achat de licences supplémentaires si ces programmeurs supplémentaires vont simplement construire les installateurs (pas les concevoir) ou acheter des licences supplémentaires pour les machines de génération ou d'intégration continue. Dans tous les cas, quelques licences flottantes pour install4j sont plus chères qu'une licence d'entreprise complète pour BitRock :)

Merci encore pour la rétroaction

1
Daniel Lopez

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

0

Sun propose un programme d'installation open source:

OpenInstaller

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

Mais devinez quoi: il a non seulement une interface graphique mais aussi une CLI (pseudo-graphique).
Belles captures d'écran et informations ici .

0