IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Un Patcher, des mises à jour


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 8
    Points
    8
    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 !!

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    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

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 104
    Points : 206
    Points
    206
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    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+

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    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)

  6. #6
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    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.

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    @RobinEF : Pas de nouvelles ?? As-tu des éléments de base pour ton projet suite à notre échange ??

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/02/2007, 10h11
  2. Gestion des mises à jour de mes développements ..
    Par flagadda dans le forum Windows
    Réponses: 2
    Dernier message: 16/08/2006, 10h53
  3. comment effectuer des mises à jour entre classeurs excel ?
    Par benjamin.garbolino dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2006, 00h51
  4. Réponses: 5
    Dernier message: 05/11/2005, 12h17
  5. Réponses: 2
    Dernier message: 21/10/2005, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo