Bonjour,
Je vous explique mon problème :
J'ai une application divisée en plusieurs packages : UI,Core, DB et Shared.
Je voudrais y ajouter un système de mise à jour.
En m'inspirant ( euh, pillant ;-) ) le tuto de Mr Wicht ( Merci !!! ) sur ce site, j'ai mis en place un système basé sur des objets définis comme suit :
avec Version :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class ModuleVersion implements Serializable { // Nom du package private String name; // Version private Version version; // Url pour récupérer la mise à jour du package private String url; // Chemin du package en local private String pathToLocalFile; // Contient un main ? private Boolean launchable; ... }
Le système tel que je le pense consiste à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class Version implements Comparable<Version>{ private final String version; private final int major; private final int minor; private final int revision; private final String extra; ... }
1) Verifier si on est connecté à internet
2) récupérer un fichier updates.xml qui contient une serialisation de mes PackagesVersion (avec les dernieres versions)
3) comparer mes PackageVersions avec un fichier local version.xml qui contient les versions présente en local
4) Si il y a une mise à jour : supprimer le jar en local et télécharger la version à jour ( en le téléchargeant vers pathToLocalFile )
5) Finalement, Récuperer LE jar executable et le lancer ( via un très moche)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Desktop.getDesktop().open(MyJarToLaunch);
Je suis en train de me taper la doc sur URLClassLoader pour pallier à ce truc très moche mais c'est en limite de mes compétences/connaissances en Java....
Le truc qui me gène est la possibilité de mettre à jour mon updater ....
1) Est ce que quelqu'un aurait une suggestion pour améliorer ce process ?
2) Actuellement toutes mes classes liés à ce process se trouve dans deux jar : dans Shared auquel tous les autres jars accèdent et dans mon jar Updater que je code.
Pour une efficacité optimale, je ne souhaite pas lier l'updater avec les autres jar de mon appli ... Est ce , là aussi, une erreur de conception ?
Merci d'avance
Partager