bonjour je voudrais un petit renseignement .Comment faire pour que mon programme affiche qu'il y a une nouvelle mise a jour sur internet .comme on le vois souvent sur les gros programme
bonjour je voudrais un petit renseignement .Comment faire pour que mon programme affiche qu'il y a une nouvelle mise a jour sur internet .comme on le vois souvent sur les gros programme
Tu dois tout d'abord à chaque livraison d'application définir un N° de versions si ce n'est pas déjà fait. Ensuite tu crées un webservice par exemple qui te retournes le dernier n° de version disponible en téléchargement. Tu appelles ce webservice à chaque ouverture d'appli et tu le compares avec la version d'appli du client. Et la t'affiche ce que tu veux en fonction des cas.
Dans SIPInside, j'utilise l'URL suivante pour connaître la version en ligne
http://tothpaul.free.fr/SIPInside.php?version
le début du code PHP étant le suivant
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <? $last='SIPInside 0.4.9a (2009-24-03)'; if ($_SERVER['QUERY_STRING']=='version') die($last); ...
merci mais je me suis surement mal expliqué.
voila j'ai fais un petit programme avec delphi, et j'ai aussi un serveur sur le net .je me suis dit que je peux par une connexion sur ma table mysql distante ,faire ajouté sur mon programme delphi "nouvelle mise a jour"
mais je ne vois pas comment et je ne trouve rien sur les connexions distante.
merci a vous
tu as des compos ici : http://www.torry.net/pages.php?id=56&sort=Date
si tu as la JVCL regarde TJvProgramVersionCheck - TJvProgramVersionDatabaseLocation
une connexion a une base mysql directement implique d'avoir des droit de lecture seul et une base juste pour sa, selon la méthode déployer des driver mysql avec ton application c'est moyen selon moi.
une page php comme Paul TOTH le suggère c'est le mieux.
moi ma page php renvoie un xml qui contient tout pour télécharger la mise à jour.
Je mets un simple fichier ini sur mon serveur, avec différentes sections par logiciel et sous chaque section le numéro de la dernière version, éventuellement avec d'autres clés pour des informations supplémentaires (description, changelog, ...). Il suffit de télécharger le fichier, de l'assigner à un TIniFile et d'en faire ce que tu veux.
Merci de vous concentrer sur la question posée
tarmo57 a bien compris qu'il faut une page dynamique sur son site qui donne juste la version et quelques infos, en INI/texte/XML peu importe.
Ce qui l'intéresse maintenant c'est savoir comment, dans son programme Delphi, récupérer le contenu de cette page dynamique, en retirer les infos importantes, puis lancer réellement la mise à jour.
----------------
Pour ma part, j'utilise TIdHTTP, distribué avec Delphi, hyper simple pour bêtement télécharger une URL.
Après, selon le format utilisé (INI, texte, XML), tu utilises une routine ad hoc pour extraire le numéro de version, que tu compares avec le numéro de version built-in de ton programme.
S'il est plus grand, un petit MessageBox avec un lien vers le site de téléchargement, et c'est gagné
A moins que tu ne distribues également des versions alpha/beta/RC/... en plus d'une version "officielle" stable, il n'est pas nécessaire de vérifier si un numéro est plus grand que l'autre, il suffit que les chaînes soient différentes pour afficher qu'une nouvelle version est dispo !
Moi j'utilise ce code pour télécharger un fichier ini présent sur mon serveur:
Et ensuite je fais un truc comme ça pour vérifier si nouvelle version existe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 uses WinInet; function TelechargerFichier(URL, Dest: string): boolean; begin try DeleteUrlCacheEntry(PChar(URL)); Result := (URLDownloadToFile(nil, PChar(URL), PChar(Dest), 0, nil) = 0) and FileExists(Dest); except Result := False; end; 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 bVerifOK := TelechargerFichier(sFichierDist, sFichierTemp); if bVerifOK then begin IniTemp := TMemIniFile.Create(sFichierTemp); { Version sur le serveur } s1 := IniTemp.ReadString('MySoft', 'Version', ''); { Url de téléchargement } s2 := IniTemp.ReadString('MySoft', 'DownloadUrl', ''); // Enregistrement de la date de dernière vérification // ... IniTemp.Free; DeleteFile(sFichierTemp); // Affichage message nouvelle version + lien téléchargement // ... end;
oui, par contre évite MySoft
Ah je me souviens de cet article, lu il y a trèèès longtemps :-)
Alors, combien tu as déboursé dans cette affaire ?
Je trouve que c'est un peu réducteur. Et perso ça ne conviendrait pas, car quand je développe la version suivante, j'encode déjà le nouveau numéro de version (qui est donc plus grand que celui sur le Web), de manière à ce que les fichiers générés portent le bon numéro, entre autres raisons.
Pour comparer deux chaînes numéro de version de manière intelligente, j'ai codé une fonction CompareVersion. Celle-ci compare des numéros de version de la même manière que apt-get sous Debian/Ubuntu. Parmi les résultats intéressants de cet algorithme :
1.0~alpha13 < 1.0~beta9 < 1.0~beta10 < 1.0~rc1 < 1.0 < 1.0.1 < 3.0 < 1:2011
Si je peux y aller de mon petit commentaire. Il faut cependant faire attention à ce type de mise à jour d'un client via un download à partir d'un site internet.
Je m'explique, nous distribuons un applicatif fonctionnant en réseau impliquant que plusieurs clients d'un même site peuvent-être simultanément connectés. Si la nouvelle version que nous offrons n'implique pas de mise à jour de la base de données alors la mise à jour automatique peut être envisagée.
En revanche, dans le cas contraire la mise à jour peut s'avérer problématique.
Pour cela nous avons mis au point le stratagème suivant. Seule, une version installée sur le serveur scrupte le site web afin de déterminer si une mise à jour est disponible.
Le cas échéant, celle-ci est downloadée, dans un répertoire temporaire.
Un service scrupte les connexions des utilisateurs à la base de données et détermine le moment le plus propice pour installer la nouvelle version sur le serveur. Les quelques clients encore connectés sont déconnectés automatiquement.
A l'issue de cette première installation, la base de données est alors mise à jour. Dès qu'un client se connecte, le soft vérifie le numero de version publiée sur le réseau interne avec sa propre version, puis le cas échant indique à l'utilisateur qu'une mise à jour va se produire sur sa station automatiquement.
Merci tous pour votre participation ,moi pour mes mises à jours j'ai choisi de faire :
je télécharge un fichier txt avec le N° de version
je compare avec le N° de version de mon programme
Si le N° est différant j'affiche une phrase "nouvelle mise à jour "
et un lien qui ouvre une form avec un composent browser avec la page de téléchargement.
dans les mises à jour je ne touche pas aux tables
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