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 6 et antérieur Discussion :

[VB6] Code pour Mise à jour automatique [Sources]


Sujet :

VB 6 et antérieur

  1. #21
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    je n'ai pas constaté cette erreur, il faudrait que tu m'en dise un peu plus
    Pour l'erreur ... je n'ai pas décommenté le code dans la dll, donc à mon avis ça va de là !

    Ce que je ne comprends pas trop, c'est les étapes :
    - téléchargement de autoupdate.exe dans le répertoire de l'application (si valider dans la dll)

    - Lancement par la dll de autoupdate.exe (shell)
    Pourquoi faut-il télécharger autoupdate ? Cela ne doit-il pas être inclus dans le package d'installation ?
    Un petit tutoriel serait à mon avis le bien venu
    Il reste encore quelques mystères pour moi

  2. #22
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Bon, on reprend calmement :

    Pour l'erreur ... je n'ai pas décommenté le code dans la dll, donc à mon avis ça va de là
    moi aussi
    je te parle de l'erreur que tu m'a cité :
    Après download du fichier exe, j'ai une erreur du type :
    Erreur d'exécution '430'
    La classe ne gère pas Automation ou l'interface attendue.
    Pourquoi faut-il télécharger autoupdate ?
    si tu modifie le programme autoupdate entre 2 maj, tu es sûr de faire la maj avec le dernier utilitaire que tu as créé. Dans mon exemple cette option n'est pas activée. (car ce n'est pas indispensable)
    autoupdate.exe doit donc etre present dans le répertoire de l'application

    Cela ne doit-il pas être inclus dans le package d'installation ?
    Si, par défaut, tu as raison, mais cf juste au-dessus

    Un petit tutoriel serait à mon avis le bien venu
    Dès que j'aurais du temps pour faire de la prose, et finaliser le code

    Il reste encore quelques mystères pour moi
    ca va s'arranger

  3. #23
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Bon, j'ai trouvé d'où vient l'erreur !
    Erreur d'exécution '430'
    La classe ne gère pas Automation ou l'interface attendue.
    Reste maintenant à corriger le problème

    Le problème arrive dans le module Main (Module1.bas) au niveau du Shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Shell AddSlash(ExePath) & ExeName & ".exe " & CommandLine & Key
        ' do some clean up -  delete all .old files (if possible) in the current directory
        ' if some file stays it will be cleaned next time
        Dim S As String
        S = Dir(app.Path & "\*.updt")
        Do While S <> ""
            Kill app.Path & "\" & S
            S = Dir()
        Loop
    Je pense qu'il doit y avoir quelques problèmes de path car avec mes variables, ça me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "H:\AutoUpdate\Derniers Sources\TestAutoUpdate.exe &**#@!"
    Cela vient peut-être également du fait que l'exe en cours essaye de s'écraser ?

    J'ai déjà corriger un problème à mon avis toujours dans le même module : J'ai rajouté "& Files(i)" après ",ExePath"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileCopy AddSlash(ExePath) & Files(i), ExePath & "\" & ExeName & ".updt"
    Remarque :
    J'ai mis tous les modules de classe dans mon projet pour éviter d'utiliser la dll. De la même façon, je ne lance pas "AutoUpdate.exe" (pour l'instant), -> je l'ai modifié en une fonction pour pouvoir débuger.
    Après je verrai s'il faut passer ou non par un "exe".
    Sinon, comment l'application ouverte peut s'écraser elle même ?

    ++

  4. #24
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    désolé, mais je crois que tu n'as pas du tout compris comment ca fonctionne

    Citation Envoyé par Thierry
    l'opération se déroule comme cà :

    - Ouverture de l'application
    - recherche Màj
    - si non, continue
    - si oui :
    - téléchargement de autoupdate.exe dans le répertoire de l'application (si valider dans la dll)

    - Lancement par la dll de autoupdate.exe (shell)

    - Fermeture de l'application

    - autoupdate télécharge les fichiers à mettre à jour dans le répertoire de l'appllication
    - autoupdate lance l'application mise à jour (shell)
    - fermeture de autoupdate
    l'application étant fermée, et de plus renomée en '.exe.updt' (avec effectivement la correction que tu as faite), y'a pas de problème pour télécharger la nouvelle version

  5. #25
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    l'application étant fermée, et de plus renomée en '.exe.updt' (avec effectivement la correction que tu as faite), y'a pas de problème pour télécharger la nouvelle version
    Ok, je comprends qu'en passant par une fonction, à la pace d'un executable, ça pose problème.

    Par contre pour ce qui est de l'erreur, je l'ai toujours !
    Ca bloque juste après le téléchargment de l'exe.
    J'ai retesté avec ton code, et je pense maintenant avoir bien tout compris !

    Mais pour l'erreur, je comprends pas trop ...
    J'ai bien tous les runtime VB et SP6.

    Merci d'avance pour ton aide ... on s'approche du résultat !

    ++

  6. #26
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Bon voici une nouvelle version de autoupdate, plus simple et plus conviviale (avec barre de progression et tout )
    Annule et remplace le répertoire AutoUpdateExe

    http://thierry_aim.developpez.com/do...oUpdateExe.zip

    N'oublie pas de copier le nouveau fichier autoupdate.exe dans le repertoire TestAutoUpdate car il n'est pas à jour sur mon ftp

    En fait tu dois faire :

    Tu compiles TestAutoUpdate version 1.0.0 (fournie dans le projet)
    Tu lances le programme

    J'ai chargé sur mon domaine DVP une version 1.0.2 avec les infos de mise à jour (fichier update.dat)

    Si tout ce passe bien, tu dois voir la Form1 de TestAutoUpdate marquée "Version Mise à Jour" et la version de l'.exe doit avoir changé

    Voilà
    T'inquiète pas pour l'erreur, c'est mon fichier TestAutoUpdate version 1.0.2 sur le ftp qui avait la vérole, c'est réparer et maintenant ca fonctionne (du moins, chez moi, c'est bien ce que dit tout bon programmeur, non )

  7. #27
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Bon, désolé d'être chiant, mais j'ai toujours la même erreur juste après le popup "Mise à jour terminé".

    Le problème, c'est que l'application ne se lance pas après la mise à jour.

    D'ailleurs, si je lance l'application "TestAutoUpdate.exe" téléchargée, j'ai le même message d'erreur.

    Je pense que le fichier est peut-être encore vérolé !
    A vérifier !

    Tiens moi au courant, et encore merci pour ton superbe boulot.

    J'ai pas de site perso, pour tester avec mon application. Je testerai avec mon appli demain au boulot.

    Petite question :
    Faut-il faire un test de vérification de l'existance d'une connexion internet active au préalable? Ou c'est géré automatiquement ?

    ++

  8. #28
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par marsup54
    Bon, désolé d'être chiant, mais j'ai toujours la même erreur juste après le popup "Mise à jour terminé".

    l'adresse directe du fichier :
    http://thierry_aim.developpez.com/do...AutoUpdate.exe

    Citation Envoyé par marsup54
    Petite question :
    Faut-il faire un test de vérification de l'existance d'une connexion internet active au préalable? Ou c'est géré automatiquement ?
    Non, c'est pas necessaire, la fonction autoupdate renvoie false si echec, mais tu peux, si ca te fait plaisir

  9. #29
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    La version est corrompu, ou alors, le transfert via http pose problème.
    Je viens de retester -> rien qu'en lançant l'exe téléchargé, j'ai l'erreur direct ! Normallement, je devrais avoir le formulaire qui s'affiche comme tu l'as décrit plus haut.

    Une idée ?
    Est-ce qu'un pare-feu ou autre peu altérer la version ?

    Merci de ton aide !

  10. #30
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    comprends pô

    meme en executant l'exe directement à partir de l'adresse ci-dessus, il fonctionne

    Bon, demain il fera jour, j'aurai peut-être une

    car là, c'est plutot


    quelqu'un d'autre peut testé ce de fichier :

  11. #31
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par jmfmarques
    Du calme, Thierry, on a (j'ai) besoin de toi et de la réponse finale...
    Mais je suis calme

    Y'a rien qui m'agace plus qu'un truc qui fonctionne sur ma machine et pas sur celle du voisin AAAAArrrrgggggghhhhhhhhhhhh .........

  12. #32
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Pour te donner un peu plus d'info, j'ai testé :

    De chez moi :
    XP Pro, SP1, Visual Studio 6 + SP6, pas de framework .NET
    Norton, Modem Routeur

    Du boulot :
    2000 Pro, SP4, Visual Studio 6 + SP6, pas de framework .NET
    Reseau d'entreprise protégé.
    Dans les 2 cas, ça passe pas !
    J'essayerai demain de tester une mise à jour de mon application sur le réseau local.

    PS : Pour mettre à jour plusieurs fichiers, il faut modifier le fichier AutoUpdate.exe je suppose ?
    J'ai pas testé non plus de modifier la dll pour télécharger le fichier "AutoUpdate.exe" directement depuis le serveur.

  13. #33
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    The auto update web folder

    The auto update web folder should have a folder for each system you want to upgrade.
    The root folder is the one that you will refer on the RemotePath variable. The AutoUpdate.exe program should be on this folder.
    Each subfolder should be named as the assembly name (normally the program name without the extension). Inside the program folder you save the files that you want to update and the file update.dat with the last file version and the files that you want to update.
    The first parameter is the version and the second parameter separated by a "|" are the files that you want to update, which are separated by "?" as follows:

    1.2.1234.5543|MyProgram.exe?file1.txt?file2.cfg
    Désolé si c'est en anglais, mais c'est extrait de la page source que tu as cité toi-même

    Je me repose donc la question, as-tu vraiment compris comment ca marche

  14. #34
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Je suis d'un naturel tenace

    J'AI TROUVE !!!

    Pourquoi n'y ai-je pas pensé plus tot

    La dll AutoUpdate doit être compilée en mode COMPATIBILTE BINAIRE

    Option du Projet >> Composant >> option Compatibilité binaire

    Je mets à jours les liens et je vous souhaite une bonne nuit

    Edit : MaJ faite

    http://thierry_aim.developpez.com/do...AutoUpdate.zip

  15. #35
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Je me repose donc la question, as-tu vraiment compris comment ca marche
    T'inquiètes, j'avais compris ! Suis pas si bête
    J'avais juste fait une petite faute de bête ....
    J'ai modifié le fichier update.dat .... mais en local !

    A force de comprendre pourquoi ça marche pas, on voit tout qui ne marche plus !!!

    Encore merci et bravo pour ton travail.

    EDIT :
    J'ai encore quelques petites questions :
    1) Pour la DLL, tu conseilles le la mettre de préférence sous "C:\WINDOWS\system32" ou à la racine de l'application ?

    2) J'ai essayé de décommenter les lignes dans la dll pour faire un test.
    Malheureusement, il n'yavait pas de fichier "AutoUpdate.exe" sur ton site (pas fait attention), d'où une jolie boucle infinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DownloadComplete = False
    Set fDownload = New Download
    fDownload.StartDownload RemotePath & "AutoUpdate.exe", ExePath & "\" & "AutoUpdate.exe"
    ' Call the auto update program with all the parameters
    While Not DownloadComplete
          DoEvents
    Wend
    Set fDownload = Nothing
    Une DLL graphique ... avec un progressbar par exemple, ç'est possible ?
    Quelle méthode permet de savoir si le téléchargement est en cours ?
    Quelle gestion d'erreur peut-on utiliser dans ce cas là pour vérifier l'existance des fichiers, ....

    En fait, j'ai encore quelques inquiètudes si le téléchargement échoue ou se bloque, comment gérer tout ces problèmes !

    Merci d'avance pour tes réponses.

    Bonne nuit !

  16. #36
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Bon, ça marche super sur mon application !

    J'ai par contre encore quelques remarques :

    1) Si je supprime/renomme le fichier "update.dat", l'application me mets quand même qu'il y'a une mise à jour à effectuer et après s'arrête (normal).
    J'ai d'abord cru à un phénomène de cache, mais je ne pense pas que cela soit ça ! (pas tester en redémarrant le serveur, pas regarder si cache proxy au niveau du réseau interne).

  17. #37
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par marsup54
    Bon, ça marche super sur mon application !
    Content pour toi (mais pour moi aussi, le sujet me plaisait, et je pourrai m'en servir pour mes propres applis)

    Citation Envoyé par marsup54
    J'ai par contre encore quelques remarques :

    1) Si je supprime/renomme le fichier "update.dat", l'application me mets quand même qu'il y'a une mise à jour à effectuer et après s'arrête (normal).
    J'ai d'abord cru à un phénomène de cache, mais je ne pense pas que cela soit ça ! (pas tester en redémarrant le serveur, pas regarder si cache proxy au niveau du réseau interne).
    Une seule remarque avec le pluriel du dépard, je m'attendais à pire

    Je n'ai pas ce soucis avec un serveur web (celui de dvp)
    affaire à suivre ....

    Pour terminer ce sujet, il est bien sûr, possible d'améliorer et de fiabiliser ce système (j'ai encore qques idées sur le sujet)

    Toutes les suggestions seront les bienvenues

  18. #38
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    J'ai retesté mon application de chez moi (XP Pro) et ça ne passe plus ...
    J'utilise par contre un site en local avec PhpMyAdmin.
    Est-ce que le problème vient de là ???

    Peux-tu remettre le fichier "update.dat" sur ton espace web pour que je puisse tester d'où vient le problème.

    J'ai remarqué en tout cas que chaque fois que je ramène le projet chez moi (ou au boulot en sens inverse), la DLL est perdu (ou ne pointe pas sur la bonne) dans la référence du projet. Elle pointe en fait sur le répertoire où se trouve AutoUpdateDLL (le rép)
    Sous XP Pro : "C:\WINDOWS\system32"
    Sous 2000 Pro : "C:\WINNT\system32"

    Bizarre tout ça !!!

  19. #39
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Bon, j'ai réussi à faire remarcher mon application avec l'autoupdate ....

    L'erreur .....
    Ne pas mettre localhost -> préférez une adresse IP (127.0.0.1)

    Fallais trouver !!!!

    Je continue ma batterie de tests et je vous tiens au courant des problèmes ou non ...

    ++

  20. #40
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par marsup54
    Bon, j'ai réussi à faire remarcher mon application avec l'autoupdate ....

    L'erreur .....
    Ne pas mettre localhost -> préférez une adresse IP (127.0.0.1)

    Fallais trouver !!!!

    Je continue ma batterie de tests et je vous tiens au courant des problèmes ou non ...

    ++
    D'où l'intérêt d'avoir un fichier hosts dans lequel localhost pointe vers 127.0.0.1.

Discussions similaires

  1. Code pour mise à jour d'un fichier lié à un autre
    Par jj.bastin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2014, 18h02
  2. Réponses: 3
    Dernier message: 03/05/2011, 09h35
  3. [XL-2003] Code pour mise à jour TBC
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/04/2011, 08h36
  4. Réponses: 9
    Dernier message: 16/12/2010, 16h12
  5. [VBA-EXcel] Timer pour mise jour automatique
    Par Dos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/09/2006, 20h36

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