Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    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 !!

  2. #2
    Membre chevronné
    Homme Profil pro Yves TRICHAUD
    Technicien bio médical
    Inscrit en
    décembre 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Nom : Homme Yves TRICHAUD
    Âge : 30
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2012
    Messages : 284
    Points : 682
    Points
    682

    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 Michel Devaux
    Inscrit en
    janvier 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Nom : Michel Devaux

    Informations forums :
    Inscription : janvier 2010
    Messages : 102
    Points : 181
    Points
    181

    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 :
    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)

  4. #4
    Membre chevronné Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    406
    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 : 406
    Points : 791
    Points
    791

    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    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

    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
    Membre chevronné Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    406
    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 : 406
    Points : 791
    Points
    791

    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
    Membre chevronné Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    406
    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 : 406
    Points : 791
    Points
    791

    Par défaut

    @RobinEF : Pas de nouvelles ?? As-tu des éléments de base pour ton projet suite à notre échange ??

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •