46 votes

Quelles sont les bonnes solutions de remplacement d'InstallAnywhere pour l'installation d'une application Java EE ?

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

Certaines exigences :

  • Doit soutenir l'exécution d'un 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 comme Windows Server 2008 ; la prise en charge d'autres systèmes d'exploitation cibles est un atout.
  • Doit pouvoir installer un serveur d'application groupé (tel que Résine o Tomcat ) en tant que service sous Windows
  • Doit prendre en charge les opérations 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 l'intégration d'une version spécifique de JRE ; au minimum en incluant un 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 .exe (ou .msi) Windows indépendant.
  • L'outil doit de préférence être multiplateforme afin que le développement de l'installateur puisse se faire sous Linux, Windows ou Mac.
  • Il est préférable d'avoir une interface graphique décente pour mettre en place l'installateur. Une fois que c'est fait, cependant, il doit Il serait possible de ne pas utiliser l'interface graphique et de faire de la construction de l'installateur une partie du processus de construction automatique.

60voto

Jonik Points 18905

Dans ce cas, malheureusement, l'OS ne nous a pas appris grand-chose que nous ne sachions déjà (et d'ailleurs l'outil que nous avons finalement choisi n'était mentionné dans aucune réponse). Cependant, je publie nos expériences ici, car elles pourraient être utiles à d'autres personnes 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 : Installateur réel , Installateur avancé , BitRock InstallBuilder , Inno Setup , Installer le créateur , Installateur VISE pour Windows , InstallShield , install4j , IzPack , NSIS , openInstaller , Scriptlogic MSI Studio , Smart Install Maker , Symantec Wise Installation Studio y WiX .

Nous avons éliminé la plupart d'entre eux dès le début et avons fini par sélectionner deux options pour les évaluer de plus près : BitRock InstallBuilder y install4j . Pour ces outils, nous avons téléchargé des versions d'évaluation et réalisé quelques prototypes, afin de voir si les éléments les plus importants pour nous sont réellement pris en charge et s'il est facile ou difficile de les faire fonctionner.

Ces deux options étaient bonnes à bien des égards (et semblaient toutes deux 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 par Ant. (Avec install4j il m'a littéralement fallu cinq minutes pour apprenez-le et ensuite la mettre en œuvre).
  • Les deux sociétés semblent disposer d'un bon support (du moins pour les prospects qui évaluent leurs produits ;-) En particulier, BitRock nous a répondu très rapidement.

Dans les points suivants, install4j nous a semblé meilleur que BitRock pour nos besoins (beaucoup de ces points sont subjectifs, bien sûr, donc YMMV) :

  • install4j a définitivement un meilleur support pour l'exécution de code Java personnalisé - cela peut être fait à n'importe quel moment de l'installation, et indépendamment de la présence d'un JRE préinstallé sur le système.
  • BitRock utilise une séquence d'étapes d'installation plus codée alors que install4j est plus flexible. Dans install4j, l'ajout d'écrans et de formulaires personnalisés (avec ou sans code Java personnalisé), l'interrogation de l'utilisateur, etc., peuvent être effectués à tout moment, avant ou après l'installation des fichiers.
  • De même, 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 a un meilleur support pour l'empaquetage JRE
  • Lors de la création d'installateurs sous Linux, l'aspect et la convivialité de l'IDE install4j étaient plus agréables (plus "natifs") que ceux de BitRock.
  • (l'outil d'installation 4j options de licence étaient meilleures pour nous - nous préférions nettement quelques licences flottantes à des licences nominatives pour tous les développeurs ou à une "licence de site" coûteuse)

Au final, nous avons opté pour install4j . Voici quelques détails supplémentaires sur les raisons pour lesquelles il était impressionnant :

  • Son environnement de développement intégré (IDE), dans lequel vous assemblez le programme d'installation, est très simple et facile à utiliser - j'ai pu comprendre comment faire la plupart des choses que je voulais rapidement, même sans regarder la documentation. Et lorsque j'ai dû vérifier quelque chose dans la documentation (par exemple, comment se référer à variables d'installation ; comment Commencez à écrire du code Java personnalisé avec l'API install4j. ), il ne m'a pas fallu longtemps pour trouver ce dont j'avais besoin.
  • Vous pouvez entièrement personnaliser les écrans et les actions au cours de la procédure d'installation, et également ajouter des écrans et des actions personnalisés (codés par rapport à leur code d'accès). API Java ) à tout moment. C'était important pour nous car nous devons réutiliser le code Java personnalisé existant de l'ancien installateur InstallAnywhere.
  • Dans certains petits détails, install4j semble idéal pour Java développeurs. Par exemple, si vous souhaitez ajouter un script de validation pour vérifier certaines entrées utilisateur, vous pouvez le coder très rapidement dans l'IDE install4j lui-même, en utilisant le bon vieux Java avec une aide au codage ressemblant à celle d'IntelliJ IDEA.
  • Nous avons jugé le coût des licences flottantes install4j raisonnable, compte tenu de la qualité de l'outil (et carrément une aubaine par rapport aux prix exagérés d'InstallAnywhere...).
  • En bref, il semblait être le meilleur outil d'installation disponible pour déployer des applications Java.

