Précédent   Forum du club des développeurs et IT Pro > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 03h51   #1
RobinEF
Invité de passage
 
Homme
Inscription : mars 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mars 2012
Messages : 7
Points : 2
Points : 2
Par défaut Un Patcher, des mises à jour

Bonjour !

Bon c'est assez complexe...je bloque ! Je ne sais même pas par où commencer, après avoir longtemps cherché sans vraiment arriver a quelque chose de correct (enfin même rien du tout).

Je souhaiterai créer en Vb.net une sorte de Downloader/patcher de fichiers.
Pas un simple patcher qui se contente de remplacer un fichier (même si c'est le rôle principal de celui-ci dans mon projet au final).

Par étapes :

1 - L'utilisateur lance l'application (application qui au passage, possède déjà pas mal de fonctions autres, affichage de news, liens pratiques etc..)

2 - L'application se connecte donc à un serveur distant via une URL ou autre (je ne sais pas trop), pointant sur un dossier (possédant des sous répertoires) situé sur une machine (FTP, dédié) distant.
Là, l'application vérifie si le dossier de l'utilisateur (qui est un dossier possédant des sous-répertoires) EST A JOUR. Et si ce n'est pas le cas elle télécharge les fichiers "différents" dans les bons répertoires de l'utilisateur (elle les remplace si déjà existant ou elle en ajoute).

Le truc c'est que je souhaiterai aussi pouvoir avoir un contrôle facile des mises à jour. C'est à dire, pouvoir modifier un fichier à mettre a jour par l'utilisateur sur ma machine distante (serveur dédié). J'avais l'habitude avant d'utiliser une application (un patcher de jeu déjà fait) et elle fonctionnait avec une list.txt qu'elle téléchargeait chez l'utilisateur à chaque lancement. Cette liste était présente sur le serveur distant, dedans se trouvait le nom des fichiers avec leur chemin, leur poids, date. L'application téléchargeait donc ces fichiers là si ils étaient différents de ceux présents sur le serveur distant ou si c'étaient des fichiers non présent et donc à ajouter.

Je viens de faire une petite image "résumée"


A noté qu'en fait, les dossiers présents chez l'utilisateur sont identiques à ceux présents chez le serveur MAJ. A noté aussi que l'application ne demande pas de vérifier tous les fichiers du dossier et des sous-répertoires de l'utilisateur (10.000 dans mon cas), mais seulement ceux placé dans le dossier serveur MAJ (400 par exemple, des fichiers souvent mis a jour, et des ajouts.)

Bien compliqué tout ça... Je n'ai rien trouvé de tel pour le moment sur internet, je cherche encore. Quelqu'un aurait une idée ? Je n'ai pas grand chose à l'heure actuelle, si ce n'est qu'une ProgressBar factice

Merci d'avance, bonne année 2013 !!
RobinEF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 11h13   #2
Rainui
Membre expérimenté
 
Homme Yves TRICHAUD
Technicien bio médical
Inscription : décembre 2012
Messages : 221
Détails du profil
Informations personnelles :
Nom : Homme Yves TRICHAUD
Âge : 29
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien bio médical
Secteur : Santé

Informations forums :
Inscription : décembre 2012
Messages : 221
Points : 540
Points : 540
Bonjour,

Je n'ai jamais eu à faire ce genre de chose mais je regarderais du côté de la librairie System.Net, je sais qu'il y a des fonctions Ftp et Http.

A voir comment les utiliser ou si quelqu'un d'autre peut t'apporter plus de précisions.
__________________
est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et
Rainui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 11h46   #3
mdevaux62
Membre actif
 
Michel Devaux
Inscription : janvier 2010
Messages : 102
Détails du profil
Informations personnelles :
Nom : Michel Devaux

Informations forums :
Inscription : janvier 2010
Messages : 102
Points : 181
Points : 181
Je ne sais si j'ai bien compris la problématique mais ça n'a pas l'air compliqué.

Le plus rapide serait de créer, sur le serveur et sur chacun des PC, un fichier texte énumérant la liste de tous les fichiers et de leur dernière mise à jour:

/repertoire001/fichier001.txt|21-12-2012-10-31
/repertoire001/fichier002.txt|10-12-2012-22-58
/repertoire003/fichier001.txt|11-03-2012-07-14
etc...

Le programme lit ce fichier sur le site, le compare avec celui présent sur le PC, liste les fichiers à mettre à jour.

Il charge ensuite ces fichiers qui vont remplacer les anciens, il met à jour le fichier texte et c'est fini.

Lecture du fichier indexant la liste de tous les fichiers :
Code :
1
2
3
4
5
        'Lecture du fichier index.txt listant les fichiers et la date de leur dernière modification
        Dim client As System.Net.WebClient = New System.Net.WebClient
        Dim adresseExemple As String = "http://www.bozoleclown.fr/dload/index.txt"
        Dim chargement As String = client.DownloadString(adresseExemple)
        Dim listeDesFichiers() As String = chargement.Split(Convert.ToChar(10))
Pour la copie d'un fichier :
Code :
1
2
3
4
5
        'Copie d'un fichier depuis le Net vers le disque dur (dossier AllUsersApplicationData)
        Dim nomFichier As String = "/repertoire001/fichier001.txt"
        Dim source As String = "http://www.bozoleclown.fr/dload" & nomFichier
        Dim destination As String = My.Computer.FileSystem.SpecialDirectories.AllUsersApplicationData & My.Application.Info.AssemblyName & nomFichier.Replace("/", "\")
        My.Computer.Network.DownloadFile(source, destination)
mdevaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 12h41   #4
wallace1
Membre habitué
 
Homme
Administrateur systèmes et réseaux
Inscription : octobre 2008
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : octobre 2008
Messages : 62
Points : 139
Points : 139
La question qu'il faut te poser est la suivante :

Ton programme à la première diffusion sera-t-il sous forme de setup d'installation ?
Car il faudra 1 moment ou à un autre que les informations de tous les fichiers de ton prog soient inscrites quelque part afin de connaitre :

- primo : le chemin d'installation de ton programme
- deuxio : tous les fichiers présents, leur nom, emplacement, version, hashMD5

ensuite :

Ton updater sera-t-il 1 exécutable indépendant de ton main exe lorsque l'installation sur le poste client sera effectuée ?

Si oui Il te faudra tout de même envisager pour ton Updater 1 système de MAJ auto (avec auto suppression et remplacement de l'exe).
Il est aussi probable dans ce cas de figure que ton updater ai été codé e instance unique donc ça pourrait te donner du fil à retordre pour l'auto remplacement (pas insurmontable je te rassure car dans mon updater j'utilise ce procédé).


Comme le disait mdevaux62, tu peux utiliser des fichiers textes cependant je te recommande vivement d'utiliser 1 fichier .xml unique côté serveur (suivant la config de ton projet déployé) avec les infos suivantes :

- Nom de fichier
- Url
- Taille
- Hach MD5

et si tu as 1 fichier .xml côté client il te faudra certainement rajouter "Emplacement".

Pourquoi utiliser 1 fichier .xml car tu verras par la suite si tu décides de maintenir d'autres applis tu pourras le faire via ton .xml existant et éventuellement développer (comme je l'ai fais perso) 1 gestionnaire de MAJ depuis ton FTP.

A+
wallace1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 13h53   #5
RobinEF
Invité de passage
 
Homme
Inscription : mars 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mars 2012
Messages : 7
Points : 2
Points : 2
Merci à vous, j'étudie actuellement vos messages.

En fait, ce n'est pas sous forme d'installation. C'est un patcher pour mon jeu vidéo en ligne. L'utilisateur lance le patcher qui se situe dans son client (où se trouve des sous dossiers), le patch fait la mise à jour (si besoin, en tout cas il compare) et l'user a ensuite la possibilité de jouer : le bouton jouer du Patcher (qu'on pourrait appeler aussi un launcher) s'active lorsque les mises à jour sont terminées. Le clique sur ce bouton lance donc un autre exécutable = le jeu.
L'utilisateur passe forcément par le patcher (launcher) pour lancer le jeu. (donc il le lance très souvent)

