iPheonix Posté(e) November 24, 2014 Signaler Share Posté(e) November 24, 2014 (modifié) .:: Mise à jour automatique par internet ::. Aujourd'hui je vais vous apprendre comment faire un système de Mise à jour automatique par internet. Si vous avez le moindre problème avec ce tutoriel, je vous invite à laisser un message pour me prévenir (et afin que je puisse vous aidez à régler ce problème) Sommaire : 1) A quoi ça va nous servir ? 2) Tutoriel 3) Code complet 1) A quoi ça va nous servir ? Donc tout d'abbord, si vous avez un programme dont vous oubliez à chaque fois de mettre la mise à jour sur un forum ou autre, ce système peut très bien convenir pour vous. De plus, il est largement plus facile d'utiliser ce système que de mettre à chaque fois la mise à jour sur un post quelconque. 2) Tutoriel : -> Commencer par créer un projet -> Ajouter un bouton -> Double cliquer sur la form qui se présente devant vous, normalement, la partie ou l'on doit entrer les codes apparaîts -> Pour commencer, ajouter "Imports Systems.Net" (juste au dessus de Public Class Form1) Pour l'instant, votre code devrait ressembler à ça : Imports System.Net Public Class MAJ End Class -> Ajouter dans le class, un dim, qu'on nommera "Version", il servira à définir la version actuelle de votre programme (changer la 1.0 par la version souhaitée) Dim version as string = "1.0" -> Retourner sur l'interface de la form, et double cliquer sur le boutton que vous avez ajouter précedemment, cela devrait vous redirigez vers les codes et ajouter un SUB. -> Dans ce sub, nous allons définir ce que dois faire le boutton, ici, il devra vérifier s'il y a une mise à jour (Si oui, il vous indiquera que votre programme n'est pas à jour et vous inviteras à télécharger la mise à jour, si non, il vous indiquera que votre programme est à jour) -> Nous allons créer un TXT ou on metteras notre version dedans, pour mon exemple, j'ai pris 3.0. Héberger ce TXT sur un hébergeur (j'ai pris Dropbox pour ma part). S'il n'y a pas de mise à jour, laissez la version actuelle, s'il y en a une, mettez la nouvelle version de votre programme. (Ex : Si mon ancien programme est de version 1.0, et que je laisse 1.0 dans le TXT, aucune mise à jour ne sera faite. Hors, si la version de mon TXT à changer par 2.0 car j'ai fais une mise à jour, celle-ci sera alors faite) (Exemple d'hébergement sur dropbox : https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt) -> Dans notre code, nous allons ajouter deux DIM. Un qui se nommera "MAJ" et un autre qui se nommera "DernièreVersion". Le Dim DernièreVersion servira à vérifier la version actuelle de notre programme à celle qui est indiquée sur internet. Dim MAJ As New Webclient Dim DernièreVersion As String = MAJ.DownloadString("https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt") (Changer le lien par le votre) Votre code devrait ressembler à ça : Imports System.Net Public Class MAJ Private Sub MephButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MephButton1.Click Dim MAJ As New WebClient Dim DernièreVersion As String = MAJ.DownloadString("https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt") End Sub End Class -> Ensuite, nous allons indiquer au bouton ce qu'il doit faire lorsque il y a une mise à jour ou non. Pour cela nous allons créer un If : If Version = DernièreVersion Then End If -> Dans ce If, nous allons tout d'abord ajouter un MsgBox qui nous indiquera qu'il n'y a pas de mise à jour (si la version du programme est identique à celle marquée sur internet) If Version = DernièreVersion Then MsgBox("Le programme est à jour", MsgBoxStyle.Information, "Mise à jour") End If -> Pour le moment, nous avons juste indiquer au bouton ce qu'il devait faire quand il n'y avait pas de mise à jour. Indiquons lui maintenant ce qu'il doit faire quand il y aura une mise à jour. Commençons par lui ajouter une MsgBox nous indiquant que le programme n'est pas à jour (si la version du programme n'est pas identique à celle héberger sur internet) If Version = DernièreVersion Then MsgBox("Le programme est à jour", MsgBoxStyle.Information, "Mise à jour") Else MsgBox("Le programme n'est pas à jour" & vbNewLine & "La dernière version est : " & Dernièreversion, vbOkOnly + MsgBoxStyle.Critical, "Mise à jour" End if Sur le code ci-dessus, pour le deuxième message box. J'ai en premier temps mis un message fixe et fais un retour à la ligne (vbNewLine), ensuite j'ai mis un autre texte fixe puis j'ai ajouter le Dim DernièreVersion, qui indiquera automatiquement la version du programme disponible sur internet. -> Il vous faut créer un nouveau TXT, qu'on nommera "NewVersion", celui-ci contiendra le lien de téléchargement de la nouvelle version. S'il n'y a pas de nouvelle version (et donc pas de mise à jour) mettez tout simplement / (Exemple : https://dl.dropboxusercontent.com/s/yv3wgdyjolabyl4/NewVersion.txt) -> Ensuite dans le code, nous allons ajouter deux dim. Un qui se nommera "NewVersion", qui contiendra le lien de téléchargement de la nouvelle version, et un autre "NewVersionDownload", qui indiquera ou le programme doit télécharger la nouvelle version. Dim NewVersion As New WebClient Dim NewVersionDownload As String = NewVersion.DownloadString("https://dl.dropboxusercontent.com/s/yv3wgdyjolabyl4/NewVersion.txt") Le tutoriel est désormais terminé, vous pouvez maintenant tester le programme que vous venez vous-même de faire. PS : Changer la version disponible sur internet afin de voir si votre programme détecte bien celle-ci et donc que le If est bien fais. Code complet : Je vous donne le code source, seulement pour vous aider à comprendre et donc apprendre comment fonctionne ce système ! Imports System.Net Public Class MAJ Dim version As String = "1.0" Private Sub MephButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MephButton1.Click Dim MAJ As New WebClient Dim DernièreVersion As String = MAJ.DownloadString("https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt") If Version = DernièreVersion Then MsgBox("Le programme est à jour", MsgBoxStyle.Information, "Mise à jour") Else MsgBox("Le programme n'est pas à jour", & vbNewLine & "La dernière version est : " & DernièreVersion, vbOKOnly + MsgBoxStyle.Critical, "Mise à jour") Dim NewVersion As New WebClient Dim NewVersionDownload As String = NewVersion.DownloadString("https://dl.dropboxusercontent.com/s/yv3wgdyjolabyl4/NewVersion.txt") End If End Sub End Class Je pense que ça devrait-être tout pour mon premier tutoriel. Il y aura pas la suite d'autres, que je suis en train d'écrire Modifié November 24, 2014 par iPheonix 2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
FaKe77 Posté(e) November 24, 2014 Signaler Share Posté(e) November 24, 2014 Message automatiqueLe sujet a été déplacé de « Programmation → VB » à « Programmation → VB.Net ». Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
iPheonix Posté(e) November 24, 2014 Auteur Signaler Share Posté(e) November 24, 2014 Merci d'avoir déplacer mon sujet Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
vfrz Posté(e) November 24, 2014 Signaler Share Posté(e) November 24, 2014 Merci pour le tutoriel Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
davydavek Posté(e) November 25, 2014 Signaler Share Posté(e) November 25, 2014 Je trouve que c'est un système très basique, mais il est facile a mettre en place et donc c'est parfait pour les débutants. Je pense que tu devrais aussi ajouter comment gérer le téléchargement du nouvel exécutable, et si possible aller plus loin: faire un fichier batch pour que l'ancienne version s'auto détruise, puis relancer le logiciel, cette fois avec la nouvelle version. Et personnellement je mettrais la version et les URL de téléchargement dans les ressources du projet, et non dans une class; quand le projet devient plus gros ce seras beaucoup plus facile a gérer. A propos du code, il y a beaucoup de choses a dire, par ordre d'importance: IDisposable: La classe WebClient implémente cette interface, il faut donc l'utiliser pour libérer les ressources après l'utilisation de l'objet. Il y a deux façons de le faire: appeler MAJ.Dispose(), ou mettre le code dans un bloc "Using" ce qui donnerais: Using wc As New WebClient ' Code qui utilise le webclient End Using Gestion des exceptions: Que se passe t'il si l'URL est incorrecte, ou si le serveur est down, ou encore si l'utilisateur n'as pas de connexion internet disponible ? Il prendre tout ça en compte, avec un block try-catch(-finally pour l'appel a wc.Dispose()). Utilisation du VB classique: La fonction MsgBox(), et les constantes telles que "vbNewLine" & "vbOkOnly" viennent du VB classique (qui a été abandonner par Microsoft). Il faut donc éviter de les utiliser, et si possible les remplacer par leur équivalent en .NET. (MsgBox -> MessageBox, vbNewLine -> "\n", vbOkOnly -> MessageBoxButtons.OK etc..) Le nom des variables/ classes: Utilise PascalCase (1ere lettre de chaque mot en majuscule) pour les classes/ fonctions et camelCase (1ere lettre en minuscule mais une majuscule a chaque nouveau mot) pour le nom des variables. Et évites aussi d'utiliser des abréviations. ex: MAJ -> MiseAJour, NewVersion -> New Version etc... Après moi j'aime bien mettre des noms en anglais mais je pense que c'est plus une question de préférence. En espérant que ça aide, Davy. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
iPheonix Posté(e) November 25, 2014 Auteur Signaler Share Posté(e) November 25, 2014 C'est vrai que ce tutoriel n'est pas très complet et que le système est basique (surtout pour les débutants) mais je pense que tout ce que j'ai écrit me semble suffisant. Un autre tutoriel plus complexe est à venir, avec comme tu l'as dit, l'ancienne version qui s'auto-détruit et lance automatiquement la nouvelle version une fois celle-ci télécharger. Enfin, pour le moment je n'ais pas vraiment le temps mais ça viendras Ps : Je suis pas un expert en VB.net puisque je suis toujours en train de l'apprendre, donc les tutoriels viendront en fonction de ma connaissance sur le VB.net Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Garten Posté(e) February 18, 2015 Signaler Share Posté(e) February 18, 2015 Bonjour, Il y a aussi une autres manière plus facile et plus rapide de mettre à jour ses applications. Rendez-vous https://easyproupdate.codeplex.com Cordialement, Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eloha Posté(e) February 19, 2015 Signaler Share Posté(e) February 19, 2015 Bonjour, Il y a aussi une autres manière plus facile et plus rapide de mettre à jour ses applications. Rendez-vous https://easyproupdate.codeplex.com Cordialement, C'est une pub ça ? Un ? C'est pareil que ça en faite : http://simpleupdatercreator.org/, la même idée et le même principe ^^ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
vfrz Posté(e) February 20, 2015 Signaler Share Posté(e) February 20, 2015 Je propose qu'on le ban ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) February 22, 2015 Signaler Share Posté(e) February 22, 2015 J'avais raté ce sujet, intéressant. Ça rejoint le projet d'AlexMog, SimpleUpdater. +1 point de réputation. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) March 10, 2015 Signaler Share Posté(e) March 10, 2015 C'est une pub ça ? Un ? C'est pareil que ça en faite : http://simpleupdatercreator.org/, la même idée et le même principe ^^ Ohhhh, de la pub gratuiiite <3. Pas tout à fait! Mon projet à pour but une adaptation full-cloud des utilisations classiques d'un updater. CAD: Plus besoin de mettre à jour l'updater client, vue qu'il reçois les informations en temps réel . De plus, il est beaucoup plus paramétrable, vue que l'interface elle même est générée via du jscript (au passage, j'ai recodé le launcher minecraft avec . ~300 lignes de jscript) J'avais raté ce sujet, intéressant. Ça rejoint le projet d'AlexMog, SimpleUpdater. +1 point de réputation. Tout rejoins mes projets, voyons #hype 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jimmydemon Posté(e) July 4, 2016 Signaler Share Posté(e) July 4, 2016 bonjour à vous tous je viens vers vous sur à ta réponse donnée de GARTEN concernant l'easy pro update serait-il possible de m'aider car je galère depuis quelques jours sans succès je précise que j'ai testé tous les types de moyen de mise à jour pour les applications mais aucune ne marche merci à vous j'ai bien ma fenêtre de nouvelle mise à jour dispo MAIS impossible de la télécharger et de l’installer MON FICHIER XML A TITRE D'EXEMPLE <?xml version="1.0" encoding="utf-8"?> <item> <title>Updater</title> <!-- Titre de l'updater --> <version>2.0.0.0</version> <!-- Version de la mise à jour --> <url>https://dl.dropboxusercontent.com/sh/zftcgivpxlg2h1j/DEMONSTRATION ÉCRITURE DU LIEN.exe </url> <!-- URL du téléchargement de la mise à jour --> <changelog>v1.0.0 - Sortie de la première version</changelog> <!-- Journal de modifications --> </item> Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.