Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Demande] Launcher-Maj

Mise à jour automatique / Update

    1 mai 2011 à 21:03:58

    Bonjour,

    je m'excuse d'avance si je me suis trompé de section pour mon message.

    Voici ma demande.

    J'ai coder un launcher sous Visual Basic 2010 Express, Sont but est d'affiche un page web qui informe les utilisateur de l'actualité du logiciel.
    Et il y a un bouton pour lancer le logiciel. Un bouton permet de lancer le programme. Et de chercher si une mise à jour est disponible.

    Les partis PageWeb & Bouton lancement sont terminé.
    En Effet, j'ai pas terminé la parti Mise à Jour...

    J'ai coder 2 ligne qui permet de télécharger un installeur présent sur notre ftp. Mais cela ne nous convient vraiment pas.

    Je voudrais savoir comment puis-je codé pour que le launcher dise à l'utilisateur au démarrage qu'il y a une mise à jour disponible.
    -Qu'il télécharge à partir du FTP ( Que la progresse bar qui est sur le launcher avance en même temps que le téléchargement. )
    -Qu'il lance l'installeur automatiquement.
    -Qu'il ferme le launcher.
    -L'installeur s'affiche, l'utilisateur fait le nécessaire.


    Voilà. L'utilisateur lance le Launcher et aucune mise à jour n'est nécessaire.

    Vous pouvez nous aider ?

    Ps: L'installateur et déjà programmer.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      2 mai 2011 à 8:47:16

      Bonjour,

      Tu ne peux pas interroger ton serveur avec ton launcher à son lancement, pour qu'il te renvoit la derniere version du logiciel, puis comparer cette valeur avec la version actuel du client qui lance le launcher ? en fonction de cette comparaison tu lance ton DL ou non.

      Je ne peux pas te donner d'info concrète sur le code car je connais vraiment pas grand chose sur les échanges serveur/client mais tu dois pouvoir trouver des tutos sur les différents protocole UDP TCP et compagnie ^^
      • Partager sur Facebook
      • Partager sur Twitter
        2 mai 2011 à 11:25:39

        Merci donc j'ai coder un systeme de téléchargement avec barre de progression. cela fonctionne parfaitement.

        Mais je voudrais maintenant savoir comment ( code ) dire au launcher de vérifier si il y a une mise a jour. un code simple qui par exemple regarde la taille d'un .txt sur le serveur et que si le .txt a une taille différente un message s'affiche au lancement du launcher. et qui désactive le bouton Lancer.

        Exemple:

        Launcher se lance....

        Vérification dans("c:/monfichier.txt")-->( 5ko)
        Comparaison dans ("http:/blabla.fr/monfichier.txt")- ->( 5ko)

        Même taille Au qu’un message, le bouton Jouer est activé.

        ---

        Launcher se lance....

        Vérification dans("c:/monfichier.txt")-->( 5ko)
        Comparaison dans ("http:/blabla.fr/monfichier.txt")- ->( 10ko)

        Pas la même taille ! Affichage d'un message le bouton Jouer est Grisé
        Le bouton Mise à jour et claire. l'utilisateur clique sur Mise à jour
        • Partager sur Facebook
        • Partager sur Twitter
          2 mai 2011 à 11:49:44

          Pour dire a ton launcher de faire le CheckMAJ il faut que tu te serve de l'evenement LOAD(pour l'ajouter suffit de double cliquer sur ton formulaire dans le winform)
          ce que tu ecris la dedans se fera au chargement du launcher :magicien:
          ca donne une fonction du genre :
          Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          

          Le Handles étant la partie qui fait que cette fonction se declenche sur l'evnement MyBase.Load

          Desactiver un bouton : monBouton.enabled = false pour griser le bouton :ninja: et donc ne plus pouvoir interagir dessus(mettre a true pour réactiver)

          Taille d'un fichier :
          Dim FichierInfo As System.IO.FileInfo = New System.IO.FileInfo("Fichier.txt")
          Dim TailleFichier AsInteger = FichierInfo.Length
          


          Pour la partie réseaux je peux pas t'aider plus car je ne connais pas les classes qui permettent de le faire.
          un rapide recherche sur notre ami Google : "vb.net ftp client"
          http://www.vbfrance.com/codes/TRANSFER [...] NET_5664.aspx
          code simple qui te montre comment interagir avec ton ftp.

          il y a FtpWebRequest aussi apparement comme classe qui pourrait peut etre te servir.

          Je ne pense pas pouvoir t'en dire plus vue mes connaissances en client/serveur ^^

          Ah et pour lancer ton installateur apres l'avoir telecharger :
          Process.Start(cheminInstallateur)


          Bonne chance :pirate:
          • Partager sur Facebook
          • Partager sur Twitter
            2 mai 2011 à 12:15:55

            je test cela.


            Je n'arrive vraiment pas pour la comparaison a distance. :euh:
            • Partager sur Facebook
            • Partager sur Twitter
              2 mai 2011 à 13:09:14

              Le comparaison est je pense pas vraiment a distance, tu telecharge ce que tu veux comparé et ensuite tu compare en locale ^^
              • Partager sur Facebook
              • Partager sur Twitter
                3 mai 2011 à 8:32:19

                Ha oui ok ! att j'ai une idée mais je vais avoir besoin de toi ! :)
                Bon je sais exactement télécharger un fichier d'un serveur distant.

                -Je vais mettre le téléchargement du fichier au demarage. suivit d'une conparaison.

                Ex:

                Launcher se lance .....

                • -connexion au serveur
                • -téléchargement du fichier txt ou autre mais très lège.
                • -écriture du fichier txt dans un dossier ("c:\blabla\ application\maj\distant")
                • -le launcher compare le taille des fichiers.("c:\blabla\mon_application\maj\local")
                • -Si différent, une msgbox s'affiche, ( mise a jour disponible)
                • -Le bouton "LANCER" devient = false
                • -Le bouton "MAJ" est en claire pour que l'utilisateur lance la maj = false



                Attend en écrivent ceci, je me suis rendu compte que sa marcher pas mon truc la, si ?
                • Partager sur Facebook
                • Partager sur Twitter
                  3 mai 2011 à 8:54:03

                  Si, la logique est bonne sauf que pour ativer ton bouton de MAJ c'est =true^^
                  Et n'oublie pas de réactiver ton boutons Lancer une fois les verif/MAJ faites ;)

                  Pourquoi demander à l'utilisateur de lancer la MAJ? Ce ne serait pas mieux de lancer le DL de la MAJ puis l'installation automatiquement si il n'a pas la bonne version?

                  Pour la comparaison de tes fichiers tu peux faire un petit fichier texte dans lequel tu ecris la version de la MAJ plutot que de regarder les tailles ce sera plus "pratique", lire un fichier texte c'est pas la mer a boire surtout quand il n'y a qu'un nom/numero de version :)

                  Et oublie pas non plus de changer ton fichier sur le client histoire qu'il se prenne pas la MAJ à chaque fois :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 mai 2011 à 8:59:14

                    oui :) Donc tu aurai un bout de code pour comparer le continue d'un fichier txt et d'afficher un message si oui ou non il est différent.

                    J'ai ce petit bout de code mais il est vraiment trop vieux pour vb 10.

                    Citation : Code erroné

                    Private Sub Form_Load()
                    Dim k As Integer, sBuff As String
                    Dim tblLignes() As String, tblLignes2() As String, tblTemp() As String
                    Dim i As Integer, lTotDiff As Long
                    'ouverture fichier 1
                    k = FreeFile
                    Open "C:\Documents and Settings\ng\Bureau\1.txt" For Binary As #k
                    sBuff = Space$(LOF(k))
                    Get #k, , sBuff
                    Close #k
                    tblLignes = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

                    'ouverture fichier 2
                    k = FreeFile
                    Open "C:\Documents and Settings\ng\Bureau\2.txt" For Binary As #k
                    sBuff = Space$(LOF(k))
                    Get #k, , sBuff
                    Close #k
                    tblLignes2 = Split(sBuff & vbCrLf, vbCrLf, , vbTextCompare)

                    sBuff = ""

                    If UBound(tblLignes2) > UBound(tblLignes) Then
                    'on s'arrange pr que tblLignes soit tjrs le plus grand
                    tblTemp = tblLignes2
                    tblLignes2 = tblLignes
                    tblLignes = tblTemp
                    Erase tblTemp
                    End If

                    For i = 0 To UBound(tblLignes)
                    If i > UBound(tblLignes2) Then
                    'hors imite donc diff
                    lTotDiff = lTotDiff + 1
                    Else
                    If tblLignes(i) <> tblLignes2(i) Then lTotDiff = lTotDiff + 1
                    End If
                    Next
                    MsgBox lTotDiff & " différence(s) trouvée(s) !", vbInformation

                    Erase tblLignes
                    Erase tblLignes2
                    End Sub

                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 mai 2011 à 9:18:05

                      Je ne peux pas te donner de code perso car je ne code pas en VB mais en c# et je n'ais pas ce genre de fonction sous la main :)
                      Par contre tu peux trouver pas mal de bout de code sur le net comme ici :
                      http://www.vbfrance.com/codes/LIRE-FIC [...] ET_30097.aspx

                      Pour lire facilement un fichier texte
                      dans ton cas la fonction de lecture est encore plus simple(pas de boucle) vu que tu n'a qu'une ligne a lire, par contre attention a ne pas mettre d'espace/saut de ligne en trop lorsque tu ecrira ton nom de version :)

                      Reste plus qu'a lire tes deux fichiers et a comparö les deux string obtenu et Tadam- :magicien:

                      En quelques secondes j'ai trouver ce bout de code sur le net je pense que tu es capable faire pareil pour aller plus vite a l'avenir :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 mai 2011 à 9:38:28

                        Oui je sais lire dans un fichier avec VB10 mais je ne sais pas comparer avec un autre fichier. ^^ je cherche sur le net encore. Si je ne trouve pas, je pourrai peu être compte obtenir la reponse ici :s
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 mai 2011 à 9:51:56

                          Dans le lien que je t'ais envoyé, le fichier lu se retrouve dans string => deux lecture a faire donc, une pour chacun de tes deux .txt tu obtiens :
                          string f1 et string f2 correspondant a chacun des .txt
                          reste plus qu'à faire

                          If f1<>f2 then
                          ...
                          Else
                          ...
                          End If
                          :magicien:

                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 mai 2011 à 0:23:41

                            Je dois être bête. je n'arrive pas...

                            j'ai cela :

                            if fichier1 = fichier 2 then
                            msgbox "identiques"
                            else
                            msgbox "pas identiques"
                            endif
                            


                            Je teste
                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 mai 2011 à 8:45:05


                              Dans la majorité des langages la comparaison c'est == et non = qui est l'affectation :)

                              Jete un oeil au tuto vb.net si jamais ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 mai 2011 à 9:26:43

                                Le soucis pour moi, c'est que je ne comprend pas comment je fais la relation entre le code de lecteur qui la ne lie que un fichier
                                Sub lectureFichier(ByVal fichier As String)
                                
                                        Try
                                            Dim monStreamReader As New StreamReader(fichier) 'Stream pour la lecture
                                            Dim ligne As String ' Variable contenant le texte de la ligne
                                
                                           do
                                                ligne = monStreamReader.ReadLine
                                                MsgBox(ligne) 
                                                ' TRAITEMENT A EFFECTUER SUR LA LIGNE ICI
                                           Loop Until ligne Is Nothing            monStreamReader.Close()
                                
                                        Catch ex As Exception
                                            MsgBox("Une erreur est survenue au cours de l'accès en lecture du fichier de configuration du logiciel." & vbCrLf & vbCrLf & "Veuillez vérifier l'emplacement : " & fichier, MsgBoxStyle.Critical, "Errueur lors e l'ouverture du fichier conf...")
                                        End Try
                                
                                    End Sub
                                


                                et la code de comparaisons... merci de ton aide. mais je vais y arriver. je dois absolument fini le launcher pour ce soir. donc je vais rester sur ça jusqu’à se que j'y arrive.

                                dans le code ci-dessus. Ou je redirige le chemin du fichier a lire? (fichier) et pour le code de comparaison, fichier1 et fichier2 comment je formule cela.... ?

                                merci d'avance
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 mai 2011 à 9:42:53

                                  :zorro:
                                  'Retourne ce quelle a lu dans le fichier passé en parametre
                                  Function lectureFichier(ByVal fichier As String) As String Try
                                              Dim monStreamReader As New StreamReader(fichier) 'Stream pour la lecture
                                              Dim ligne As String ' Variable contenant le texte
                                             
                                                  ligne = monStreamReader.ReadLine 'Vu quil ny a quune ligne pas besoin de boucler
                                  monStreamReader.Close()
                                  
                                                   Return ligne
                                   
                                          Catch ex As Exception
                                              MsgBox("Erreur")
                                          End Try
                                  


                                  Tu appel donc deux fois cette fonction: :ninja:

                                  Form_Load(...)...
                                  
                                  Dim fichierClient As String
                                  Dim fichierServeur As String
                                  
                                  DLFichierServeur()'Telecharger le fichier sur le serveur qui contient la version
                                  
                                  fichierClient = lectureFichier(cheminFichierClient) 'Lire le fichier client
                                  fichierServeur = lectureFichier(cheminFichierServeur)'Lire le fichier serveur
                                  
                                  If fichier1 <> fichier2 Then 'Si different alors MAJ
                                  boutonJouer.Enabled = false 'desactive bouton jouer
                                  MAJ() 
                                  boutonJouer.Enanled = true 'reactive bouton jouer
                                  EndIf
                                  


                                  Avec tout ca je pense qu'on est plutot pas mal :)
                                  A la fin de ta maj pense a mettre a jour le fichier sur le client qui contient la version cliente
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 mai 2011 à 10:14:35

                                    Alors moi j'ai codé comme cela:

                                    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                                            Kill(".\maj\dvl\distance\version.txt")
                                            My.Computer.Network.DownloadFile _
                                            ("http://www.iola-corp.com/ftp/sgs/version/version.txt", ".\maj\dvl\distance\version.txt")
                                            'fichier lu 1
                                            Try
                                                Dim monStreamReader As New StreamReader(".\maj\dvl\local\version.txt")
                                                Dim local As String
                                    
                                                Do
                                                    local = monStreamReader.ReadLine
                                                Loop Until local Is Nothing
                                                monStreamReader.Close()
                                    
                                            Catch ex As Exception
                                            End Try
                                    
                                            'fichier lu 2
                                            Try
                                                Dim monStreamReader As New StreamReader(".\maj\dvl\distance\version.txt")
                                                Dim distance As String
                                    
                                                Do
                                                    distance = monStreamReader.ReadLine
                                                Loop Until distance Is Nothing
                                                monStreamReader.Close()
                                    
                                            Catch ex As Exception
                                            End Try
                                    
                                            If local = distance Then
                                                MsgBox("identiques")
                                            Else
                                                MsgBox("pas identiques")
                                            End If
                                    
                                        End Sub
                                    


                                    La lecture des fichiers .txt fonctionne parfaitement.

                                    mais ça Hïc a la comparaisons. ta une idée.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 mai 2011 à 10:17:16

                                      Je vais te laisser regarder ton If et un de mes precedents messages :pirate::pirate::pirate:
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        4 mai 2011 à 11:01:10

                                        le double == ? non s'est la même chose ça ne fonctionne pas.

                                        C'est dans le if les noms local et distance qui pose problème. il ne fait pas la relation. je vais essayer avec les <>.

                                        Edit : Non :( je dois t’énerver. désolé. Si tu en a marre je comprend. >_<
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          4 mai 2011 à 11:10:44

                                          C'est normal, tu declare local et distance chacun a l'interieur d'un try donc une fois sortie du try la variable n'existe plus...
                                          les Dim doivent etre au tout debut en dehors des try

                                          Je t'ai donner l'exemple de code avec une belle fonction toute propre(ou pas), tu ne le suis meme pas..

                                          tu as tous les elements pour faire ton traitement de maj sans aucun probleme et je ne vais pas te donner le code tout fait :)

                                          Sur ce.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            4 mai 2011 à 11:26:31

                                            Merci infiniment à Hyti !

                                            Voici le code fonctionnel : pour ce qui on besoin.

                                            Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                                                    Kill("c:\.txt") efface le fichier présent
                                                    My.Computer.Network.DownloadFile _
                                                    ("http://""""".txt", "c:\""""".txt") 'remplace le fichier que l'on viens effacer.
                                                   
                                            
                                                        'fichier 1
                                            
                                                        Dim monStreamReader As New StreamReader("c:\"""".txt")
                                                        Dim local As String
                                            
                                                        Do
                                                            local = monStreamReader.ReadLine
                                                        Loop Until local Is Nothing
                                                        monStreamReader.Close()
                                            
                                                        'fichier 2
                                            
                                                    Dim monStreamReader2 As New StreamReader("c:\""""".txt")
                                                        Dim distance As String
                                            
                                                        Do
                                                        distance = monStreamReader2.ReadLine
                                                        Loop Until distance Is Nothing
                                                    monStreamReader2.Close()
                                            
                                            
                                                        If local <> distance Then
                                                            MsgBox("Aucune mise à jour disponible.")
                                                            boutonmaj.Enabled = False
                                                        Else
                                                            MsgBox("Une nouvelle Mise à jour est diponnible.")
                                                            boutonjouer.Enabled = False
                                                        End If
                                            
                                                End Sub
                                            


                                            Enjoy et aidez vous ! :):)
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            [Demande] Launcher-Maj

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown