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:
Edit: quelques points supplémentaires:
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):
Dans les choses suivantes, install4j semblait mieux que BitRock pour nos besoins (beaucoup d'entre eux sont subjectifs, bien sûr, donc YMMV):
Donc, finalement, nous sommes allés avec install4j . Voici plus de détails sur les raisons pour lesquelles c'était impressionnant:
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:
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.
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.
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.
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
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.
Vous pouvez essayer le SetupBuilder Gradle Plugin pour créer un programme d'installation natif * .msi avec un simple script de construction Gradle.
J'ai également revu quelques-uns des installateurs multi-plateformes open source. Voici mon commentaire:
vous pourriez être intéressé par launch4j
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 :).
[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
[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é.
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
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 :)
Sun propose un programme d'installation open source:
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 .