0 votes

Les inconvénients d'Install4j : Impossible d'avoir un installateur 32 bits et 64 bits simultané sous Windows. Install4j enregistre les JREs trouvés dans ~/.install4j ; si ce fichier devient corrompu ou si vos JREs changent - échec.

0 votes

Je voulais ajouter que les dernières versions d'InstallBuilder comprennent un support amélioré pour le regroupement des JRE et la création de lanceurs.

0 votes

@Jonik , Monsieur, pouvez-vous fournir des étapes, comment construire un installateur pour une application basée sur Ant.

9voto

Daniel Lopez Points 2176

Nous avons créé BitRock InstallBuilder Nous avons développé un outil d'installation multiplateforme après quelques expériences frustrantes avec InstallAnywhere et surtout son cousin (aujourd'hui disparu) InstallShield MP. Plus de la moitié de nos clients utilisent notre outil pour emballer 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 le fait qu'il n'est pas nécessaire d'effectuer 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 :

  • Permet d'appeler du code Java dans le cadre de l'installation à plusieurs moments (par exemple, lors de l'affichage d'une certaine page, de la copie de fichiers, 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 quant au type de code dont vous avez besoin, je peux vous fournir des exemples de code spécifiques. Nous avons beaucoup d'actions intégrées pour les fonctionnalités qui doivent être ajoutées manuellement à d'autres programmes d'installation, de sorte que vous n'aurez peut-être pas besoin d'écrire ce code en premier lieu !
  • Nous prenons en charge toutes les versions de Windows, y compris les versions 64 bits et Windows 2008 (de nombreux clients ont obtenu la certification sur ces plateformes en utilisant nos installateurs).
  • Nous prenons en charge les serveurs d'applications groupés, notamment Tomcat, Resin, JBoss et autres. Jetez un coup d'œ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 de fichiers et la plupart des autres fonctionnalités d'installation courantes. L'un de nos principes est que l'installateur doit fournir un support intégré pour les actions d'installation courantes et avoir une interface simple et propre pour invoquer le code externe spécifique au produit du client.
  • Nous supportons l'empaquetage des JREs, comme vous le mentionnez est souvent suffisant juste pour empaqueter le répertoire JRE et la mise en place de la valeur appropriée pour JAVA_HOME dans le lancement scripts.

Vous pouvez jeter un coup d'œil à certains de nos clients comme MySQL, Samsung, Motorola, GitHub, etc. InstallBuilder est un produit commercial, mais nous proposons des licences gratuites pour les projets open source et des remises pour les petites entreprises et les micro-ISV.

1 votes

Merci, c'était très détaillé. InstallBuilder fait partie de notre courte liste d'outils que nous examinons de plus près. À propos, j'étais également intéressé par les inconvénients de chaque option, mais peut-être que quelqu'un d'autre, moins intéressé, devra nous en parler... ;-)

0 votes

Bon point :) Je dirais que si vous avez besoin de générer des installateurs uniquement pour Windows, il existe de nombreuses alternatives spécifiques à Windows qui sont comparables ou meilleures que n'importe quel installateur multiplateforme. Vous mentionnez également que vous disposiez d'une base de code préexistante d'extensions basées sur Java pour InstallAnywhere. Nous aimons penser que notre fonctionnalité intégrée rend inutile une grande partie de ce code :) mais si vous en avez besoin, la possibilité de personnaliser fortement l'installateur en Java est un facteur important à prendre en compte.

0 votes

Mais vous ne supportez pas la signature des lanceurs java.... Je suis vraiment en conflit en ce moment. Je viens de passer 16 heures à tout apprendre/câbler avec BitRock pour réaliser cela.

9voto

springcorn Points 63

Je souhaite simplement ajouter que ma société utilise InstallAnywhere depuis environ 6 ans, mais que nous avons décidé de passer à autre chose. La raison est double.

Tout d'abord, leur prix est une véritable escroquerie et les licences sont très restrictives 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. Tout ce que vous pouvez espérer, c'est qu'ils ajoutent un support pour la nouvelle version de Windows/Mac dès qu'elle sort. Leurs frais d'assistance 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 qu'il provenait d'une société appelée ZeroG qui se concentrait uniquement sur ce produit. Ils ont réellement maintenu et amélioré le produit. À l'époque, c'était le seul vrai ticket et ils étaient bien au-dessus de la concurrence.

Elle a ensuite été rachetée par Macrovision, puis par Flexera. Depuis que ZeroG a vendu le produit, il s'agit d'un produit auxiliaire pour la société propriétaire et l'attention portée à ce produit a été faible. Il semble qu'il ait été acheté plus pour compléter une suite de produits que parce que la société souhaitait réellement maintenir le produit.

Un mot d'avertissement : évaluez bien ces produits, car vous pouvez vous y attacher. Nous aurions quitté le produit plus tôt, mais nous avons consacré tellement 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/limitations du produit qu'il est coûteux de quitter le produit en raison de l'investissement en main-d'œuvre nécessaire pour reproduire cela dans un nouveau produit.

C'est juste mon avis, mais je ne recommanderais pas InstallAnywhere.

1 votes

Oui, cela correspond à peu près à nos expériences avec InstallAnywhere (dans l'entreprise où je travaillais lorsque j'ai posé la question). Il est probable qu'à un moment donné, il s'agissait d'un produit innovant, haut de gamme, qui s'est ensuite transformé en une vache à lait à laquelle vous ne voulez certainement pas être lié.

7voto

Brian Agnew Points 143181

Je peux témoigner de izPack . Il est basé sur Ant, vous pouvez donc y empaqueter une installation Ant, et cette installation Ant peut contenir des tâches personnalisées, et/ou des scripts écrits dans votre build.xml Ant (par exemple en utilisant Groovy, Beanshell ou tout autre langage de script compatible BSF). Cela couvrira donc votre exigence de personnalisation.

Je l'ai utilisé dans le passé pour tout ce qui précède - décompresser/services/code personnalisé. Il est multiplateforme, bien que je ne puisse pas me porter garant de l'exemple spécifique ci-dessus (Windows 64 bits). Mais si vous utilisez Java, tout devrait bien se passer.

Le seul mal de tête est le JRE. Vous aurez évidemment besoin de un peu de JRE pour l'exécuter. Cependant, je pense que vous devriez pouvoir emballer et exécuter une installation JRE spécifique dans izPack.

0 votes

Merci pour cette réponse instructive ! IzPack semble vraiment bien (en particulier son intégration avec Ant et le fait qu'il soit open-source et gratuit), et c'est quelque chose que je pourrais essayer dans un futur projet. Dans ce cas particulier, cependant, le fait qu'il nécessite un JRE préinstallé l'exclura probablement (oui, ce n'était pas explicitement indiqué dans la question), car nous préférons un .exe autonome.

0 votes

Nous avons exécuté IzPack avec un convertisseur jar-exe et un JRE groupé. Cela fonctionne.

4 votes

Restez très loin d'izPack si vous avez l'intention de personnaliser QUELQUE CHOSE. Le code et la structure sont absolument horribles et fragiles, et nous ont coûté des tonnes de travail pour les quelques personnalisations dont nous avions besoin...

3voto

sorin Points 23747

Le déploiement dans un environnement multi-plateforme est toujours une grande source de problèmes. Je pense que la solution optimale serait de créer des paquets natifs pour toutes les plateformes, comme RPM, DEB ou MSI ... ceux qui pourraient être installés sans surveillance.

Les développeurs devraient s'efforcer de rendre l'application auto-réparatrice et de la faire fonctionner sans installation.

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

Je sais que ce n'est pas tout à fait une solution comme vous le demandiez 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 suivez ces conseils.

J'espère toujours que Microsoft ajoutera quelque chose de similaire à MSI (et qui ne vous obligerait pas à vous enregistrer chez eux). En attendant pour Windows, vous pouvez jeter un coup d'oeil à Google Updater qui vient d'être publié en open source - http://code.google.com/p/omaha/

Ils ont publié un produit similaire pour Mac OS http://code.google.com/p/update-engine/ mais triste qu'ils n'aient pas pensé à créer un produit à partir de ces deux-là.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X