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
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
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.
Merci,
j'ai essayer sans réussite mais sans trop incister.
Je retente la chose plus sérieusement cette fois
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;
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;
Merci à tous, en effet, j'étais arrivé ces lignes (en moins bien) !
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager