Mise à jour auto par internet

dsamcawfreve Messages postés 8 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 13 janvier 2009 - 4 janv. 2009 à 17:50
dsamcawfreve Messages postés 8 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 13 janvier 2009 - 5 janv. 2009 à 22:11
Bonjour et heureuse année à tous.

Alors voilà :

j'ai un exécutable qui se connecte à une base mysql. Je souhaite faire en sorte que l'exécutable se mette à jour automatiquement lorsque l'utilisateur lance le programme.
Mon idée est celle-ci :
Développer un autre exe qui vérifiera la disponibilité d'un maj, la téléchargera, l'installera et lancera l'executable du programe. pour ceci je compare la version de l'exe en local et sur notre serveur (via internet). Cependant je n'arrive pas à lire la version de l'executable sur notre serveur avant de télécharger ou pas la maj

Pour etre plus clair, voici un exemple

en local le programme principal : dimitri.exe en version 3.0.1.0
en local le programme de vérification d'une maj : update_dimitri.exe

sur notre serveur web se trouvent la maj de dimitri.exe en version 3.0.2.0

lorsque l'utilisateur lance update_dimitri, je souhaite comparer les versions des 2 dimitri.exe et télécharger la version 3.0.2.0 puisqu'elle est supérieure à la version en local. Mais comme indiqué avant, je ne sais pas lire la version du dimitri.exe sur notre serveur web !

Si vous avez une idée merci 1000 fois.
Amicalement.
Dimitri

2 réponses

cs_jeanemarre Messages postés 5 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 24 avril 2010
5 janv. 2009 à 18:13
Bonjour,

Pour la version d'un exe, j'utilise cette fonction :

Function LectureVersion(FileName:String):String;
Var
  Handle   : DWord;
  Info     : Pointer;
  InfoData : Pointer;
  InfoSize : LongInt;
  DataLen  : UInt;
  LangPtr  : Pointer;
  InfoType : string;
Begin
  Result:='';
  //--- On demande la taille necessaire pour stocker les infos
  InfoSize:= GetFileVersionInfoSize(PChar(FileName), Handle);
  If (InfoSize>0) Then begin
    //--- Réservation en mémoire d'une zone de la taille voulue ---
    GetMem(Info, InfoSize);
    try
      //--- Copie dans le buffer des informations ---
      InfoType:='FileVersion';
      if GetFileVersionInfo(PChar(FileName), Handle, InfoSize, Info) then begin
         if VerQueryValue(Info,'\VarFileInfo\Translation',LangPtr, DataLen) then
            InfoType:=Format('\StringFileInfo\%0.4x%0.4x\%s'#0,[LoWord(LongInt(LangPtr^)),
                                         HiWord(LongInt(LangPtr^)), InfoType]);
         if VerQueryValue(Info,PChar(InfoType),InfoData,Datalen) then
             Result:=strPas(InfoData);
      end;
    Finally
      FreeMem(Info, InfoSize);
    End;
  End;
End;

Je pense qu'en cherchant sur ce site, tu devrais trouver d'autres exemples...

Bonne continuation

Jeanemarre
0
dsamcawfreve Messages postés 8 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 13 janvier 2009
5 janv. 2009 à 22:11
Bonsoir et merci de ta réponse.
Comme tu le dis, j'ai fait des recherches et j'ai trouvé des fonctions très proches de la tienne.
Excepté que ces fonctions ne fonctionnent que pour un réseau disponible sur le LAN et pas sur Internet.
Moi je souhaite lire la version de l'exe disponible sur un emplacement comme suit :

(LectureVersion('http://www.domaine.com/appli/monappli.exe')

Voila voila ..suis bien dans la muize
Dimitri
0
Rejoignez-nous