[Conception] Comment penser un système de mise à jour ?
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 :
Code:
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;
...
} |
avec Version :
Code:
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;
... } |
Le système tel que je le pense consiste à :
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:
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