Exemple d'un type de patcher (en l’occurrence le jeu free to play Aion pour l'exemple)
RobinEF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 14h12   #6
wallace1
Membre habitué
 
Homme
Administrateur systèmes et réseaux
Inscription : octobre 2008
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : octobre 2008
Messages : 62
Points : 139
Points : 139
Citation:
Envoyé par RobinEF Voir le message
Merci à vous, j'étudie actuellement vos messages.

En fait, ce n'est pas sous forme d'installation. C'est un patcher pour mon jeu vidéo en ligne. L'utilisateur lance le patcher qui se situe dans son client (où se trouve des sous dossiers), le patch fait la mise à jour (si besoin, en tout cas il compare) et l'user a ensuite la possibilité de jouer : le bouton jouer du Patcher (qu'on pourrait appeler aussi un launcher) s'active lorsque les mises à jour sont terminées. Le clique sur ce bouton lance donc un autre exécutable = le jeu.
L'utilisateur passe forcément par le patcher (launcher) pour lancer le jeu. (donc il le lance très souvent)

Exemple d'un type de patcher (en l’occurrence le jeu free to play Aion pour l'exemple)
donc dans un 1er tps l'idéal pour ton Updater/Launcher serait :

- L'utilisateur le télécharge et le copie dans le même répertoire que l'exe du jeu
- L'utilisateur le télécharge et lorsque l'Updater/Launcher est lancé l'user renseigne le chemin de l'exe du jeu)
- L'utilisateur le télécharge et lorsque l'Updater/Launcher est lancé alors ce dernier se charge de détecter automatiquement ou se situe l'exe du jeu en passant par le registre "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" (si toutefois le jeu d 'origine a été installé ? Ce n'est peut être pas le cas !)

de la tu pourras connaitre la variable qui permettra d'identifier le reste de l'arbo du jeu afin de recenser les divers fichiers et infos.
wallace1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 09h03   #7
wallace1
Membre habitué
 
Homme
Administrateur systèmes et réseaux
Inscription : octobre 2008
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : octobre 2008
Messages : 62
Points : 139
Points : 139
@RobinEF : Pas de nouvelles ?? As-tu des éléments de base pour ton projet suite à notre échange ??
wallace1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h19.


 
 
 
 
Partenaires

Hébergement Web