begin process at 2010 02 09 21:13:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > TÉLÉCHARGEMENT DE MISES À JOUR AVEC INDY

TÉLÉCHARGEMENT DE MISES À JOUR AVEC INDY


 Information sur la source

Note :
8,83 / 10 - par 6 personnes
8,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :téléchargement, indy, download, http, internet Niveau :Débutant Date de création :12/07/2006 Vu / téléchargé :6 598 / 1 446

Auteur : Matt 261

Ecrire un message privé
Site perso
Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voila un client de mise à jour réalisé grâce à Indy 9 (Delphi 7) et qui (peut) fonctionne avec mon écran de veille ClubinScr. (Mais pas la peine de l'avoir pour faire marcher ce prog, il suffit de changer certaines valeurs).

Le principe est simple, le logiciel télécharge un fichier ini présent sur un serveur, lit la version du logiciel ainsi qu'un éventuel commentaire sur la mise à jour. Ensuite, on compare la version trouvée dans le fichier ini à celle trouvée dans la BdR est s'il existe une version plus récente du logiciel, on le télécharge sinon, on quitte.


 Conclusion

Pour le moment il n'y a pas de bugs connus mais si vous en trouvez ou si le code n'est pas très propre, prévenez moi, c'est grâce à ça que l'on peut progresser ;-).

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture GÉNÉRATEUR DE CADAVRES EXQUIS
Source avec Zip CONVERTA - CONVERTISSEUR WMA ET WAV ->MP3
Source avec Zip Source avec une capture ECRAN DE VEILLE CLUBINSCR V 2.1

 Sources de la même categorie

Source avec Zip BASE64/BASE64URL ENCODE/DECODE par f0xi
Source avec Zip AFFICHAGE DES INFODFS par fbalien
Source avec Zip Source avec une capture INTRA MESSENGER - DELPHI par keket
Source avec Zip CODAGE DÉCODAGE PDU 7BITS par AccessToYou
Source avec Zip Source avec une capture SIMPLEWEBBROWSER par cantador

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LOGICIEL INTERRUPTEUR MONDIAL USB par ced55957
Source avec Zip Source avec une capture PARSER D'EN-TÊTE HTTP par ILP
Source avec Zip Source avec une capture DOWNLOADS HTTP EN MULTITHREAD AVEC INDY par JeremyLecouvert
AFFICHER, TELECHARGER DES IMAGES SE TROUVANT SUR INTERNET DA... par Mokost
Source avec Zip Source avec une capture WEBCAM+ MICROSERVEUR HTTP = WEBCAM IP (INDY 9 ET INDY 10) par jlen100

Commentaires et avis

Commentaire de Matt 261 le 12/07/2006 12:17:05

Si vous avez des commentaires, des questions, n'hésitez pas !

Commentaire de elguevel le 12/07/2006 12:45:35

Bon programme.

Par contre quelques améliorations :

- Tu peux déclarer ta fonction externe en 1 seule ligne de cette façon :

function InternetGetConnectedState(lpdwFlags: LPDWORD;dwReserved: DWORD): BOOL; stdcall; external 'wininet.dll' name 'InternetGetConnectedState';

- Tu fait appel à une fonction de l'API windows "InternetGetConnectedState" de la librairie "wininet.dll". Dans ce cas j'aurai programmé l'application avec cette librairie, celà aurai pu t'eviter l'utilisation de Indy (mais çà c'est juste si tu veux eviter d'utiliser des composants).

- Et je ne voit pas de méthode "Free" correspondant à tes différentes instanciations de classes ( "Fil:=TMemoryStream.Create",  "Ini := Tinifile.Create", et d'autres ... )

- "Form1.Label1.Caption:=..." => tu est dans ton objet Form1 donc tu peux n'ecrire que "Label1.Caption=..." (tu as fait çà sur d'autres lignes)

- Si tu veux tu peux évité d'associer une variable objet à une instanciation.

Tu fais :

Registre := TRegistry.Create;

    With Registre Do
      Try
        ...

Mais tu peux faire directement :

