Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement de logiciels
  4. VB.Net
  5. Mise à jour automatique par internet

Mise à jour automatique par internet

Scheduled Pinned Locked Moved VB.Net
12 Posts 9 Posters 10.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • iPheonixI
    iPheonixI
    iPheonix
    wrote on last edited by
    #1

    <p style="text-align:center;"><span style="font-size:18px;"><u><strong>.:: Mise à jour automatique par internet ::.</strong></u></span></p>
    <p> </p>
    <p><em>Aujourd'hui je vais vous apprendre comment faire un système de Mise à jour automatique par internet.</em> <em>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)</em></p>
    <p> </p>
    <p><u><strong>Sommaire :</strong></u></p>
    <p> </p>
    <p>1) A quoi ça va nous servir ?</p>
    <p>2) Tutoriel</p>
    <p>3) Code complet</p>
    <p> </p>
    <p><u><strong>1) A quoi ça va nous servir ?</strong></u></p>
    <p> </p>
    <p>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.</p>
    <p> </p>
    <p><u><strong>2) Tutoriel :</strong></u></p>
    <p> </p>
    <p>-> Commencer par créer un projet</p>
    <p>-> Ajouter un bouton</p>
    <p>-> Double cliquer sur la form qui se présente devant vous, normalement, la partie ou l'on doit entrer les codes apparaîts</p>
    <p>-> Pour commencer, ajouter "Imports Systems.Net" (juste au dessus de Public Class Form1)</p>
    <p>Pour l'instant, votre code devrait ressembler à ça :</p>
    <p></p><blockquote class="ipsStyle_spoiler" data-ipsspoiler="">
    <pre class="ipsCode prettyprint lang-auto">
    Imports System.Net

    Public Class MAJ

    End Class
    </pre>
    <p></p></blockquote><p></p><p>-> 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)</p>
    <pre class="ipsCode prettyprint lang-auto">
    Dim version as string = "1.0"
    </pre>
    <p>-> 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.</p>
    <p>-> 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)</p>
    <p>-> 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)</p>
    <p>(Exemple d'hébergement sur dropbox : <a href="https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt" rel="external nofollow">https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt</a>)</p>
    <p>-> 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.</p>
    <pre class="ipsCode prettyprint lang-auto">
    Dim MAJ As New Webclient
    Dim DernièreVersion As String = MAJ.DownloadString("https://dl.dropboxusercontent.com/s/z5xu2ktgn0uw5bn/Version.txt")
    </pre>
    <p>(Changer le lien par le votre)</p>
    <p>Votre code devrait ressembler à ça :</p>
    <p></p><blockquote class="ipsStyle_spoiler" data-ipsspoiler="">
    <pre class="ipsCode prettyprint lang-auto">
    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
    </pre>
    <p></p></blockquote><p></p><p>-> 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 :</p>
    <pre class="ipsCode prettyprint lang-auto">
    If Version = DernièreVersion Then
     
    End If
    </pre>
    <p>-> 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)</p>
    <pre class="ipsCode prettyprint lang-auto">
    If Version = DernièreVersion Then
    MsgBox("Le programme est à jour", MsgBoxStyle.Information, "Mise à jour")
    End If
    </pre>
    <p>-> 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)</p>
    <pre class="ipsCode prettyprint lang-auto">
    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
    </pre>
    <p>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.</p>
    <p> </p>
    <p>-> 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 /</p>
    <p>(Exemple : <a href="https://dl.dropboxusercontent.com/s/yv3wgdyjolabyl4/NewVersion.txt" rel="external nofollow">https://dl.dropboxusercontent.com/s/yv3wgdyjolabyl4/NewVersion.txt</a>)</p>
    <p>-> 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.</p>
    <pre class="ipsCode prettyprint lang-auto">
    Dim NewVersion As New WebClient
    Dim NewVersionDownload As String = NewVersion.DownloadString("https://dl.dropboxusercontent.com/s/yv3wgdyjolabyl4/NewVersion.txt")
    </pre>
    <p>Le tutoriel est désormais terminé, vous pouvez maintenant tester le programme que vous venez vous-même de faire.</p>
    <p> </p>
    <p>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.</p>
    <p> </p>
    <p><u><strong>Code complet :</strong></u></p>
    <p> </p>
    <p>Je vous donne le code source, seulement pour vous aider à comprendre et donc apprendre comment fonctionne ce système !</p>
    <p></p><blockquote class="ipsStyle_spoiler" data-ipsspoiler="">
    <pre class="ipsCode prettyprint lang-auto">
    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
    </pre>
    <p></p></blockquote><p></p><p>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 😉 </p>

    My anime list | My manga list

    1 Reply Last reply
    2
    • F
      F
      FaKe77
      wrote on last edited by
      #2

      <p><strong>Message automatique</strong></p><p></p><p>Le sujet a été déplacé de « <a href="<base_url>/forum/192-programmation/">Programmation</a> → <a href="<base_url>/forum/46-vb/">VB</a> » à « <a href="<base_url>/forum/192-programmation/">Programmation</a> → <a href="<base_url>/forum/47-vbnet/">VB.Net</a> ».</p>

      1 Reply Last reply
      0
      • iPheonixI
        iPheonixI
        iPheonix
        wrote on last edited by
        #3

        <p>Merci d'avoir déplacer mon sujet 🙂 </p>

        My anime list | My manga list

        1 Reply Last reply
        0
        • vfrzV
          vfrzV
          vfrz
          wrote on last edited by
          #4

          <p>Merci pour le tutoriel 🙂 </p>

          1 Reply Last reply
          0
          • D
            D
            davydavek
            wrote on last edited by
            #5

            <p>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.</p>
            <p>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.</p>
            <p> </p>
            <p>A propos du code, il y a beaucoup de choses a dire, par ordre d'importance:</p>
            <ul><li>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:
            <pre class="ipsCode prettyprint">
            Using wc As New WebClient
            ' Code qui utilise le webclient
            End Using
            </pre>
            </li><li>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()).</li>
            <li>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..)</li>
            <li>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.</li>
            </ul><p>En espérant que ça aide, Davy.</p>

            C# dev
            github.com/DavyWk

            1 Reply Last reply
            0
            • iPheonixI
              iPheonixI
              iPheonix
              wrote on last edited by
              #6

              <p>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.</p><p></p><p>
              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 🙂 </p><p></p><p>
              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 🙂 </p>

              My anime list | My manga list

              1 Reply Last reply
              0
              • G
                G
                Garten
                wrote on last edited by
                #7

                <p>Bonjour,</p>
                <p> </p>
                <p>Il y a aussi une autres manière plus facile et plus rapide de mettre à jour ses applications.</p>
                <p> </p>
                <p>Rendez-vous <a href="https://easyproupdate.codeplex.com" rel="external nofollow">https://easyproupdate.codeplex.com</a></p>
                <p> </p>
                <p>Cordialement,</p>

                1 Reply Last reply
                0
                • E
                  E
                  Eloha
                  Membre d'honneur
                  wrote on last edited by
                  #8

                  <blockquote class="ipsQuote" data-cite="Garten" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="15794" data-ipsquote-contentid="1347" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1424278368" data-ipsquote-username="Garten"><div>
                  <div>
                  <p>Bonjour,</p>
                  <p> </p>
                  <p>Il y a aussi une autres manière plus facile et plus rapide de mettre à jour ses applications.</p>
                  <p> </p>
                  <p>Rendez-vous <a href="https://easyproupdate.codeplex.com" rel="external nofollow">https://easyproupdate.codeplex.com</a></p>
                  <p> </p>
                  <p>Cordialement,</p>
                  </div>
                  </div></blockquote>
                  <p> </p>
                  <p>C'est une pub ça ? Un ? 😄 </p>
                  <p>C'est pareil que ça en faite : <a href="http://simpleupdatercreator.org/" rel="external nofollow">http://simpleupdatercreator.org/</a>, la même idée et le même principe ^^ </p>

                  1 Reply Last reply
                  0
                  • vfrzV
                    vfrzV
                    vfrz
                    wrote on last edited by
                    #9

                    <p>Je propose qu'on le ban !</p>

                    1 Reply Last reply
                    0
                    • AzadA
                      AzadA
                      Azad
                      wrote on last edited by
                      #10

                      <p>J'avais raté ce sujet, intéressant. 🙂 </p>
                      <p>Ça rejoint le projet d'AlexMog, SimpleUpdater.<br/><br/>
                      +1 point de réputation.</p>

                      Administrateur du forum.
                      Contactez-moi par message privé ou par mail.

                      1 Reply Last reply
                      0
                      • AlexMogA
                        AlexMogA
                        AlexMog
                        Modérateur spécialisé
                        wrote on last edited by
                        #11

                        <blockquote class="ipsQuote" data-cite="Eloha" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="15803" data-ipsquote-contentid="1347" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1424363908" data-ipsquote-username="Eloha"><div>
                        <div>
                        <p>C'est une pub ça ? Un ? 😄 </p>
                        <p>C'est pareil que ça en faite : <a href="http://simpleupdatercreator.org/" rel="external nofollow">http://simpleupdatercreator.org/</a>, la même idée et le même principe ^^</p>
                        </div>
                        </div></blockquote>
                        <p>Ohhhh, de la pub gratuiiite <3.</p>
                        <p>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 🙂 .</p>
                        <p>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)</p>
                        <p> </p>
                        <blockquote class="ipsQuote" data-cite="Azad" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="15850" data-ipsquote-contentid="1347" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1424632930" data-ipsquote-username="Azad"><div>
                        <div>
                        <p>J'avais raté ce sujet, intéressant. 🙂 </p>
                        <p>Ça rejoint le projet d'AlexMog, SimpleUpdater.</p><p></p><p>
                        +1 point de réputation.</p>
                        </div>
                        </div></blockquote>
                        <p>Tout rejoins mes projets, voyons 😄 </p>
                        <p>#hype</p>

                        Multiplayer GameDev @ Unexpected
                        

                        Mon CV

                        1 Reply Last reply
                        1
                        • J
                          J
                          jimmydemon
                          wrote on last edited by
                          #12

                          <p>
                          bonjour à vous tous je viens vers vous sur <span>à ta réponse donnée</span> de GARTEN concernant <span>l'</span><span>easy</span> pro update <span>serait-il</span> possible de m'aider car je galère depuis <span>quelques jours</span> sans succès je précise que j'ai <span>testé</span> <span>tous</span> les <span>types</span> de moyen de mise à jour pour les applications mais <span>aucune</span> ne marche merci à vous j'ai bien ma fenêtre de nouvelle mise à jour dispo<br/>
                          MAIS impossible de <span>la</span> <span>télécharger</span> et de l’installer
                          </p>
                          <p>
                          MON FICHIER XML A TITRE D'EXEMPLE
                          </p>
                          <p>
                          <?xml version="1.0" encoding="utf-8"?><br/>
                          <item><br/>
                          <title>Updater</title>                    <!-- Titre de l'updater --><br/>
                          <version>2.0.0.0</version>                                        <!-- Version de la mise à jour --><br/>
                          <url>https://dl.dropboxusercontent.com/sh/zftcgivpxlg2h1j/DEMONSTRATION ÉCRITURE DU LIEN.exe<br/>
                          </url>        <!-- URL du téléchargement de la mise à jour --><br/>
                          <changelog>v1.0.0 - Sortie de la première version</changelog>     <!-- Journal de modifications --><br/>
                          </item>
                          </p>

                          1 Reply Last reply
                          0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Login or register to search.
                          Powered by NodeBB Contributors
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups