Auto-updater

moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012 - 1 juin 2012 à 21:52
 Utilisateur anonyme - 3 janv. 2013 à 02:24
Salut tout le monde !

Je vais essayer d'être le plus précis possible :p
Voici d'abord le code:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CheckForUpdates()
    End Sub
    Public Sub CheckForUpdates()
        Dim file As String = Application.StartupPath & "/maj.txt"
        Dim MyVer As String = My.Application.Info.Version.ToString
        If My.Computer.FileSystem.FileExists(file) Then
            My.Computer.FileSystem.DeleteFile(file)
            My.Computer.Network.DownloadFile("http://www.weebly.com/uploads/1/2/4/1/12416580/maj.txt", file)
            Dim LastVer As String = My.Computer.FileSystem.ReadAllText(file)
            If Not MyVer = LastVer Then
                MsgBox("Mis à jour disponible!")
'MyVer = "1.0.0.0"
            Else
                MsgBox("Pas de mis à jour disponible")
            End If
        End If
    End Sub


Avec une équipe on travaille sur un traduction d'un jeu et comme il y a souvent des mis à jour du patch. Pour éviter aux gens de revenir sans arrêt sur le forum et de retélécharger à chaque fois, ayant vu un tuto sur youtube je me suis dit que j'allais faire un updater avec VB express 2008... j'ai réussi à faire en sorte qu'au lancement du logiciel une msgbox apparaisse et dise "MAJ dispo" ou "Pas de nouvelle MAJ" et que ça redirige vers le logiciel de téléchargement du patch, qui possède un "savefiledialog" puis un bouton téléchargé qui fonctionne parfaitement bien. Le seul HIC est que le logiciel ne se met pas à jour. j'ai bô le lancer 231 fois seul le fichier maj.txt se mes à jour et j'ai toujours le message, MAJ dispo. Je ne vois vraiment pas comment faire pour que le numéro de la version du logi ce mette à jour et soit identique au nouveau maj.txt.

Ce que j'avais essayé et qui n'as pas marché est en vert.

En gros ce que j'aimerais c'est que lorsqu'un nouvelle version est dispo le message "MAJ dispo" s'affiche et que quand se message s'affiche le numéro de version du logiciel soit identique au fichier maj.txt..
:/ j’espère avoir été clair ?

Merci d'avance !

Lien video youtube: http://www.youtube.com/watch?v=zMrvCfS7854
Lien projet: http://www.mediafire.com/?sh3aq9d2tx9xcv2

21 réponses

Utilisateur anonyme
1 juin 2012 à 22:16
Cette ligne :
Dim MyVer As String = My.Application.Info.Version.ToString
impose la compilation de ton appli avec un numéro de version incrémenté. Cette appli obtenue devra être jointe aux fichiers à télécharger et doit écraser l'ancienne. Le fichier distant maj.txt, contiendra le même numéro de version que l'appli compilée. Ainsi, les numéros de l'appli et du fichier seront les mêmes et donc pas de téléchargement nécéssaire.
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
1 juin 2012 à 22:32
Merci pour votre réponse aussi rapide, mais euh j'ai pas tout compris ^^'

Et j'ai oublié de préciser que lors de la misa à jour c'est le patch qui doit être téléchargé un .ttarch
0
Utilisateur anonyme
1 juin 2012 à 22:47
Bonsoir (oui parce que j'ai oublié tout à l'heure)
My.Application.Info.Version.ToString donne la version de compilation de ton projet.
Admettons que le fichier distant donne 1.0.0.1 et que le numéro de compilation de ton application (My.Application.Info.Version.ToString) donne 1.0.0.0, un message de mise à jour apparaît et donc tu vas devoir télécharger ton patch.
Après extraction, et si tu ne remplace pas ton application, nous aurons donc toujours 1.0.0.0 pour ton application et 1.0.0.1 sur le fichier distant.
Résultat : le message de mise à jour apparaît encore et ceci peut durer jusqu'à la saint glin glin.

Maintenant, si tu compiles ton application avec le numéro de version 1.0.0.1 que tu la joins dans ton patch. Que tu ecrases l'ancienne appli (avec ton logiciel de mise à jour qui fait l'extraction du patch). Nous avons maintenant pour ton application 1.0.0.1 et le fichier distant 1.0.0.1.
Résultat : pas de message de mise à jour et donc pas de téléchargement.

Mais je n'ai peut être pas compris la question finalement
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
1 juin 2012 à 23:02
Ok dac je vois ce que tu veux dire mais comment je pourrait faire télécharger la nouvelle version du logiciel et la remplacer en même temps ?
C'est à dire lorsque l'appli s'ouvre message mis a jour dipso -->téléchargent du logiciel et du patch sur la fenêtre de téléchargement--> Remplacement du logiciel par la nouvelle version.

Le problème est que windows ne veux pas que le logiciel sois remplacer alors qu'il est en cour d’exécution. A la limite il faudrait faire en sorte que des que le logiciel se ferme, la nouvelle version prenne le dessus. Car je me mes à la place de certaine personne qui télécharge le patch et qui sont un peu "pas doué" et qui ne pense pas à supprimé l'ancienne appli et exécuter la nouvelle.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
1 juin 2012 à 23:29
Revois le code de ton extracteur de patch qui devrait supprimer les fichiers pour les remplacer.
0
Utilisateur anonyme
1 juin 2012 à 23:30
ça redirige vers le logiciel de téléchargement du patch

Bien entendu, une fois que l'extracteur à pris la main, ferme l'appli
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
1 juin 2012 à 23:37
Ok, merci je vois ça demain.
Donc je télécharge le patch et l’exécutable puis je ferme le logiciel et remplace le le plus vieux par le plus récent ?
Désolé si j'ai un peu de mal ^^'
0
Utilisateur anonyme
2 juin 2012 à 00:44
Tu peux aussi t'inspirer du système de Syed07 et de sa solution du vendredi 25 mai 2012 à 15:16:33
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
2 juin 2012 à 11:42
Ok, il n’existe donc aucun moyen de changer la version du logiciel en copiant ce qui se trouve dans le .txt ?

En tout cas merci de ton aide, je pense que je vais faire avec un installateur comme on a dit plus haut.
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
2 juin 2012 à 11:59
EDIT: c'est bon j'ai trouvé comment faire le logiciel télécharge la nouvelle version du logiciel et du .ttarch ensuite le nouveau se nomme v1.1 puis à la fermeture il faut que jessaye de faire en sorte que le programme se supprime tout seul.
0
Utilisateur anonyme
2 juin 2012 à 14:39
J'ai vu une source sur ce site qui fait cela avec un batch. On lance un batch puis on ferme l'application immédiatement. Le batch, après un délai, supprime l'exe.
0
Utilisateur anonyme
2 juin 2012 à 14:52
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
2 juin 2012 à 15:37
Merci beaucoup de ton aide mais j'ai trouver comment faire merci !

En faite l’ancienne version se nomme auto-updater V1.0
la nouvelle V1.1. Après le lancement du logiciel qui dit MAJ dispo la dernière version est téléchargé. Après ouverture de l'autre logiciel
l'ancienne se supprime. J'avais déjà vu ce genre de code mais j'avoue que j'ai un peu de mal quand même ^^
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
2 juin 2012 à 16:11
Pour ce que ça interresse voilà le code utilisé:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CheckForUpdates()
        Try
            Dim A As String = Application.StartupPath & "/Auto-Updater V1.0.exe" 'Nom du fichier qui va être supprimé
            Kill(A) 'A=Auto-Updater final
        Catch
            MsgBox("Erreur lors de la suppression de l'ancienne version!") 'si le fichier n'existe plus se message apparait
        End Try
    End Sub
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
2 juin 2012 à 19:39
J'aurais une question, je ne trouve pas comment faire pour que lorsque le fichier maj.txt n'existe pas, il soit créer au demarrage de l'appli pour ça, ca donnerais:
Si fichier maj.txt se trouvant dans le repertoire d'execution n'existe pas alors
le créer

Le problème est que j'ai essayer 2 ou 3 truc qui n'on pas fonctionné tellement je suis nul en vb x)
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
2 juin 2012 à 21:18
Enfaite c'était super simple j'ai juste fait:
Dim file As String = Application.StartupPath & "/maj.txt"
If My.Computer.FileSystem.FileExists(file) Then

Else
My.Computer.Network.DownloadFile("http://www.weebly.com/uploads/1/2/4/1/12416580/maj.txt", file)
End If
End Sub
0
Utilisateur anonyme
3 juin 2012 à 00:39
C'est plus simple d'inverser le test comme ceci (pas de condition vide) :
If not My.Computer.FileSystem.FileExists(file) Then 
   My.Computer.Network.DownloadFile("http://www.weebly.com/uploads/1/2/4/1/12416580/maj.txt", file)
End If 

Et plus haut, j'ai failli m'étouffer en voyant ça :
Kill(A)

Il vaut mieux écrire:
my.computer.filesystem.deletefile(a)

Prends l'habitude de décocher l'import automatique Microsoft.VisualBasic dans les propriétés de tous tes projets futurs et d'activer Option Strict.
Ainsi MsgBox (obsolète) deviendra MessageBox.Show(...

Tes variables devraient porter un nom plus parlant ('a' n'est pas très significatif). Plus tard, quand ton application aura longtemps trainée dans un carton, cela te sera plus facile de relire ton code.
A+
0
Utilisateur anonyme
3 juin 2012 à 01:06
tellement je suis nul en vb
Tu n'as que 17 ans, ça devrait pouvoir s'arranger, patience...
0
moicpaslui Messages postés 24 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 5 juin 2012
3 juin 2012 à 09:52
Merci beaucoup pour tes conseil !
Je vais appliquer ça tout de suite :) et finalement je vais peut être utilise le .bat car ce n'est pas pratique enfaite ma méthode...$
Merci encore pour tes réponse rapide puis bah si jamais tu achète the walking dead version pc télécharge notre patch fr ! :D
0
j'aimerais bien si quelquin ofre en un code Maj Auto avec telecharger check version tout :p


Sxpink :Amateur en VP.net
0
Rejoignez-nous