OVH Cloud OVH Cloud

Extraire version frameworks utilisée par un exe

6 réponses
Avatar
smrhp
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du
frameworks utilisée par l'exe en cours ? (de la même façon que
ExeInfo() nous sors la version de l'exe).

VersionWindev() semble faire quelque chose de ce genre, mais il est
indiqué dans l'aide que la fonction n'est gardée que par compatibilité
avec les anciennes versions (ce qui n'inspire pas confiance quand à
commencer à l'utiliser).
Il est indiqué qu'il faut utiliser ExeInfo à la place. Mais ExeInfo il
faut lui donner le nom de la DLL dont on souhaite extraire la version
(par exemple WD90VM.DLL). Or si on migre une appli 9 en 10, ça veut
dire qu'il faut penser à aller modifier WD90VM.DLL en WD100VM.DLL...
Source de petits soucis ça ;)

De plus versionwindev() sort un numéro type "9.01Ga" (et pas
01-900034J). Est-ce qu'à chaque mise à jour du frameworks (enfin de
l'appli windev), ce numéro change aussi de la même façon que le
01-900034J ??

Le but de tout ça étant de gérer une mise à jour automatique via
internet qui ne charge que l'exe quand le frameworks n'a pas changé, et
qui télécharge le programme d'install complet lorsqu'une mise à jour du
frameworks est utile.

Voilà.

Merci.

6 réponses

Avatar
Gilles TOURREAU
Le 26/05/2006, smrhp a supposé :
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du frameworks
utilisée par l'exe en cours ? (de la même façon que ExeInfo() nous sors la
version de l'exe).

VersionWindev() semble faire quelque chose de ce genre, mais il est indiqué
dans l'aide que la fonction n'est gardée que par compatibilité avec les
anciennes versions (ce qui n'inspire pas confiance quand à commencer à
l'utiliser).
Il est indiqué qu'il faut utiliser ExeInfo à la place. Mais ExeInfo il faut
lui donner le nom de la DLL dont on souhaite extraire la version (par exemple
WD90VM.DLL). Or si on migre une appli 9 en 10, ça veut dire qu'il faut penser
à aller modifier WD90VM.DLL en WD100VM.DLL... Source de petits soucis ça ;)

De plus versionwindev() sort un numéro type "9.01Ga" (et pas 01-900034J).
Est-ce qu'à chaque mise à jour du frameworks (enfin de l'appli windev), ce
numéro change aussi de la même façon que le 01-900034J ??

Le but de tout ça étant de gérer une mise à jour automatique via internet qui
ne charge que l'exe quand le frameworks n'a pas changé, et qui télécharge le
programme d'install complet lorsqu'une mise à jour du frameworks est utile.

Voilà.

Merci.



Utilises :

ExeInfo("VersionVI", NomDeLaDLL)

cela te renverras la version interne de la DLL (du style "01-900034J")

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
deg
Bonsoir,

Merci pour votre réponse.

Le Fri, 26 May 2006 19:20:55 +0200, Gilles TOURREAU
a écrit :

Le 26/05/2006, smrhp a supposé :
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du frameworks
utilisée par l'exe en cours ? (de la même façon que ExeInfo() nous sors la
version de l'exe).

VersionWindev() semble faire quelque chose de ce genre, mais il est indiqué
dans l'aide que la fonction n'est gardée que par compatibilité avec les



Utilises :

ExeInfo("VersionVI", NomDeLaDLL)

cela te renverras la version interne de la DLL (du style "01-900034J")



C'est en fait ce que j'utilisais jusqu'ici. Mais "NomDeLaDLL" doit
être mis à jour à la main dans le code lorsqu'on change de version
windev. Certes, on ne migre pas tout les jours ;) ! Mais en
l'occurence on installe ce système de mise à jour sur une appli' en
WD9 qui ne va pas tarder à migrer en WD10, et trouver un système
"universel" nous aurais intéressé...
De plus, ce "VersionVI" (que j'avais peut-être déjà pioché dans les
forum ?) n'étant pas documenté, son utilisation est-t'elle très fiable
?

En cherchant dans la version WD10, il semble qu'une fonction se
rapproche de ce que je recherche : ListeDLL()
Mais la fonction n'est pas dispo en WD9.