With TRegistry.Create Do
Begin
  Try
   ...
  Finally
    Free;
  End;
End;

Voila grossièrement ce que je viens de voir au niveau code, sinon j'ai pas Indy sur ma version de delphi je peux donc pas l'executer.

@+, Bon Code ;-)

Commentaire de elguevel le 12/07/2006 12:51:07

sinon c'est util tout çà ?

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, OleCtrls, SHDocVw, XPMan, ComCtrls, Shellapi,
  IdIntercept, IdLogBase, IdLogStream, DateUtils, IdAntiFreezeBase,
  IdAntiFreeze, jpeg, ExtCtrls, Registry, Inifiles;

Je trouve que çà fait bcp, je pense que l'on peux améliorer :-)

Commentaire de Matt 261 le 12/07/2006 14:24:47

Merci pour ton commentaire Elguevel. POur les uses, bein à partir du moment ou tu mets un composant Indy, tu as toute une ribembelle d'unités qui se rajoutes :( .
Je vais revoir le code. Encore Merci ;-)

Commentaire de elguevel le 12/07/2006 14:33:47

Ba de rien, si tu veux j'peux te réecrire mes améliorations et te les filer.

Pour ce qui est de "WININET" j'avais fait plusieurs sources à ce sujet ; çà te permet via l'API windows et en quelques fonctions d'avoir accès à un serveur FTP puis downloader ou uploader ce que tu veux dessus.C'est quand meme plus leger que les X composants Indy compilé avec l'appli.

PS : Sinon graphiquement çà l'air très évolué, bravo.

Aller continue comme çà, et bonne mise à jour ... ;-)

Commentaire de Matt 261 le 12/07/2006 15:59:51

Oui je veux bien Elguevel parcequ'on va dire que je me suis rééllement dit il y a quelques jour : Tiens si j'essayais Indy donc je veux bien que tu me réécrive quelques trucs parceque sinon, je ne vois pas comment faire pour apprendre ;-) .

Pour l'aspect graphique : content que ça te plaise :).

Commentaire de John Dogget le 12/07/2006 18:06:24

+1 pour l'aspect graphique :)

Sinon, j'ai une question plus généraliste : pourquoi tu utilises la BDR ?

On sait tous que cette BDR s'encrasse au fil du temps, surtout quand les devs l'utilisent mal (ce qui est très souvent le cas), des clés sont crées et les désinstalleurs font très mal leur travail. Résultats on se retrouve avec des clés orphelines qui poluent le système.

Alors qu'avec un simple fichier de config dans le dossier d'installation de l'executable serait tellement plus simple : tu effaces le dossier (plus besoin du programme) = tu effaces tout ce qui avaient rapport à l'executable. Je trouve ça nettement plus propre et simple comme méthode ...

C'est pas vraiment dirigé contre ton code en particulier, c'est une constatation générale :).

Pour le reste ton code me plait bien, je te mets 8/10 ;)

Commentaire de shining le 12/07/2006 19:57:58

et sans Indy ça donne quoi ?
http://www.swissdelphicenter.ch/torry/showcode.php?id=889,
mais là ton updateur ne permet pas à l'utilisateur de choisir se qu'il veut télécharger c'est un peu gênant, car imagine que tu as une mise à jour de 25Mo et qu'il est en modem classique 56k.., et le pire il est impossible d'annuler le téléchargement mdr ^^ tu ne serais pas de la famille de microsoft par hazard ?

Commentaire de John Dogget le 12/07/2006 20:11:54

C'est juste un exemple en même temps, libre à toi d'y rajouter ce que tu as envie :/

Commentaire de Francky23012301 le 13/07/2006 01:22:06

Salut Matt,

Le design est sympas.

En ce qui concerne Indy : evidemment dans les uses tu as une ribambelle d'unités. qu'indy incruste Du reste, je me demande si elles sont toutes utiles.

La technique proposée par Elguevel est valable. Maintenant c'est un choix : s'allourdir de quelques octets pour un code simple  ou se casser la tete pour gagner quelques octets. Sinon une technique sans utiliser de composants, consiste à faire appel au Shell via Delphi ( valable aussi pour les mails).

