TÉLÉCHARGEMENT DE MISES À JOUR AVEC INDY

Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 - 12 juil. 2006 à 12:17
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 - 3 déc. 2006 à 14:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38530-telechargement-de-mises-a-jour-avec-indy

Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
3 déc. 2006 à 14:11
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
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
2 déc. 2006 à 20:19
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 :)

@+ !
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
25 juil. 2006 à 13:13
Ba justement t'avais le temps de le faire alors :-D ... entre deux jaunes ...
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
25 juil. 2006 à 11:21
Je reviens de Marseille !
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
25 juil. 2006 à 11:09
Alors Matt261 .. tu implémente avec Wininet ou ta baissé les bras !?? :-D
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
25 juil. 2006 à 09: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
pkzip Messages postés 19 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 25 juillet 2006
25 juil. 2006 à 09:57
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 !
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
25 juil. 2006 à 09:51
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
pkzip Messages postés 19 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 25 juillet 2006
24 juil. 2006 à 10:11
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...
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
19 juil. 2006 à 09:45
@ 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.
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
19 juil. 2006 à 09:18
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 ?
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
19 juil. 2006 à 09:16
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
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
13 juil. 2006 à 17:25
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
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
13 juil. 2006 à 15:14
Je n'y avait même pas pensé Forman... ;) .
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
13 juil. 2006 à 12:22
oula t'es allé la chercher loin la blague, j'ai bloqué un moment :-D
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
13 juil. 2006 à 12:12
Depuis quand Vin Diesel détecte les bugs de sécurité (lire la capture!) ^^
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
13 juil. 2006 à 11:21
ha oui merde j'tavais dit que je te ferais quelque chose pour ta source, je m'y met maintenant ... :-)
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
13 juil. 2006 à 09:37
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
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
13 juil. 2006 à 01:22
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

@+
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
12 juil. 2006 à 20:11
C'est juste un exemple en même temps, libre à toi d'y rajouter ce que tu as envie :/
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
12 juil. 2006 à 19:57
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 ?
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
12 juil. 2006 à 18:06
+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 ;)
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
12 juil. 2006 à 15:59
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 :).
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 juil. 2006 à 14:33
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 ... ;-)
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
12 juil. 2006 à 14:24
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 ;-)
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 juil. 2006 à 12:51
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 :-)
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 juil. 2006 à 12:45
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 ;-)
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
12 juil. 2006 à 12:17
Si vous avez des commentaires, des questions, n'hésitez pas !
Rejoignez-nous