Je pense que je fais en effet continuer d'utiliser ce VersionVI en
WD9. Et lorsqu'on passera l'appli en WD10 pour de bon, je mettrais à
jour l'extraction de ce numéro de version via ListeDLL() pour trouver
le nom de la DLL, tout en continuant d'utiliser ce VersionVI (en le
surveillant de près ;)...).

Par contre si qqn a une solution très fiable pour connaître le numéro
de framework de l'appli en cours d'exécution, ça m'intéresse toujours
+++ ;)... Car en plus l'info y est sûrement, vu que l'appli sait ce
qu'elle soit chercher comme DLL j'imagine ! ;)



à+

--
deg
corrigez mon adresse pour me répondre par mail
Avatar
Gilles TOURREAU
deg a exprimé avec précision :
Bonsoir,

Merci pour votre réponse.

Le Fri, 26 May 2006 19:20:55 +0200, Gilles TOURREAU
a écrit :

Le 26/05/2006, smrhp a supposé :
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du
frameworks utilisée par l'exe en cours ? (de la même façon que ExeInfo()
nous sors la version de l'exe).

VersionWindev() semble faire quelque chose de ce genre, mais il est indiqué
dans l'aide que la fonction n'est gardée que par compatibilité avec les



Utilises :

ExeInfo("VersionVI", NomDeLaDLL)

cela te renverras la version interne de la DLL (du style "01-900034J")



C'est en fait ce que j'utilisais jusqu'ici. Mais "NomDeLaDLL" doit
être mis à jour à la main dans le code lorsqu'on change de version
windev. Certes, on ne migre pas tout les jours ;) ! Mais en
l'occurence on installe ce système de mise à jour sur une appli' en
WD9 qui ne va pas tarder à migrer en WD10, et trouver un système
"universel" nous aurais intéressé...
De plus, ce "VersionVI" (que j'avais peut-être déjà pioché dans les
forum ?) n'étant pas documenté, son utilisation est-t'elle très fiable
?

En cherchant dans la version WD10, il semble qu'une fonction se
rapproche de ce que je recherche : ListeDLL()
Mais la fonction n'est pas dispo en WD9.

Je pense que je fais en effet continuer d'utiliser ce VersionVI en
WD9. Et lorsqu'on passera l'appli en WD10 pour de bon, je mettrais à
jour l'extraction de ce numéro de version via ListeDLL() pour trouver
le nom de la DLL, tout en continuant d'utiliser ce VersionVI (en le
surveillant de près ;)...).

Par contre si qqn a une solution très fiable pour connaître le numéro
de framework de l'appli en cours d'exécution, ça m'intéresse toujours
+++ ;)... Car en plus l'info y est sûrement, vu que l'appli sait ce
qu'elle soit chercher comme DLL j'imagine ! ;)



à+



Personnellement je gère la version du Framework en renommant les DLL...
Ce qui fait que dans mon code je peux tester le nom d'une DLL (par
exemple "PersoWM.DLL") quelque soit la version de Windev.

Le seul hic, si tu as plusieurs applications Windev installé sur la
machine et qui sont compilé avec différentes versions de Windew, cela
ne fonctionnera pas.

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
smrhp
Le Fri, 26 May 2006 20:55:18 +0200, Gilles TOURREAU
a écrit :

deg a exprimé avec précision :
Bonsoir,

Merci pour votre réponse.

Le Fri, 26 May 2006 19:20:55 +0200, Gilles TOURREAU
a écrit :

Le 26/05/2006, smrhp a supposé :
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du
frameworks utilisée par l'exe en cours ? (de la même façon que ExeInfo()
nous sors la version de l'exe).

VersionWindev() semble faire quelque chose de ce genre, mais il est indiqué
dans l'aide que la fonction n'est gardée que par compatibilité avec les



Utilises :

ExeInfo("VersionVI", NomDeLaDLL)

cela te renverras la version interne de la DLL (du style "01-900034J")



C'est en fait ce que j'utilisais jusqu'ici. Mais "NomDeLaDLL" doit






Personnellement je gère la version du Framework en renommant les DLL...
Ce qui fait que dans mon code je peux tester le nom d'une DLL (par
exemple "PersoWM.DLL") quelque soit la version de Windev.



oui c'est en effet une solution.

