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

Web & réseau Delphi Discussion :

[W32][D6]Vérification via le net de la dernière version d'une application


Sujet :

Web & réseau Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut [W32][D6]Vérification via le net de la dernière version d'une application
    Bonjour,
    je souhaite ajouter à mon application, la possibilité au démarrage de celle-ci de vérifier si l'utilisateur possède la dernière version de l'application.
    Quelle est la façon de procéder,
    merci

  2. #2
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Il suffit à chaque nouvelle version, d'uploader sur le site, en plus du programme, un petit fichier texte d'accompagnement contenant la dernière version du programme qu'on vient de mettre à disposition.

    Pour que le programme vérifie lui même sa version -> composants Indy : TIdHTTP si le programme est sur HTTP, TIdFTP si le programme est sur FTP. Le charger, le comparer à la version courante, proposer le téléchargement s'il y a lieu. Toute la doc se trouve sur developpez.

    Note : le petit fichier texte peut aussi contenir d'autres informations à destination de l'utilisateur : ce qui change dans cette version, etc. Il peut aussi être utile de mettre l'adresse de téléchargement en clair, et de faire utiliser cette adresse par le programme qui se met à jour, au cas où on déciderait de changer de répertoire, de méthode, ou simplement d'hébergeur.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci,
    j'ai essayer sans réussite mais sans trop incister.
    Je retente la chose plus sérieusement cette fois

  4. #4
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Premièrement, placer sur un serveur un fichier contenant un n° de version ou date de compilation. J'utilise la date sous forme AAAAMMJJXX (xx = indice de la journée au cas où... à partir de 00). Par exemple 2007051400 pour le 14/05/2007

    A l'aide d'un composant TJvHttpUrlGrabber (JVCL) (HttpVersion dans le code).

    Voici un exemple de code lors d'un clic sur un bouton, avec affichage d'une boite de dialogue selon le résultat. En automatique, il faut bien sur ne rien afficher en cas d'absence de nouvelle version ou d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TFMain.btnVersionClick(Sender: TObject);
    begin
    {$IFDEF BETA}
      HttpVersion.URL := 'http://okaryn.free.fr/.divers/versions/LagoonBeta.txt';
    {$ELSE}
      HttpVersion.URL := 'http://okaryn.free.fr/.divers/versions/Lagoon.txt';
    {$ENDIF}
      HttpVersion.Start;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    procedure TFMain.HttpVersionDoneStream(Sender: TObject; Stream: TStream;
      StreamSize: integer; Url: string);
    var
      iCurrent: integer;
      sRemote: string;
      i: integer;
    begin
    {$IFDEF BETA}
      icurrent   := 2007051400;
    {$ELSE}
      icurrent   := 2007051300;
    {$ENDIF}
      StreamSize := min(StreamSize, 10);
      sRemote    := StringOfChar(' ', StreamSize);
      Stream.Seek(0, soFromBeginning);
      I := Stream.Read(sRemote[1], StreamSize);
      if I = StreamSize then
        try
          if StrToInt(sRemote) <= iCurrent then
            VistaInformation(Fmain, 'Information', Langue.GetValue('VersionResultat'),
              Langue.GetValue('VersionOk'))
          else
          {$IFDEF BETA}
          if VistaQuestion(Fmain, 'Question', Langue.GetValue('VersionResultat'),
            Langue.GetValue('VersionNewBeta') + '. ' +
            Langue.GetValue('DownQuestion')) then
          {$ELSE}
            if VistaQuestion(Fmain, 'Question', Langue.GetValue('VersionResultat'), Langue.GetValue('VersionNew')
              + '. ' + Langue.GetValue('DownQuestion')) then
          {$ENDIF}
            ShellExecute(Application.Handle, nil,
              PChar('http://okaryn.free.fr/forum/viewtopic.php?id=22'),
              nil, nil, SW_MAXIMIZE);
        except
          VistaErreur(Fmain, Langue.GetValue('Erreur'), Langue.GetValue('VersionResultat'),
            Langue.GetValue('VersionError'));
        end
      else
        VistaErreur(Fmain, Langue.GetValue('Erreur'), Langue.GetValue('VersionResultat'),
          Langue.GetValue('VersionError'));
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TFMain.HttpVersionError(Sender: TObject; ErrorMsg: string);
    begin
        VistaErreur(Fmain, Langue.GetValue('Erreur'), Langue.GetValue('VersionResultat'),
          Langue.GetValue('VersionError'));
    end;

  5. #5
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Points : 352
    Points
    352
    Par défaut Ma solution
    Bonjour voici ma solution sans composants tiers. Comme pour les autres solution, j'ai placé un fichier texte sur le site qui contient le N° de version, une date, 3 champs infos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    procedure TFormMain.MenuNouvelleVersionClick(Sender: TObject);
    var
     TheDownLoadURL : TDownLoadURL;
     cheminVersion,DateVersion,Info1,Info2,Info3, VersionLu : String;
     theIni: TMemIniFile;
    begin
     Try
      cheminVersion := ' Chemin de mon appli '+'version.txt';
      If FileExists(cheminVersion) then
       DeleteFile(cheminVersion);
      TheDownLoadURL := TDownLoadURL.Create(self);
      TheDownLoadURL.Filename := cheminVersion;
      TheDownLoadURL.URL := ' chemin de nom site web' + '/version.txt';
      TheDownLoadURL.Execute;
      If FileExists(cheminVersion) then
      begin
       theIni:=TMemIniFile.Create(cheminVersion);
       VersionLu    := theIni.ReadString('version','numero','');
       DateVersion  := theIni.ReadString('version','date','');
       Info1        := theIni.ReadString('info','info1','');
       Info2        := theIni.ReadString('info','info2','');
       Info3        := theIni.ReadString('info','info3','');
       If VersionLu = DMFonction.RenvoiVersion then
       begin // pas de nouvelle version
         ShowMessage('Votre version est à jour');   
       end
       else
       begin // il existe une nouvelle version
         ShowMessage(info1+#10+#13+info2+#10+#13+info3);
        // 'OU FAIRE AUTRE CHOSE '
       end;
      end;
      finally
       theIni.Free;
       TheDownLoadURL.free;
      end;
    end;

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci à tous, en effet, j'étais arrivé ces lignes (en moins bien) !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Pascal Fonteneau Voir le message
    Bonjour voici ma solution sans composants tiers. Comme pour les autres solution, j'ai placé un fichier texte sur le site qui contient le N° de version, une date, 3 champs infos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    procedure TFormMain.MenuNouvelleVersionClick(Sender: TObject);
    var
     TheDownLoadURL : TDownLoadURL;
     cheminVersion,DateVersion,Info1,Info2,Info3, VersionLu : String;
     theIni: TMemIniFile;
    begin
     Try
      cheminVersion := ' Chemin de mon appli '+'version.txt';
      If FileExists(cheminVersion) then
       DeleteFile(cheminVersion);
      TheDownLoadURL := TDownLoadURL.Create(self);
      TheDownLoadURL.Filename := cheminVersion;
      TheDownLoadURL.URL := ' chemin de nom site web' + '/version.txt';
      TheDownLoadURL.Execute;
      If FileExists(cheminVersion) then
      begin
       theIni:=TMemIniFile.Create(cheminVersion);
       VersionLu    := theIni.ReadString('version','numero','');
       DateVersion  := theIni.ReadString('version','date','');
       Info1        := theIni.ReadString('info','info1','');
       Info2        := theIni.ReadString('info','info2','');
       Info3        := theIni.ReadString('info','info3','');
       If VersionLu = DMFonction.RenvoiVersion then
       begin // pas de nouvelle version
         ShowMessage('Votre version est à jour');   
       end
       else
       begin // il existe une nouvelle version
         ShowMessage(info1+#10+#13+info2+#10+#13+info3);
        // 'OU FAIRE AUTRE CHOSE '
       end;
      end;
      finally
       theIni.Free;
       TheDownLoadURL.free;
      end;
    end;
    Bonjour,
    Je suis intéressé par cette solution, mais comment est déclaré le type TDownLoadURL ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bon j'ai trouvé la réponse et suis vraiment nul. Avec un petit F1 et miracle !
    l'unité "ExtActns".

    Bon en même temps, avec cette aide merdique de Delphi 2005, à chaque fois que je l'utilise, je ne tombe jamais sur ce que je recherche alors j'ai un peu pris l'habitude de ne plus utiliser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 31/03/2010, 10h35
  2. Réponses: 1
    Dernier message: 21/02/2008, 12h00
  3. Réponses: 2
    Dernier message: 01/02/2007, 22h04
  4. Réponses: 13
    Dernier message: 04/12/2006, 11h21
  5. Réponses: 3
    Dernier message: 07/07/2006, 16h47

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