IzPack, générateur d'installateurs de logiciels en Java vient de sortir en version 3.0.0 (stable). IzPack est disponible en 14 langues différentes et peut s'utiliser de façon indifférente depuis un frontend Swing, la ligne de commande ainsi que sous la forme d'une tache pour Jakarta Ant. IzPack est très modulaire, les différents panneaux sont implémentés sous la forme de plugins - c'est donc un jeu d'enfant que d'étendre ses possibilités. Les installations sont "non polluantes" et offrent un bon compromis entre les diverses plateformes.
IzPack a été testé avec succés sur diverses plateformes Unix / Win32 / Mac. La prochaine version apportera le support de la création de raccourcis pour divers Window Managers X11 et peut-etre meme pour MacOS X.
N'hésitez pas à apporter votre aide si vous en avez l'envie :-)
Aller plus loin
# Que pour Java :-(
Posté par Djax . Évalué à 4.
[^] # Re: Que pour Java :-(
Posté par Samuel Pajilewski . Évalué à 7.
Si c'est capable d'installer un jeu ça doit bien etre capable d'installer une appli quelconque, non ?
[^] # Sus à la caballe
Posté par Yann KLIS (site web personnel) . Évalué à 2.
Par contre SMS, le jour où tu sortiras un gris FUD ou une grosse connerie, je serai le premier à te mettre [-].
A vot' bon coeur
[^] # Re: Sus à la caballe
Posté par gndl (site web personnel) . Évalué à -7.
[^] # Re: Sus à la caballe
Posté par Yann KLIS (site web personnel) . Évalué à -7.
----------------
Linux sux
[^] # Re: Sus à la caballe
Posté par fantomaxe . Évalué à -4.
ok je --------> []
(-1 car ce post c'est surtout pour essayer ma nouvelle signature)
[^] # Re: Sus à la caballe
Posté par imr . Évalué à -4.
[^] # Re: Que pour Java :-(
Posté par Anonyme . Évalué à 10.
MAIS tu peux installer ce que tu veux avec ...
[^] # Re: Que pour Java :-(
Posté par Djax . Évalué à 5.
Comme c'est un installateur fait en Java, son application la plus naturelle est d'installer des programmes Java.
Le boulot d'un générateur d'installateurs est de générer des installateurs et qu'il soit fait en Java, en C ou en smlurph ne doit pas changer cet objectif.
La phrase IzPack, générateur d'installateurs de logiciels en Java vient... n'est AMHA pas très claire. Moi, j'ai compris que en Java était pour les logiciels, alors que c'était juste pour IzPack. Ce qui m'a conforté dans mon erreur était que toutes les réferences ( http://www.izforge.com/izpack/index.php3?content=references(...) ) semblent être des programmes Java.
Est-ce que ça gèrent aussi les dépendences? Histoire que ça n'installe pas un software qui auraient besoin de telles ou telles librairies.
[^] # Re: Que pour Java :-(
Posté par Anonyme . Évalué à 10.
Heu ... je vais expliquer. Un .jar n'est qu'un fichier zip. On a l'habitude en Java de grouper les classes compilées + d'autres resources (images, etc) dans le Jar. Un Jar peut etre exécutable, en spécifiant dans un fichier qu'il contient (nommé manifeste) la classe principale à utiliser (une qui contient une méthode statique main - idem int main(int argc, char **argv) en C/C++). Un installateur est donc un Jar exécutable. Autrement dit tu fais :
et ça le lance. L'avantage est aussi que tout est groupé dans le Jar, et accessoirement compressé. Après un Jar peut servir aussi à contenir des librairies. Il faut voir un Jar avant tout comme un groupement de classes Java.
Le boulot d'un générateur d'installateurs est de générer des installateurs et qu'il soit fait en Java, en C ou en smlurph ne doit pas changer cet objectif.
Tout à fait, sauf qu'en général si tu veux un installateur en Java, c'est que tu distribues quelque chose qui a un rapport avec Java. Sinon tu auras plutot tendance à utiliser des méthodes d'installations spécialisée pour chaque plateforme. C'est juste qu'en général, on utilise IzPack pour des logiciels Java car il y a un intéret immédiat. Pour installer un soft uniquement Linux par exemple, l'intéret serait bien moindre car tout le monde n'a pas de machine Java installée. Donc tu utilises plutot un installateur Java si ta cible d'utilisateurs utilise Java aussi.
La phrase IzPack, générateur d'installateurs de logiciels en Java vient... n'est AMHA pas très claire. Moi, j'ai compris que en Java était pour les logiciels, alors que c'était juste pour IzPack. Ce qui m'a conforté dans mon erreur était que toutes les réferences ( www.izforge.com/izpack/index.php3?content=references ) semblent être des programmes Java.
En effet ma phrase peut induire en erreur. Java est bien pour IzPack. Les références sont uniquement de programmes Java car à ma connaissance personne ne l'a utilisé pour autre chose que des programmes Java, ce qui correspond à ce que j'ai dit au paragraphe précédant.
Est-ce que ça gèrent aussi les dépendences? Histoire que ça n'installe pas un software qui auraient besoin de telles ou telles librairies.
Non. En fait on pourrait gérer des dépendances au niveau des paquets d'une installation (par exemple tu peux faire un paquet pour les fichiers obligatoires, un paquet pour la doc, etc). Pour une dépendance du style "ne pas installer si Jakarta Ant n'est pas sur la machine", le problème est très complexe. Sous un Unix-like, tu peux t'attendre à trouver ça dans /usr/**/ voir /opt/** . Sur un Windows par exemple, tu es bon pour te payer un scan du disque :-/ Sans compter que si tu veux vérifier la version, c'est encore moins simple. Avec des MD5 ça serait éventuellement envisageable. Mais dans l'ensemble ça reste sujet à erreurs et c'est très compliqué à faire. Mais si tu trouves une méthode efficace (style en O(0.5)) je suis preneur :-)
En espérant avoir répondu à tes questions ...
[^] # Re: Que pour Java :-(
Posté par gndl (site web personnel) . Évalué à -5.
[^] # Re: Que pour Java :-(
Posté par Anonyme . Évalué à 0.
Risque de Virus ? Quand tu respires dans l'air il y a risque de virus aussi. Là je ne vois pas de 'risque' particulier. Bien sur on peut s'amuser à en mettre un dedans, comme on peut mettre des chevaux de troie dans des sources (cf openssl).
Pour le reste, tu n'as qu'à essayer, tu comprendra peut-etre mieux, qui sait ?
[^] # Re: Que pour Java :-(
Posté par Djax . Évalué à 6.
Un scan de la base de registre devrait suffire, encore que je ne sais pas si c'est possible avec Java. Et je ne sais pas si "non polluant" et "base de registres" sont compatibles.
Par exemple, pour savoir où sont normalement installés les programmes, je pense qu'on devrait consulter HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\SFC\ProgramFilesDir.
Sans compter que si tu veux vérifier la version, c'est encore moins simple. Avec des MD5 ça serait éventuellement envisageable. Mais dans l'ensemble ça reste sujet à erreurs et c'est très compliqué à faire.
C'est clair que c'est compliqué, mais ça devient indispensable. Un programme qui aurait besoin de kde3 et pas de kde2 ou des lib java1.3 et pas java 1.1 devrait réclamer avant de s'installer.
Je ne sais pas si les MD5 seraient vraiment à envisager. Pardonne-moi si je me trompe, mais les MD5 servent à vérifier l'intégrité d'un fichier et non sa version, donc il faudrait comparer les MD5Sums de toutes les versions possibles d'un fichier. Est-ce que l'on peut avoir toutes les MD5Sum possibles d'un fichier? Si oui, est-ce raisonnable comme solution?
Mais si tu trouves une méthode efficace (style en O(0.5))
C'est quoi "en O(0.5)"?
[^] # Re: Que pour Java :-(
Posté par Anonyme . Évalué à 5.
La base de registre n'est pas accessible directement en Java, il faut passer par des librairies natives. Pour le support des raccourcis sauce Windows, on a été obligé d'en arriver là :-/ En meme temps on a bien limité la casse et on écrit rien dans la base de registre et au final IzPack reste bien "non polluant" sur un système Win32. De plus le support des raccourcis (et donc le besoin d'une librairie native) est optionnel. En meme temps, rien ne garanti qu'un soft aura une entrée dans la base de registre. Par exemple si tu dépend de Tomcat, il faut le chercher sur le disque, pas dans la base de registre. Donc au final c'est un problème assez compliqué :-/
Je ne sais pas si les MD5 seraient vraiment à envisager. Pardonne-moi si je me trompe, mais les MD5 servent à vérifier l'intégrité d'un fichier et non sa version, donc il faudrait comparer les MD5Sums de toutes les versions possibles d'un fichier. Est-ce que l'on peut avoir toutes les MD5Sum possibles d'un fichier? Si oui, est-ce raisonnable comme solution?
On peut considérer que si on cherche un fichier en particulier pour tester la présence d'un logiciel, les différentes versions seront différentes. Par exemple si je cherche la présence de Jakarta Ant, je vais chercher un fichier nommé "ant.jar". C'est lui qui contient les classes Java de Ant, donc d'une version à l'autre il est forcémment différent. Donc sa signature MD5 sera différente. Pour que l'on ait un conflit de signatures (2 fichiers différents avec la meme signature), la probabilité est très faible. Un MD5 permettrait donc d'identifier une version de fichier. Est-ce raisonnable de stocker différentes signatures ? Non :-) Tout ça pour dire que ce style de dépendance est très difficile à vérifier. Tout ce que l'on peut faire est implémenter des heuristiques assez lourdes, ce n'est pas très raisonnable.
C'est quoi "en O(0.5)"?
C'est quelque chose d'impossible :-) Plus sérieusement, reportes-toi à un cours de complexité algorithmique. Des exemples, meme si c'est hors-sujet :
Est de complexité O(1)
Est de complexité O(n)
[^] # Déterminer la version d'une bibliothèque Java
Posté par François B. . Évalué à 5.
Tous les détails se trouvent ici : http://java.sun.com/j2se/1.4/docs/guide/versioning/spec/VersioningS(...)
Voici un exemple tiré de la page ci-dessus :
Si l'on obtient un instance de Package décrivant le paquet en question (java.util dans notre exemple), les méthodes getImplementationVersion() et getSpecificationVersion() vont nous retourner respectivement "build57" et "1.3". Voir : http://java.sun.com/j2se/1.4/docs/api/java/lang/Package.html(...)
Bien sûr, le problème est que tout le monde ne connait pas l'existence de cette gestion des versions, et qu'en pratique c'est très peu utilisé. Mais dans le cas où c'est fait correctement, si on peut localiser le jar ou s'il est placé dans le répertoire des extensions, on peut l'utiliser.
[^] # Re: Que pour Java :-(
Posté par Anonyme . Évalué à 5.
Pour les dépendances, ce qui simplifierait les choses ce serait d'avoir une base de donnée de packages installées dans tous les OS existants, comme c'est le cas dans beaucoup de distros Linux (Gentoo, Mdk, Debian, etc). Tu l'interroges et tu peux résoudre de suite les problèmes de compatibilité. Mais ça n'est pas le cas malheureusement, y compris pour les distros Linux qui n'ont pas toutes un système de gestion de packages. Pour Windows n'en parlons meme pas :-)
[^] # smlurph
Posté par Dugland Bob . Évalué à -3.
L'époque sera ML (SML, o'caml ...) ou ne sera pas !
-1 et ----> []
# RPM/DEB KILLER?
Posté par gndl (site web personnel) . Évalué à -6.
[^] # Re: RPM/DEB KILLER?
Posté par kael . Évalué à -7.
hop -1
[^] # Re: RPM/DEB KILLER?
Posté par Anonyme . Évalué à 10.
C'est une solution de déploiement multiplateformes, dont l'utilisation la plus courante est les logiciels Java.
RPMs et Debs n'ont rien à voir avec IzPack ...
[^] # Re: RPM/DEB KILLER?
Posté par Bonnefille Guilhem (site web personnel) . Évalué à 1.
Il me semble donc que cet outil fait une part des boulots effectues par RPM/DEB. En tout cas, je ne vois pas comment on peut faire un installateur multi-plateforme en prenant en compte aussi bien RPM, DEB, tar.gz, etc.
[^] # Re: RPM/DEB KILLER?
Posté par Gruik Man . Évalué à 2.
[^] # Re: RPM/DEB KILLER?
Posté par gle . Évalué à 10.
[^] # Re: RPM/DEB KILLER?
Posté par Anonyme . Évalué à 2.
[^] # Re: RPM/DEB KILLER?
Posté par lpf . Évalué à -3.
;-)
--
-1
[^] # Re: RPM/DEB KILLER?
Posté par gndl (site web personnel) . Évalué à -10.
# Enfin !
Posté par calo . Évalué à 9.
Alors longue vie à IzPack !
[^] # Re: Enfin !
Posté par Anonyme . Évalué à -1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.