Le seul hic, si tu as plusieurs applications Windev installé sur la
machine et qui sont compilé avec différentes versions de Windew, cela
ne fonctionnera pas.



si le framework est dans le dossier de chaque appli, ça ne devrait pas
poser de problème ? (solution qui évite d'ailleurs les problèmes d'une
appli en windev dont on ne serait pas l'auteur et qui viendrait foutre
le zouc dans le framework !! ;).

Merci, je vais réfléchir à utiliser cette solution


à+

--
deg
corrigez mon adresse pour me répondre par mail
Avatar
Gilles TOURREAU
smrhp avait prétendu :
Le Fri, 26 May 2006 20:55:18 +0200, Gilles TOURREAU
a écrit :

deg a exprimé avec précision :
Bonsoir,

Merci pour votre réponse.

Le Fri, 26 May 2006 19:20:55 +0200, Gilles TOURREAU
a écrit :

Le 26/05/2006, smrhp a supposé :
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du
frameworks utilisée par l'exe en cours ? (de la même façon que ExeInfo()
nous sors la version de l'exe).

VersionWindev() semble faire quelque chose de ce genre, mais il est
indiqué dans l'aide que la fonction n'est gardée que par compatibilité
avec les



Utilises :

ExeInfo("VersionVI", NomDeLaDLL)

cela te renverras la version interne de la DLL (du style "01-900034J")



C'est en fait ce que j'utilisais jusqu'ici. Mais "NomDeLaDLL" doit






Personnellement je gère la version du Framework en renommant les DLL...
Ce qui fait que dans mon code je peux tester le nom d'une DLL (par
exemple "PersoWM.DLL") quelque soit la version de Windev.



oui c'est en effet une solution.

Le seul hic, si tu as plusieurs applications Windev installé sur la
machine et qui sont compilé avec différentes versions de Windew, cela
ne fonctionnera pas.



si le framework est dans le dossier de chaque appli, ça ne devrait pas
poser de problème ? (solution qui évite d'ailleurs les problèmes d'une
appli en windev dont on ne serait pas l'auteur et qui viendrait foutre
le zouc dans le framework !! ;).

Merci, je vais réfléchir à utiliser cette solution


à+



Comme tu l'as dis, je met une Framework par application...
Car cela évite le conflit des versions (aussi bien entre versions
majeurs que mineurs).

Encore une autre solution, si ton framework se trouve dans le
répertoire de l'executable et tu ne connais pas le nom des DLL.
Tu peux faire un fListeFichier("*.dll").

Et pour chaque DLL tu testes :

chVersion est une chaine

chVersion = exeInfo(LaDLLTrouvé, "VersionVI")
SI chVersion <> "" ALORs
//C'est une DLL made in PcSoft
SINON
//C'est une DLL made in Billou
FIN

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
smrhp
Le Sat, 27 May 2006 12:32:55 +0200, Gilles TOURREAU
a écrit :

smrhp avait prétendu :
Le Fri, 26 May 2006 20:55:18 +0200, Gilles TOURREAU
a écrit :

deg a exprimé avec précision :
Bonsoir,

Merci pour votre réponse.

Le Fri, 26 May 2006 19:20:55 +0200, Gilles TOURREAU
a écrit :

Le 26/05/2006, smrhp a supposé :
BOnjour,

Est-t'il possible via une commande windev d'extraire la version du
frameworks utilisée par l'exe en cours ? (de la même façon que ExeInfo()











Et pour chaque DLL tu testes :

chVersion est une chaine

chVersion = exeInfo(LaDLLTrouvé, "VersionVI")
SI chVersion <> "" ALORs
//C'est une DLL made in PcSoft
SINON
//C'est une DLL made in Billou
FIN

Cordialement




Je viens de découvrir que dans WD10, cette fonction tant recherchée
pour lister les DLL semble exister !
ListeDLL()

Il est donc probable qu'en attendant la version sous WD9 de l'appli va
utiliser le nom de la DLL "en dur" comme c'est le cas actuellement.
Puis au moment du passage en 10, je vais utiliser ce ListeDLL() du 10
!

Bon reste juste ce "VersionVI" qui n'est pas documenté mais il était
déjà présent dans les DLL 5 donc ça doit être du "stable" ! ;)

merci.


à+

--
smrhp
corrigez mon adresse pour me répondre par mail