Aller au contenu

Recommended Posts

S-Update

Bonjour a tous, j'aimerais vous présenter une de mes librairie qui est un systeme de mise à jour Java.

Il marche pour n'importe quel programme.

Avantages :

- Simple d'utilisation (faut quand même comprendre)
- Verification des mises à jours très rapide (habituellement environ 1 seconde)
- Mise à jour simple à déployer
- Possibilité de supprimer des fichiers
- Possibilité de mettre a jour certains fichiers par rapport au systeme hôte (par exemple des natives spécifique à l'OS)
- Open-Source (https://github.com/TheShark34/S-Update)

Comment l'utiliser ? (Mini Tutoriel)


Bon, je vais faire un mini tutoriel pour utiliser cette librairie.

Niveau code pour l'instant vous avez juste a rajouter ça dans votre programme :
S_Update su = new S_Update("urldevotredossiersupdate", new File("destinationdesfichiers"));
if(su.checkForUpdate()) {
 su.createLists();
 su.update();
}

C'est tout.

Maintenant vous devez avoir un hebergeur ou n'importe quoi dont on pourrait acceder depuit un URL.
Par exemple une dropbox.
Dessus créez un dossier. Que nous appellerons ici "Dossier S-Update".
Prenez son URL (par exemple http://dl.dropboxusercontent.com/u/12345678/MesFichiersSUpdate/)
et remplacez urldevotredossiersupdate par cet URL.
Ensuite remplacez destinationdesfichiers par ce que vous voulez.

Donc occupons nous de ce dossier S-Update.

Déjà vous allez avoir besoin de tous vos fichiers à télécharger/mettre à jour.
Mettez les dans un dossier Files/ (dans le dossier S-Update)

Ensuite si vous avez des fichiers dans un dossier que vous pensez que vous metterrez jamais/rarrement à jour, zippez les dans un fichier .zip et mettez ce fichier dans le dossier ou il devra être decompresser.

S-Update fonctionne avec un systeme de "version" chaque version a un nom et telecharge/met à jour/supprime/dezippe des fichiers. Vous devez créer un fichier contenant chaque nom de version suivi d'un /. Biensur au debut il n'y aura qu'une version. Mais si vous avez un/plusieurs fichiers que vous metterais souvent à jour, vous pourrez créer des versions séparées pour ces fichiers, vous n'aurez qu'a renommer cette/ces version(s) et mettre à jour le fichier dans le dossier Files/ pour mettre à jour ces fichiers.

Donc dans la racine de votre dossier S-Update créez un fichier "versionindex.txt".
Nous appellerons notre première version "base". Donc rajoutez "base/" dans le fichier.
Il ressemble donc à ça :

base/



Ensuite vous devez créer un fichier .txt pour votre version où vous déclarerez vos fichiers à telecharger/mettre à jour/supprimer/dezipper.

Créez donc un fichier base.txt toujours à la racine de votre dossier S-Update.
Apres déclarez chaque fichiers qui sont nouveau où qui doivent être mits à jours, ligne par ligne. Par exemple :

monprogramme.exe
unfichiermusique.mp3
images/uneimage.png
images/uneautreimage.png


Ne mettez pas Files/ au début, c'est automatique.

Ne déclarez pas les fichiers qui sont zippés.
Pour déclarer un fichier zip A DEZIPPER faites comme ceci

[unzip] dossierdexemple/fichierzip.zip


Pour déclarer un fichier à supprimer faites comme ceci :

[remove] fichierasupprimer.png


Pour déclarer un fichier dont S-Update doit s'occuper seulement sur un systeme particulier.

[windows] fichierquesurwindows.mp3
[mac] fichierquesurmac.png
[linux] fichierquesurmac.exe
[windows, mac] fichierquesurwindowsetmac.png
[linux, mac] fichierquesurlinuxetmac.png


Biensur vous pouvez utiliser ça avec remove/unzip

[windows, mac, remove] fichierasupprimerquesurwindowsetmac.wav
[linux, unzip] fichieradezipperquesurlinux.png



Bon voilà pour le dossier S-Update. Si vous avez des questions sur ce passe MP moi =)

Le système de barre de chargement :

Vous pouvez récuperer des informations sur les fichiers grâce a ces methodes : (su correspond au nom de votre objet S_Update)

Util.getDownloadingFile()
Retourne le fichier en cours de téléchargement.

su.getCurrentFileName()
Retourne le nom du fichier en cours de téléchargement

su.getFileNumber()
Retourne la place du fichier dans la liste d'attente de téléchargement/dézippage/suppression

su.getNumberOfFiles()
Retourne la taille de la liste de téléchargement/dézippage/suppression

Util.getDownloadingFileSize()
Retourne la taille du fichier à télécharger (Util.getDownloadingFile().length() retourne ce qui à déjà été téléchargé, ceci retourne la taille totale que fera le fichier quand il sera téléchargé)

Util.getUnzipingFileSize()
Retourne la taille du fichier en décompression

Util.getUnzipingFileLen()
Retourne la taille du fichier quand il sera décompréssé

su.getState()
Retourne S_Update.DOWNLOADING / UNZIPPING / REMOVING / FINISH en fonction de ce qu'il fait

Prenons l'exemple d'une JProgressBar appelée pb. Il suffit de créer un Thread comme ceci par exemple :

Thread t = new Thread() {

 @Override

 public void run() {

 boolean stop = false;

 while (!stop) {

 if (Util.getDownloadingFile() != null) {

 switch (su.getState()) {

 case S_Update.DOWNLOADING:

 pb.setString("Downloading file "

 + su.getCurrentFileName() + " "

 + su.getFileNumber() + "/"

 + su.getNumberOfFiles());

 pb.setMaximum((int) Util.getDownloadingFileSize());

 pb.setValue((int) Util.getDownloadingFile()

 .length());

 System.out.println(Util.getDownloadingFile()

 .length()

 + "/"

 + Util.getDownloadingFileSize());

 break;

 case S_Update.UNZIPPING:

 pb.setString("Unzipping file "

 + su.getCurrentFileName() + " "

 + su.getFileNumber() + "/"

 + su.getNumberOfFiles());

 pb.setMaximum((int) Util.getUnzipingFileSize());

 pb.setValue((int) Util.getUnzipingFileLen());

 break;

 case S_Update.REMOVING:

 pb.setString("Removing file "

 + su.getCurrentFileName() + " "

 + su.getFileNumber() + "/"

 + su.getNumberOfFiles());

 break;

 case S_Update.FINISH:

 stop = true;

 break;

 }

 }

 }

 }

};


Ensuite t.start(); et puis voilà =)

Bon voilà c'est la fin de ce mini tutoriel !



Telecharger :

https://github.com/TheShark34/S-Update/tree/master/target


Merci beaucoup à dermenslof pour sa contribution !

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

si je peut me permettre, il faut absolument que tu rajoute un checksum pour vérifier la validité des fichiers.

exemple, si on ferme le launcher pendant une mise à jour, au prochain démarrage, le launcher considère que le minecraft est à jour... alors que non.

le fichier de config cloud sera un truc du genre

[unzip] machin.jar 1284228bb68e6bdae88b1f7a2c366330

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, j'ai cassé la convention, c'est comme ça, au pire je la ronomme SUpdate, mais bon, c'est pas la mort.

Sinon comme je l'ai déjà dis a plusieurs endroit, Lawood et moi préparont un FolderProtector, pour proteger un dossier, a chaque verification de maj, il verifiera les dossier choisi, (par exemple le dossier mods), et il verifiera toute modification, il remettera les fichiers modifiés, supprimera les nouveau fichiers et remettera les fichiers supprimés.

Aussi, je vais regler le bug qui fait que le système pense que la MAJ est finie quand on l'arrette en cours, je ferais en sorte que la maj recommence à ce moment la, apres quand FolderProtector sera fini, je pourrais l'utiliser pour lui faire faire son action sur ce qui a déjà été téléchargé, pour reprendre la où ça en était ;).

Partager ce message


Lien à poster
Partager sur d’autres sites

En attendant FolderProtector, j'ai passé S-Update en 1.0-RELEASE ! J'ai convertit le projet en projet Gradle, et j'ai ENFIN réglé le bug de la mise à jour qui bug quand on l'arrête en cour.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjours désoler de up se sujet.. mais voila le systéme de suppression des fichier et bug et quand je tente de build le projet voila l'erreur :

C:\Users\ph1823 - Minecraft\Desktop\S-Update-master>gradlew build
:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
C:\Users\ph1823 - Minecraft\Desktop\S-Update-master\src\main\java\fr\theshark34\
supdate\Main.java:55: error: multi-catch statement is not supported in -source 1
.6
        } catch (BadServerResponseException | ServerDisabledException | BadServe
rVersionException | IOException | ServerMissingSomethingException e) {
                                            ^
  (use -source 7 or higher to enable multi-catch statement)
1 error
1 warning
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 5.246 secs

C:\Users\ph1823 - Minecraft\Desktop\S-Update-master>

Merci de vos réponse.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je te conseille de passer aux nouvelles versions, S-Update 3 est déjà sortie !

Tiens, le lien: Github - TheShark34

L'erreur t'indique que tu utilises un multi-catch quelque part, et que la version avec laquelle tu compiles (Java 1.6) ne le permet pas ;).

Simple curiosité, tu build la librarie de S-Update là ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai tenté.. mais revenons a mon problème qui est que sa delete pas les fichier qui ne sont pas sur le ftp es ce un bug de la version ou es ce que sa na pas était ajouté?

Partager ce message


Lien à poster
Partager sur d’autres sites

Quand j'essaye de setup un serveur (depuis le zip de la release), je me connecte dessus via firefox, on me demande de définir un mot de passe et de le valider, je le fais, puis ça reste là.

En regardant l'historique, je vois que j'ai été redirigé vers "~/panel/home" puis de nouveau vers "~/install". J'ai mal fait un truc ? ^^

PS : le mini-tutoriel présent sur le message tout en haut est-il à jour ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×