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

 Delphi Discussion :

mise a jour par internet


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut mise a jour par internet
    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

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    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.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    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);
    ...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut merci a vous
    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

  5. #5
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    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.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut
    merci ouiouioui pour le code php je suis ok il est simple a ajouter a une page php ,mais comment je le li de mon programme ?

    Citation Envoyé par ouiouioui Voir le message
    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.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    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.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut ok
    ok je test pour le téléchargement
    Citation Envoyé par GoustiFruit Voir le message
    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.

  9. #9
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    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é

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut ok
    ok super pour moi le probleme est résolu.MERCI

    Citation Envoyé par sjrd Voir le message
    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é

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par sjrd Voir le message
    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:

    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;
    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
    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;

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    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:

    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;
    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
    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

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Ah je me souviens de cet article, lu il y a trèèès longtemps :-)
    Alors, combien tu as déboursé dans cette affaire ?

  14. #14
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    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 !
    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

  15. #15
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    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.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut merci
    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

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

Discussions similaires

  1. [ODBC] [Access] Mise à jour par internet
    Par cleminute dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/08/2009, 14h26
  2. Déploiement et mises à jour par internet
    Par sk8world dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 03/06/2009, 15h29
  3. mise à jour par internet
    Par Pigwi dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/06/2007, 15h23
  4. Réponses: 2
    Dernier message: 20/11/2006, 15h57
  5. Mise à jour par internet
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 29/10/2005, 09h40

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