Enregistrement d'un ocx dans la base de registre

xineohp37 Messages postés 10 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 5 mars 2007 - 11 oct. 2006 à 14:07
xineohp37 Messages postés 10 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 5 mars 2007 - 4 déc. 2006 à 13:38
Bonjour à tous,

Voilà le problème, j'essais d'automatiser la compilation d'un projet utilisant des dll et des ocx que nous avons développés.
Pour avoir systématiquement la dernière version des dll et ocx, je nettois la base de registre, puis recompile chacun des projets.

Quand j'arrive pour compiler le projet qui utilise ces composants, je dois aller modifier le .vbp pour mettre à jours les références à ces composants.
ex :
- pour une dll :
Reference=*\G{AB995162-438D-4E07-9000-B35C38D49959}#1a.1#0#C:\GTech\Common Files\DllCommon.dll#PrjDllCommon

- pour un ocx :
Object={5411E6FB-D10A-4EBD-AF02-F2EA106B0093}#1.1#0; XTEXTBOX.OCX

Mon seul problème est pour trouver la façon de récupérer le numéro de version inscrit entre les "#" dans la base de registre.
En effet, j'ai comme infos à ma disposition :
- Le procId des composant
- Le CLSID
- Le typelib

Si je vais voir dans la base de registre la clé : HKEY_CLASSES_ROOT\CLSID\{010F9019-CF6A-4310-880C-E4404D1F58FC}\VERSION
(exmple avec un clsid au pif hein), et bien le numéro de version est différent de celui que je peux voir dans oleviewer par exemple....Ce qui est génant, parce que vb ne reconnait pas le composant tant que le numéro de version n'est pas celui qu'il attend

En fouillant manuelement dans la base de registre, on arrive à retrouver le numéro de version qui s'affiche dans oleviewer, dans la clé : HKEY_CLASSES_ROOT\Interface\{numéro qui ressemble au clsid}\TypeLib où il y a une valeur "Version"
Seulement voilà, ce "numéro qui ressemble au clsid", je ne le retrouve nul part ailleurs, pas de correspondance avec le CLSID ou le typelib.....

Donc au secours, help, ayuda me, bref toutes les formules possibles et imaginable pour vous dire qu'un petit coup de pouce serait le bienvenue.

Sur ce, @+

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
11 oct. 2006 à 14:24
Heu... à quoi ca te sert de mofier le registre et de trifouiller tes vbp ?

Tu ne connais pas le mode de compilation en compatibilité binaire qui te permet de compiler tes dll avec les mêmes références que la dll déjà compilée ?

Car si à chaque fois que tu compile ton ocx, tu le compile en mode sans compatibilité, forcément... mais c'est pas du tout le but d'un ocx !
0
xineohp37 Messages postés 10 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 5 mars 2007
11 oct. 2006 à 14:37
Heu...d'abord parce que la compatibilité ascendante qui est sensé être "assuré" par la compatibilité binaire ne marche pas à 100% (dixit mon chef de projet qui m'assure avoir eu des problèmes), et d'autre part parce que si un jour j'ai besoin de casser cette compatibilité (pour changer le prototype d'un fct de ma dll par exemple) et ben je ferais face au même problème...

Après pour des raisons bassement terre à terre, jme suis paluché 2 jours de développement pour sortir un soft qui gère tout ça, (et puis 2, 3 autres fonctionnalités aussi, nan je suis pas si lent que ça...) et donc vu que c'est apparement le dernier détail qu'il me reste à régler, autant que ça tourne comme ça !

Après je suis ouvert à toutes propositions....
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
11 oct. 2006 à 15:19
Et bien, c'est vraiment une mauvaise langue ton chef de projet : ca fait plus de 3 ans que je bosse sur plusieurs soft qui utilise une multitudes d'ocx qui sont mis à jour très régulièrement (au moins 1 fois par semaine), et j'ai jamais rencontré le moindre problème avec la compatibilité binaire !
De temps en temps, il faut faire une compatiblité des projets uniquement lorsque tu touche à l'interface des classes, mais une petite compilation du projet, et tout rentre dans l'ordre !

Sinon, pour ton problème, je ne sais pas comment t'aider ! Mais bon courage vu qu'à chaque compilation (sans compatibilité donc), le CLSID de TOUTES les classes de tes ocx seront modifiées, ainsi que le numéro de version ! Donc pour savoir laquelle est la bonne, je ne vois vraiment pas !
0
xineohp37 Messages postés 10 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 5 mars 2007
11 oct. 2006 à 15:27
Ben la solution finale sera sans doute pour moi de lancer une recherche auto dans la base de registre pour récupérer la clé de ROOT\Interface qui contient le typelib et la version.....Action qui sera longue et qui en plus va probablement me poser des problèmes de mémoires.....Enfin bref, merci pour l'intérêt apporté à ma question, je vais bien voir où me mènera cette histoire....
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xineohp37 Messages postés 10 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 5 mars 2007
4 déc. 2006 à 13:38
Bonjour à tous,
J'en profite pour upper ma demande histoire de voir si quelqu'un aurait soit des news sur le sujet, soit un indice de "où chercher" sur le Net.
Je rappel ma problématique :
Je cherche le lien entre les typelib listés dans "HKEY_CLASSES_ROOT\Interface\XXXXXXXX" (où XXXXXXX équivaut à une chaine du même format que le CLSID) et ceux listés dans "HKEY_CLASSES_ROOT\CLSID\YYYYYYYY" (où YYYYYYY équivaut au CLSID).

Je me suis arrangé pour faire autrement vis à vis de mon soft mais je n'aime pas rester dans l'obscurantisme.....

Voilà sur ce, bonne continuation à tous
0
Rejoignez-nous