| V3.12 du 06/07/2014: nouvelle fonction KGFupdate | |
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 11:19 | |
| Nouvelle version: KGF.dll V3.12 du 06/07/2014
Nouveauté: nouvelle fonction KGFupdate
Modules modifiés: KGF.dll KGF.chm KGF.doc KGF.pdf
La doc et les sources sont à jour.
Cette fonction remplace automatiquement KGF.dll à partir de mon site Web. Elle remplace le fichier KGF.dll qui est ouvert par le programme appelant cette fonction, quelque soit le dossier dans lequel elle est placé. Pour cela, elle arrête le programme application qui ne continue donc jamais après cette fonction, effectue la mise à jour, puis relance automatiquement le programme. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 11:22 | |
| Merci Klaus, il faurait même un paramète pour pouvoir mettre à jour les autres fichiers (doc, etc ...) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 11:35 | |
| Pour cela, tu as la fonction - Code:
-
res% = DLL_call2("DownloadFile",adr(url$),adr(fic$)) qui est documentée dans les "Fonctions diverses". Tu peux spécifiquement télécharger un fichier et le déposer où tu veux. A priori, on pourrait aussi utiliser cela pour KGF.dll. Mais il faut alors la télécharger dans un endroit remporaire, puis la recopier à l'endroit final, puisqu'on ne peut pas remplacer un fichier ouvert par un programme, ce qui est le cas de la DLL chargée par DLL_ON. J'ai donc fait cette fonction spéciale qui permet de remplacer la DLL utilisée par le programme en cours. Tu as déjà la fonction - Code:
-
res% = DLL_call1("GetActualVersions",adr(fic$))
qui te donne entre autres la version de KGF.dll sur mon site, et tu as la fonction - Code:
-
version% = DLL_call1("KGFdllVersion",adr(version$))
qui te donne la version de KGF.dll actuellement sur ton système. Toutes ces fonctions sont documentées dans les "Fonctions diverses". Tu as ainsi le moyen de décider s'il faut faire la mise à jour ou non, et de choisir si tu veux mettre à jour, soit la DLL seule, soit la doc, soit les deux. Il est facile de faire une petite procédure Panoramic pour cela. EDIT Oups... il y avait une anomalie dans GetActualVersions - elle allait encore sur FunPic ! C'est corrigé depuis 12h10 ! | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 12:10 | |
| oui, me mieux, c'est un petit fichier compilé "MAJ_KGF.exe" que lon lance si la le test de la version nous indique que la DLL a été mise à jour. Dans l'exe on paramètre les chemins des fichiers et après on est tranquille | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 12:20 | |
| Exact. Mais utilise DownLoadFile pour tous les fichiers sauf KGF.dll, et finis par KGFupdate pour remplacer la DLL. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 12:49 | |
| Absolument En fait, on devrait faire une fichier exe compilé et récupérable avec juste un fichier ini qui contiennent pour chaque fichier si on veut le copier une ou plusieurs fois et les chemins où les mettre. Genre: [KGF.doc] Nbcopies=0 [KGF.HLP] Nbcopies=2 C:\KGF C:\Panoramic-init\sources\KGF etc ... Qu'en penses-tu ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 12:59 | |
| Pourquoi pas ? C'est une bonne solution.
L'important, c'est de suivre une procédure bien précise:
1. dans le programme application, faire une procédure vérifier_maj() qui doit être appelée tout au début, avant END, et juste après DLL_ON. Cette procédure doit comparer a version de la DLL actuellement installée avec celle disponible sur le site. Et si la version du site est plus récente, il faut faire ceci: - créer un petit fichier sémaphore, du genre faire_maj.txt - lancer le programme de mise à jour que tu projettes, et s'arrêter
2. dans le programme de mise à jour, faire: - chercher le fichier sémaphore faire_maj.txt. Si ce fichier n'existe pas, alors on arrête. - faire toutes les mises à jours configurées, sauf celle de KGF.dll chargée par le programme de mise à jour, mais en téléchargeant KGF.dll pour tous les emplacements éventuels ailleurs (si tu as KGF.dll dans plusieurs dossiers) - supprimer le fichier sémaphore faire_maj.txt - mettre la DLL à jour par KGFupdate
Résultat: après KGFupdate, le programme de mise à jour sera relancé automatiquement, mais comme le fichier sémaphore faire_maj.txt n'existe plus, il s'arrêtera immédiatement.
Mais, au lieu de faire un programme indépendant, pourquoi ne pas inclure tout ça dans une procédure qui serait incluse dans ton programme application et appelée au début, après DLL_ON et avant END ? L'avantage, c'est que le programme application sera relancé automatiquement, mais comme au second lancement, la DLL sera à jour, la procédure n'entre pas dans une boucle infinie. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate Dim 6 Juil 2014 - 14:05 | |
| En fait, le truc c'est que quand on écrit un programme de manière général, on l'écrit pour une version donnée de la DLL et même si les versions ultérieures ont une compatibilité ascendante, les mises à jour ne snt donc (en règle générale) pas utile à l'application qui utilise la DLL.
| |
|
| |
Contenu sponsorisé
| Sujet: Re: V3.12 du 06/07/2014: nouvelle fonction KGFupdate | |
| |
|
| |
| V3.12 du 06/07/2014: nouvelle fonction KGFupdate | |
|