Je te mets 9/10 : c'est bien coder et je trouve que c'est sympas de proposer une méthode pour réaliser une mise à jour d'un soft. Je te félicite

@+

Commentaire de Matt 261 le 13/07/2006 09:37:34

Merci a tous pour vos commentaires.

@ Shining : c'est grace au lien que tu donnes juste au dessus que j'ai commencé la programmation Internet.
Je vais rajouter une messageBox : "Une mise à jour est disponible, voulez-vous la télécharger + taille du soft".

@ John : Il est vrai que la BdR devient de plus en plus lourde à cause des désinstallateurs qui virent mal les valeurs mais la comme je me sers des valeurs enregistrés pour mon écran de veille qui sont dans la BdR... Mais après, en modifiant un tout petit peu le code, vous pouvez utiliser un INI.

Encore merci pour vos commentaires :) Je vais faire une MaJ avec tout ce que vous m'avez dit ;-)

@+
  Matt

Commentaire de elguevel le 13/07/2006 11:21:15

ha oui merde j'tavais dit que je te ferais quelque chose pour ta source, je m'y met maintenant ... :-)

Commentaire de Forman le 13/07/2006 12:12:47

Depuis quand Vin Diesel détecte les bugs de sécurité (lire la capture!) ^^

Commentaire de elguevel le 13/07/2006 12:22:00

oula t'es allé la chercher loin la blague, j'ai bloqué un moment :-D

Commentaire de Matt 261 le 13/07/2006 15:14:06

Je n'y avait même pas pensé Forman... ;) .

Commentaire de shining le 13/07/2006 17:25:37

Matt261 à dit:
"Je vais rajouter une messageBox : "Une mise à jour est disponible, voulez-vous la télécharger + taille du soft"."

là c'est parfait ;) j'ai mis 9/10 car c'est du bon boulot

Commentaire de FreDelph le 17/07/2006 16:39:59

En complément puisqu'on est sur le sujet je viens d'ajouter les sources de la méthode que j'utilise :
http://www.delphifr.com/code.aspx?ID=38652

Commentaire de Also know as le 19/07/2006 09:16:07

Très sympa comme source ca :)

Cela pourra servir pourra servir pour mes prochaines applications, merci à toi, qui plus est le design est agréable.

Merci beaucoup

Commentaire de Also know as le 19/07/2006 09:18:48

Ah si une chose, j'ai pu remarque rapidement dans le code que tu faisais ceci :

Form1.Top:=(Screen.DesktopHeight-Form1.Height) - 30;

Mais moi ma Barre des tâches utilise 2 lignes, donc j'aimerais savori s'il n'éxistait pas un moyen pour connaitre la taille de la Barre des tâches ?

Commentaire de Matt 261 le 19/07/2006 09:45:27

@ Also : Merci ! :D il y a un moyen en effet de connaitre la taille de la barre des taches. Donc pour la prochaine MàJ : "Voulez vous télécharger la Maj?" et la taille de la barre.

Commentaire de pkzip le 24/07/2006 10:11:46

sympa comme source...
seul bémol pour moi la fonction : Detection_Connexion.
Si tu es derrière un rooteur ADSL, il te renvoit que tu es connecté même si ton routeur est "disconnect". Il renvoit "connecté" car le lien LAN entre ta machine et le rooteur est bon mais ce n'est pas pour autant que tu as une connexion internet...
perso derrière cette fonction moi je fais 1 ping de vérif (1 sur google.fr et s'il marche pas 1 sur yahoo.fr) normalement y'a forcément un des deux qui marche et qui te garanti ta connexion internet...

Commentaire de Matt 261 le 25/07/2006 09:51:18

Merci pkZip, normalement, ma fonction verifie si le pc est connecté à internet ET sur ton routeur/modem sauf erreur de ma part...

Je ne vais pas tarder à poster la mise à jour, il y a encore quelques petits réglages (et après une version sans compos).

@+
Matt

Commentaire de pkzip le 25/07/2006 09:57:16

Cela fonctionne quand ton modem/rooteur est configurer en modem mais pas lorsqu'il est en rooteur pur ! enfin chez moi c'est le cas ! même avec le rooteur en disconnect j'ai un retour connecté dû au link du LAN...

Cela n'enlève rien à l'intérêt du source ! ^^
D'ailleur, je l'ai ré-implémenté en partie dans une de mes appli... donc Merci !

Commentaire de Matt 261 le 25/07/2006 09:59:59

Je vais voir si je peux trouver un truc pour les routeurs pur mais n'en ayant pas encore (ça va pas tarder) je ne pourrais pas tester... En tous cas, ça fait plaisir de savoir que ça peut servir à des gens :D

Commentaire de elguevel le 25/07/2006 11:09:36

Alors Matt261 .. tu implémente avec Wininet ou ta baissé les bras !?? :-D

Commentaire de Matt 261 le 25/07/2006 11:21:55

Je reviens de Marseille !

Commentaire de elguevel le 25/07/2006 13:13:28

Ba justement t'avais le temps de le faire alors :-D ... entre deux jaunes ...

Commentaire de Also know as le 02/12/2006 20:19:12

Oulà toujours pas eu de mise à jour depuis tout ce temps :p

Bon vis à vis pour connaitre la taille de la barre des tâches moi je fais comme ceci :

  Form1.Top := GetSystemMetrics(SM_CYFULLSCREEN) - Height + 20;
  Form1.Left := GetSystemMetrics(SM_CXSCREEN) - Width;

Le (+20) ça sert à toucher pile poil la barre des tâches ensuite on est libre de faire comme on veut :)

@+ !

Commentaire de Matt 261 le 03/12/2006 14:11:18

Oui, je sais Also. La mise à jour est sur mon ancien PC et comme depuis Juin je n'ais plus touché à Delphi par manque de temps... Mais ça viendra.
Merci pour ton astuce.

@+
Matt

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Indy HTTP Server [ par guiguikun ] Bonjour,comment puis-je faire pour désactiver les msgbox d'erreur du composant Indy HTTP Server ?un peu comme ErrorCode = 0 avec TServerSocket HTTP Download [ par ToneR ] Comment récupérer la taille d'un fichier qu'on a envie de télécharger? Genre un peu à la flashget ou getright...Comment savoir si le lien est valide r Pause pour un téléchargement [ par Also know as ] Bonjour, je suis en train de créer un programme pour télécharger un fichier et ce fichier est parfois gros (+100 Mo). J'aimerais savoi Debit download / upload d'une ligne internet [ par maxkweeger ] bonjour,Pourriez vous m'eguiller sur la creation d'un soft qui pourrer mesurer le debit d'une ligne internet toute les secondes en upload et download HTTP Download ? [ par Kaiser ] Comment faire pour télécharger un fichier d'un site ?merci Problème de thread avec un idhttp (indy 10) [ par ACHPI32 ] Hello,J'essaye de faire un petit téléchargeur avec le composant tidhttp. Tout fonctionne sauf... l'interruption en cours de téléch IdHTTPServer depuis internet [ par ytillang30400 ] Indy 9 :Je place un composant IdHttpServer et dans l'évènement OnCommandGet, j'entre par exemple le code : AResponseInfo.ContentText := Problème TIdHttp.get (Indy) [ par jenlain62 ] Bonjour,J'ai un problème avec un composant Indy TIdHttp.Lorsque j'essaie de faire un GET des URL suivantes :http://streams.frequence3.net/mp3-192 FileExist sur internet (HTTP) [ par intik ] Bonjour Dans mon programme je regarde si un fichier existe (en réseau et si oui j'ouvre son contenu texte dans un showmessage)j'aimerai faire la meme indy download [ par ced55957 ] bonjours à tous voila je voudrais recuperer un fichier "test.txt" sur mon serveur ftp avec un indy j'ai écris le bout de programme pour me connecter


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales