Aller au contenu

Mise à jour automatique par internet


iPheonix
 Share

Recommended Posts

.:: 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é par iPheonix
  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...
  • 3 weeks later...

C'est une pub ça ? Un ? :D

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 :D

#hype

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

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>

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chargement
 Share

×
×
  • Créer...