| 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto | |
|
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 19:10 | |
| Nouvelle version: KGF.dll V2.33 du 14/05/2013Nouveauté: 2 nouvelle fonctions: res% = dll_call1("GetActualVersions",adr(fic$)) res% = dll_call2("DownloadFile",adr(url$),adr(file$))La première fonction crée un fichier texte contenant une ligne par module actuellement concerné par la mise à jour automatique. Pour l'heure, ce sont KGF.dll et BDR.dll. La seconde fonction télé_charge un fichier à partir d'une URL donnée, et l'enregistre sous le nom passé en paramètre. Modules modifiés: KGF.dll KGF_SUB.bas KGF.chm, KGF.doc, KGF.pdfEt voici comment on s'en sert pour mettre ces modules à jour par programme: - Code:
-
' autoupdate.bas
dim res%, vKGF$, vBDR$ dim fic$ : fic$ = "versions.txt" dim url_KGF$ : url_KGF$ = "http://klaus.panoramic.voila.net/versions/KGF.dll" dim url_BDR$ : url_BDR$ = "http://klaus.panoramic.voila.net/versions/BDR.dll" dim temp$ : temp$ = "nouveau.dll"
alpha 11 : top 11,20 : left 11,10 : caption 11,"Version locale" memo 1 : top 1,40 : left 1,10 alpha 21 : top 21,20 : left 21,210 : caption 21,"Version actuelle" memo 2 : top 2,40 : left 2,210
KGF_initialize("KGF.dll") BDRinitialize("..\BDR\BDR.dll")
GetActualVersions(fic$) file_load 1,fic$
KGFdllversion() item_add 2,KGFdllversion$ vKGF$ = KGFdllversion$
BDRversion(vers$) item_add 2,BDRversion$ vBDR$ = BDRversion$
' *** les lignes suivantes peuvent être remplacées par ' if vKGF$<>item_read$(1,1) then update_KGF("KGF.dll") ' si BDR.dll n'a pas été chargée if vKGF$<>item_read$(1,1) ' *** les lignes suivantes peuvent être remplacées par ' update_KGF("KGF.dll") message "Il faut mettre KGF.dll à jour " DownloadFile(url_KGF$,temp$) UnloadDLL(BDR_handle%) dll_off if file_exists("KGF.dll") then file_delete "KGF.dll" file_rename temp$,"KGF.dll" end_if
if vBDR$<>item_read$(1,2) message "Il faut mettre BDR.dll à jour " DownloadFile(url_BDR$,temp$) UnloadDLL(BDR_handle%) dll_off if file_exists("BDR.dll") then file_delete "BDR.dll" file_rename temp$,"BDR.dll" end_if
end
' *** procédure pour mise à jour de KGF.dll sub update_KGF(KGF$) dim_local url_KGF$ : url_KGF$ = "http://klaus.panoramic.voila.net/versions/KGF.dll" dim_local temp$ : temp$ = file_extract_path$(KGF$) if right$(temp$,1)<>"\" then temp$ = temp$ + "\" temp$ = temp$ + "nouveau.dll" if label("update_KGF_error")=0 then label update_KGF_error on_error_goto update_KGF_error DownloadFile(url_KGF$,temp$) dll_off : free KGF_initialize : free KGF_res% if file_exists(KGF$) then file_delete KGF$ file_rename temp$,KGF$ off_error_goto KGF_initialize(KGF$) exit_sub update_KGF_error: off_error_goto message "Erreur en mise à jour de KGF.dll" end_sub
#INCLUDE "KGF_SUB.bas"
Il faut bien sûr adapter les chemins pour les commandes FILE_DELETE et FILE_RENAME ainsi que pour la fonction FILE_EXISTS, selon vos configurations. Note:La fonction DownloadFile peut être facilement utilisée pour créer un mécanisme de mise à jour automatique pour n'importe lequel de vos projets Panoramic. Elle peut aussi servir à télécharger n'importe quel fichier de n'importe quel site, à condition de connaître l'URL.
Dernière édition par Klaus le Mar 14 Mai 2013 - 21:41, édité 1 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 14 Mai 2013 - 19:33 | |
| Bon je vais faire une pose dans "Mon Ecurie" pour me mettre à jour et étudier la bestiole... J' ai une petite suggestion pour BDR.dll Une petite fonction pour additionner des valeurs de champs... imaginons un cheval avec une donnée "Gains en course" et des Résultats en course... la petite fonctions additionne les gains de chaque course en relation avec le cheval dans "Gains en course" ... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 19:43 | |
| @Ygeronimi: BDR ne connait pas les "champs" dans les données des objets. Ce sont des sous-divisions propres à chaque application. Il que tu réalises cela avec une procédure dans ton propre programme. @tous: la nouvelle procédure DownLoadFile peut également servir à télé-charger le code HTLM de n'importe quelle page dont on connait l'URL. Voici un exemple qui charge le code de la page d'accueil de mon site: - Code:
-
dim fic$ : fic$ = "site.html" dim url$ : url$ = "http://klaus.panoramic.voila.net/"
KGF_initialize("KGF.dll")
DownloadFile(url$,fic$)
message "fini"
end
#INCLUDE "KGF_SUB.bas"
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 14 Mai 2013 - 19:58 | |
| Ok Klaus,message bien reçu... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 20:10 | |
| Excellent ça, la mise à jour auto Voyons voir ça ... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 20:53 | |
| Chez moi je récupère une erreur 1, en fait j'appelle directement la dll: res% = DLL_CALL2("DownloadFile",ADR(url$),ADR(fic$)) avec l'url donnée ci-dessus... Je dois rater quelque chose. Bizarre, je ne vois pas cette fonction dans KGF.pdf... du 14/05. Mais je l'ai bien dans KGF.dll, vérification faite. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 21:45 | |
| J'ai retesté tel quel - pas de problème. Le code - Code:
-
dim fic$ : fic$ = "site.html" dim url$ : url$ = "http://klaus.panoramic.voila.net/"
KGF_initialize("KGF.dll")
DownloadFile(url$,fic$)
message "fini"
end
#INCLUDE "KGF_SUB.bas"
marche bien. Et pour la doc, que ce soit le fichier chm, doc ou pdf, la fonction est documentée dans les "Fonctions diverses", à la fin de la liste. EDIT J'ai rechargé la doc dans MyDrive, à tout hasard... EDIT Essaie de recharger KGF.dll - j'ai eu un quiproquo au début qui a fait que pendant quelques minutes, une version avec un bug a été postée, remplacée rapidement. La version actuelle en tout cas marche. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 22:25 | |
| J'ai rechargé, et toujours la même erreur, mais ça vient sûrement de chez moi (problème de connexion au site ?). Voilà mon code: - Code:
-
dim i%, f$ : f$ = "c:\temp\site.html" dim url$ : url$ = "http://klaus.panoramic.voila.net/" DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"
i% = DLL_CALL2("DownloadFile",ADR(url$),ADR(f$))
print "Fin: CR = "+STR$(i%) end Là pour vérification, je faisais un petit programme qui extrait le nom des dlls de KGF.dll et les classe par ordre alphabétique, pour voir si j'ai bien tout, j'en trouve 308 (c'est un gadget): - Code:
-
' Liste des DLLs de KGF.dll extraite de KGF.dll et triée DIM i%, k%, d$, f$, a$, b$, n% d$ = "C:\PANORAMIC\KLAUS\DLLs\KGF.dll" f$ = "C:\PANORAMIC\KLAUS\DLLs\List_Dll.txt": ' liste triée des dlls DLIST 1 FILEBIN_OPEN_READ 9, d$: a$ = STRING$(FILEBIN_SIZE(9)," "): FILEBIN_CLOSE 9 DLL_ON d$
i% = DLL_CALL2("ReadBinaryFileToString",ADR(d$),ADR(a$)) DLL_OFF k% = INSTR(a$, CHR$(8)+CHR$(0)+"KGF.dll"+CHR$(0)): k% = k% + 10 a$ = MID$(a$, k%, LEN(a$)-k%+1) k% = INSTR(a$, CHR$(0)+"xxx"+CHR$(0)) a$ = LEFT$(a$, k%-1) k% = INSTR(a$, CHR$(0)) WHILE k% > 0 b$ = LEFT$(a$, k%-1): a$ = MID$(a$, k%+1,LEN(a$)-k%) k% = INSTR(a$, CHR$(0)) ITEM_ADD 1, b$: n% = n% + 1 END_WHILE ITEM_ADD 1, a$: n% = n% + 1 SORT 1 FILE_SAVE 1, f$ PRINT "Terminé, "+STR$(n%)+" dlls trouvées." end | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 22:36 | |
| Chez moi, ton code marche: il retourne 0 et crée bien le fichier dans c:\temp\.
A tout hasard, j'ai recopié KGF.dll. Recharge-la et réessaie... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 22:50 | |
| bon, j'ai rechargé, mais même résultat ! Merci quand même Klaus, mais ne te casse pas la tête, c'est sûrement quelque chose chez moi, dans mon système ou ma box, une interdiction quelconque qui doit bloquer la connexion. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 22:58 | |
| Il ne peut rien y avoir qui bloque. L'adresse URL est celle de mon site, la même que celle qui est utilisée par le bouton "www" en bas de mes posts. Et si tu modifies le petit code ainsi: - Code:
-
dim i%, f$ : f$ = "c:\temp\site.html" dim url$ : url$ = "http://klaus.panoramic.voila.net/" DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"
i% = DLL_CALL2("DownloadFile",ADR(url$),ADR(f$)) full_space 0 memo 1 : full_space 1 bar_both 1 file_load 1,f$
end tu as une vue pleine page sur le code HTML. De là chercher les href= et src= pour pomper des images ou suivre les liens d'un site... Pour ton problème, as-tu essayé de vider ton cache internet ? Cela arrive à d'autres, en particulier sous Chome, mais pas seulement. Souvent, il a l'impression qu'il s'agit du même fichier et ne le recharge pas, en fait. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 14 Mai 2013 - 23:00 | |
| Petit problème avec W7
Je m'explique :
Tout ce qui concerne Panoramic est placé ( chez moi ) en :"C:\Program Files (x86)\Panoramic Editor V 0.9.24" ...pour les dlls un sous dossier est placé à cette endroit.
Si je compile le code et le place dans ce dossier ( en ayant changé les chemins ), j'ai droit à une erreur ligne 118 Si je recrée un dossier avec les dlls et le code compilé sur le bureau, pas de souci, cela fonctionne.
Cela vient du fait que pour écrire dans "C:\Program Files (x86)", W7 demande une autorisation et par conséquent bloque la création de "Temp$" et de "fic$" ( nouveau.dll et version.txt ). | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 23:09 | |
| Je ne suis pas sûr que ce soit une bonne idée de mettre tes sources et utilitaires sous Program Files... pourquoi tu ne te crées pas un répertoire indépendant, à toi ? en laissant l'éditeur sous Program Files, c'est ce que je fais, Program Files est un répertoire plus ou moins protégé.
@Klaus, pareil, je lance ton code, mais j'ai une erreur ligne 9: pas de fichier à charger...
Dernière édition par JL35 le Mar 14 Mai 2013 - 23:13, édité 2 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 23:10 | |
| Eh bien, il suffit de changer les autorisations d'accès sur ce dossier ! | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 14 Mai 2013 - 23:22 | |
| Ben...je vais revoir cela car le petit code est bien pratique pour mettre les dlls à jour rapidement sans jouer avec la corbeille et les copier/coller
Edit :
@ Klaus,
Pas si facile que çà chez w7 ce sont les droits administrateur and Co
Dernière édition par ygeronimi le Mar 14 Mai 2013 - 23:24, édité 1 fois | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 23:23 | |
| Pour le problème de cache, je ne vois pas trop, il devrait au moins me rendre un résultat, même non rafraichi (je suis sous Firefox). D'ailleurs je ne sais pas le vider ( ), mais je quitte et je relance, ce qui doit le faire, avec un résultat identique. @ygeronimi entièrement d'accord, à la cadence où KGF.dll est actualisé ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mar 14 Mai 2013 - 23:29 | |
| Dans Firefox, tu cliques sur "Options", puis "Avancé", onglet "Réseau". Tu obtiens cette fenêtre: Et là, tu cliques sur les 2 boutons "Vider maintenant", puis tu recharges la DLL. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 15 Mai 2013 - 0:12 | |
| dès que je mets le code de mise à jour ailleurs que dans un dossier sur le bureau, j'ai droit à çà : | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mer 15 Mai 2013 - 0:21 | |
| Pöur voir à quoi ça correspond, est-ce que tu peux poster ton code ? C'est dans KGF_SUB.bas, mais je veux être sûr que tu as la bonne version de KGF_SUB.bas... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 15 Mai 2013 - 0:26 | |
| Erreur réparé !!! POURQUOI PANORAMIC NE SIGNALE PAS : " CHANGER LE PROGRAMMEUR !!! BUG NEURONE N° ..... DESOLE NEURONE ABSENTE !!! " Edit : Comme un idiot que je suis, j'avais bien la bonne dll dans le dossier du bureau mais pas dans mon dossier Panoramic... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mer 15 Mai 2013 - 0:31 | |
| Eh oui, ça arrive aux meilleurs...
C'est bluffant de pouvoir télécharger des fichiers ou des pages HTML, non ? | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 15 Mai 2013 - 0:33 | |
| Une petite question par curiosité,
L'adresse que tu mets est une adresse sur ton site ? ou sur un serveur spécial ? Je me demande si avec les liens skydrive, cela fonctionnerait aussi.
Sur ce serveur, on peut avoir un lien pour partager un fichier ou un dossier. Si je mets à jour le fichier sur le serveur, le lien reste le même. Et je me demandais si on pouvait s'en servir comme tu le fais avec l'adresse de tes dlls.
On s'est croisé. Oui, c'est super et c'est bien pratique pour les mises à jours. Je vois déjà la possibilité de mise à jour automatique d'une application. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 15 Mai 2013 - 0:52 | |
| Pour les mises à jour, il y a plusieurs adresses qui vont être nécessaires: KGF.dll BDR.dll KGF_SUB.bas ( qui contient maintenant les subs pour les deux dlls ) KGF.chm BDR.chm ( qui n'existe pas sous cette forme mais sous le nom de BDR_SUB.chm ) Truc qui est curieux, c'est que tu développes KGF.dll et l'aide va avec super ! BDR.dll et là l'aide est sur BDR_SUB.bas alors que les subs sont intégrées à KGF_SUB.bas qui lui à son aide au point mort...
Dernière édition par ygeronimi le Mer 15 Mai 2013 - 0:56, édité 1 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mer 15 Mai 2013 - 0:52 | |
| Le lien dans le petit programme de démo est l'adresse de la page d'accueil de mon site, celui qui vient quand on clique sur le "www" dans le bas de mes posts. Tu peux mettre n'importe quel lien directement accessible (sans login). C'est pourquoi, dans mon programme de mise à jour pour KGF.dll, j'ai mis la procédure suivante: - Code:
-
' *** procédure pour mise à jour de KGF.dll sub update_KGF(KGF$) dim_local url_KGF$ : url_KGF$ = "http://klaus.panoramic.voila.net/versions/KGF.dll" dim_local temp$ : temp$ = file_extract_path$(KGF$) if right$(temp$,1)<>"\" then temp$ = temp$ + "\" temp$ = temp$ + "nouveau.dll" if label("update_KGF_error")=0 then label update_KGF_error on_error_goto update_KGF_error DownloadFile(url_KGF$,temp$) dll_off : free KGF_initialize : free KGF_res% if file_exists(KGF$) then file_delete KGF$ file_rename temp$,KGF$ off_error_goto KGF_initialize(KGF$) exit_sub update_KGF_error: off_error_goto message "Erreur en mise à jour de KGF.dll" end_sub J'ai choisi de créer un nouveau dossier chez l'hébergeur: le dossier versions\, dans lequel je place un fichier versions.txt (c'est celui qui est téléchargé automatiquement par la fonction GetActualVersions) ainsi que KGF.dll et BDR.dll, en doublon avec MyDrive. Ainsi, on peut télécharger la dll directement par programme. Il suffit de faire GetActualVersions et de comparer la version de KGF.dll dans ce fichier avec celle retournée par KGFdllversion() pour savoir s'il faut faire update_KGF() pour remplacer KGF.dll. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto Mer 15 Mai 2013 - 0:57 | |
| On s'est croisé. Pour le moment, je n'ai mis que KGF.dll et BDR.dll. Dans mon esprit, c'est un moyen de mettre les DLLs à jour en cours d'exécution d'un programme (en général au démarrage), même avec une version exécutable chez un utilisateur. Le développeur, lui, reprend ces fichiers plus simplement sur MyDrive, comme d'habitude.
L'intérêt de changer les DLLs, c'est qu'on n'a même pas besoin d'arrêter le programme ! Ma procédure ferme la dll, la télécharge, remplace l'ancienne par la nouvelle puis réouvre la nouvelle, tout cela de façon transparente. | |
|
| |
Contenu sponsorisé
| Sujet: Re: 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto | |
| |
|
| |
| 2.33 du 14 mai 2013: ajout fonctions pour mise à jour auto | |
|