Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déploiement d'une DLL ActiveX

10 réponses
Avatar
Steff
Bonjour à tous,

J'aimerais savoir comment déployer une DLL ActiveX sur des postes clients
sans avoir à recourir à un regsvr32 (même par le code). En effet les postes
clients sur lesquelles je souhaite deployer la DLL ne disposent pas des
droits pour modifier la base de registre.
Ou si quelqu'un à une alternative je suis preneur...

Merci
Steff

10 réponses

Avatar
Patrick Philippot
Bonjour,

J'aimerais savoir comment déployer une DLL ActiveX sur des postes
clients sans avoir à recourir à un regsvr32 (même par le code). En
effet les postes clients sur lesquelles je souhaite deployer la DLL
ne disposent pas des droits pour modifier la base de registre.
Ou si quelqu'un à une alternative je suis preneur...



Quel que soit le composant COM installé, if faut qu'il soit enregistré.
Et il n'y a pas de solution alternative pour l'enregistrer que d'écrire
dans HKCR.

Vous parlez de postes clients. Cela veut-il dire que ces postes se
connectent tous à un même serveur sur un Intranet? Dans ce cas, une
stratégie possible, s'il n'y a pas de contraintes fortes côté
performances, serait d'enregistrer la DLL ActiveX sur le serveur et d'y
accéder via DCOM. Il suffit de passer le nom du serveur en deuxième
argument à CreateObject.

Sinon, votre package devra être installé par quelqu'un ayant les droits
adéquats. Sauf à utiliser des systèmes de déploiement automatisés comme
SMS. Tout dépend de ce que vous maîtrisez côté client.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Eric Vernié [MS]
Bonjour Steff,

Il est peut être possible de le faire avec un fichier dit manifest(Fichier
XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
Peut-être un bon point de départ ici :
Registration-Free Activation of COM Components: A Walkthrough
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
et les articles qui sont dispo ici
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp

Cordialement

Eric Vernié
Microsoft


"Steff" wrote in message
news:
Bonjour à tous,

J'aimerais savoir comment déployer une DLL ActiveX sur des postes clients
sans avoir à recourir à un regsvr32 (même par le code). En effet les
postes
clients sur lesquelles je souhaite deployer la DLL ne disposent pas des
droits pour modifier la base de registre.
Ou si quelqu'un à une alternative je suis preneur...

Merci
Steff


Avatar
Patrick Philippot
Bonjour Éric,

Registration-Free Activation of COM Components: A Walkthrough



C'est intéressant mais XP SP2 et Server 2003 seulement. Est-ce qu'il y a
une possibilité de faire un retrofit sur les versions précédentes de
Windows? Par installation d'une DLL quelconque?

Merci.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Eric Vernié [MS]
Bonjour Patrick,




J'ai bien peur que non malheureusement et tu as tout à fait raison de le
souligner, car c'est apparu de mémoire avec Windows XP.



En effet, par exemple, pour activer les fameux thèmes de Windows XP, il faut
que l'application charge la DLL comctl32.dll version 6.0 et des brouzoufs.
Or dans System32, seule la version 5.0 est disponible et pour cause les
contrôles VB6 utilisent par défaut cette version.

Donc pour ne pas casser la compatibilité avec des applications type VB 6
(c'est une des raisons pour laquelle, les thèmes ne sont pas actifs pour
VB6), est apparu le répertoire WinSXS (SXS voulant dire SideBySide) avec
son florilège de fichiers Manifest.



Cordialement



Eric Vernié

Microsoft France






"Patrick Philippot" wrote in message
news:%
Bonjour Éric,

Registration-Free Activation of COM Components: A Walkthrough



C'est intéressant mais XP SP2 et Server 2003 seulement. Est-ce qu'il y a
une possibilité de faire un retrofit sur les versions précédentes de
Windows? Par installation d'une DLL quelconque?

Merci.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Steff
Merci Eric
Le problème est partiellement résolu car j'arrive à déployer ma dll pour des
applications vb (au fait je développe en VB6). Le problème est que les postes
clients diposent également de fichiers Access et je n'arrive pas à écrire le
bon fichier manifest. Avez vous une idée ?

Merci d'avance
Steff

"Eric Vernié [MS]" a écrit :

Bonjour Steff,

Il est peut être possible de le faire avec un fichier dit manifest(Fichier
XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
Peut-être un bon point de départ ici :
Registration-Free Activation of COM Components: A Walkthrough
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
et les articles qui sont dispo ici
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp

Cordialement

Eric Vernié
Microsoft


"Steff" wrote in message
news:
> Bonjour à tous,
>
> J'aimerais savoir comment déployer une DLL ActiveX sur des postes clients
> sans avoir à recourir à un regsvr32 (même par le code). En effet les
> postes
> clients sur lesquelles je souhaite deployer la DLL ne disposent pas des
> droits pour modifier la base de registre.
> Ou si quelqu'un à une alternative je suis preneur...
>
> Merci
> Steff





Avatar
Eric Vernié [MS]
Bonjour Patrick,

Qu'entends-tu par fichier Access ?
Est-ce que cela veut dire que ta DLL est chargée par une application Access
?

A+

Eric Vernié
Microsoft

"Steff" wrote in message
news:
Merci Eric
Le problème est partiellement résolu car j'arrive à déployer ma dll pour
des
applications vb (au fait je développe en VB6). Le problème est que les
postes
clients diposent également de fichiers Access et je n'arrive pas à écrire
le
bon fichier manifest. Avez vous une idée ?

Merci d'avance
Steff

"Eric Vernié [MS]" a écrit :

Bonjour Steff,

Il est peut être possible de le faire avec un fichier dit
manifest(Fichier
XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
Peut-être un bon point de départ ici :
Registration-Free Activation of COM Components: A Walkthrough
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
et les articles qui sont dispo ici
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp

Cordialement

Eric Vernié
Microsoft


"Steff" wrote in message
news:
> Bonjour à tous,
>
> J'aimerais savoir comment déployer une DLL ActiveX sur des postes
> clients
> sans avoir à recourir à un regsvr32 (même par le code). En effet les
> postes
> clients sur lesquelles je souhaite deployer la DLL ne disposent pas des
> droits pour modifier la base de registre.
> Ou si quelqu'un à une alternative je suis preneur...
>
> Merci
> Steff







Avatar
Steff
Oui en fait je deploie aussi la dll avec des fichiers Access (.mdb). Bien
entendu je fais une reférence sur la dll et/ou des déclarations (Public
Declare Function nomFonction Lib "maLibrairie.dll"...) mais comme je ne peux
pas modifier la base de registre sur les postes clients les fichiers sont
inutilisables. Par contre avec une DLL ecrite en C++ la déclaration des
fonctions marche (c'est pourquoi je me dis que c'est possible de le faire).
J'ai bien résolu le problème avec les .exe (et je vous remercie de votre
aide) mais maintenant il faut que je fasse la même chose avec les .mdb. Il me
semble qu'il n'est pas possible de faire des manifests pour les fichiers mdb
(mais je n'en suis pas certain) mais existe t il un moyen équivalent ?

Merci
Steff

"Eric Vernié [MS]" a écrit :

Bonjour Patrick,

Qu'entends-tu par fichier Access ?
Est-ce que cela veut dire que ta DLL est chargée par une application Access
?

A+

Eric Vernié
Microsoft

"Steff" wrote in message
news:
> Merci Eric
> Le problème est partiellement résolu car j'arrive à déployer ma dll pour
> des
> applications vb (au fait je développe en VB6). Le problème est que les
> postes
> clients diposent également de fichiers Access et je n'arrive pas à écrire
> le
> bon fichier manifest. Avez vous une idée ?
>
> Merci d'avance
> Steff
>
> "Eric Vernié [MS]" a écrit :
>
>> Bonjour Steff,
>>
>> Il est peut être possible de le faire avec un fichier dit
>> manifest(Fichier
>> XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
>> Peut-être un bon point de départ ici :
>> Registration-Free Activation of COM Components: A Walkthrough
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
>> et les articles qui sont dispo ici
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp
>>
>> Cordialement
>>
>> Eric Vernié
>> Microsoft
>>
>>
>> "Steff" wrote in message
>> news:
>> > Bonjour à tous,
>> >
>> > J'aimerais savoir comment déployer une DLL ActiveX sur des postes
>> > clients
>> > sans avoir à recourir à un regsvr32 (même par le code). En effet les
>> > postes
>> > clients sur lesquelles je souhaite deployer la DLL ne disposent pas des
>> > droits pour modifier la base de registre.
>> > Ou si quelqu'un à une alternative je suis preneur...
>> >
>> > Merci
>> > Steff
>>
>>
>>





Avatar
Eric Vernié [MS]
Bonjour Steff,

Et si tu renommes le fichier manifest en Access.Exe.manifest ?

A+

Eric Vernié


"Steff" wrote in message
news:
Oui en fait je deploie aussi la dll avec des fichiers Access (.mdb). Bien
entendu je fais une reférence sur la dll et/ou des déclarations (Public
Declare Function nomFonction Lib "maLibrairie.dll"...) mais comme je ne
peux
pas modifier la base de registre sur les postes clients les fichiers sont
inutilisables. Par contre avec une DLL ecrite en C++ la déclaration des
fonctions marche (c'est pourquoi je me dis que c'est possible de le
faire).
J'ai bien résolu le problème avec les .exe (et je vous remercie de votre
aide) mais maintenant il faut que je fasse la même chose avec les .mdb. Il
me
semble qu'il n'est pas possible de faire des manifests pour les fichiers
mdb
(mais je n'en suis pas certain) mais existe t il un moyen équivalent ?

Merci
Steff

"Eric Vernié [MS]" a écrit :

Bonjour Patrick,

Qu'entends-tu par fichier Access ?
Est-ce que cela veut dire que ta DLL est chargée par une application
Access
?

A+

Eric Vernié
Microsoft

"Steff" wrote in message
news:
> Merci Eric
> Le problème est partiellement résolu car j'arrive à déployer ma dll
> pour
> des
> applications vb (au fait je développe en VB6). Le problème est que les
> postes
> clients diposent également de fichiers Access et je n'arrive pas à
> écrire
> le
> bon fichier manifest. Avez vous une idée ?
>
> Merci d'avance
> Steff
>
> "Eric Vernié [MS]" a écrit :
>
>> Bonjour Steff,
>>
>> Il est peut être possible de le faire avec un fichier dit
>> manifest(Fichier
>> XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
>> Peut-être un bon point de départ ici :
>> Registration-Free Activation of COM Components: A Walkthrough
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
>> et les articles qui sont dispo ici
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp
>>
>> Cordialement
>>
>> Eric Vernié
>> Microsoft
>>
>>
>> "Steff" wrote in message
>> news:
>> > Bonjour à tous,
>> >
>> > J'aimerais savoir comment déployer une DLL ActiveX sur des postes
>> > clients
>> > sans avoir à recourir à un regsvr32 (même par le code). En effet les
>> > postes
>> > clients sur lesquelles je souhaite deployer la DLL ne disposent pas
>> > des
>> > droits pour modifier la base de registre.
>> > Ou si quelqu'un à une alternative je suis preneur...
>> >
>> > Merci
>> > Steff
>>
>>
>>







Avatar
Steff
Hélas non...
Ce qui me chagrine c'est que ça fonctionne avec une DLL C++ alors pourquoi
pas avec une DLL ActiveX

Steff

"Eric Vernié [MS]" a écrit :

Bonjour Steff,

Et si tu renommes le fichier manifest en Access.Exe.manifest ?

A+

Eric Vernié


"Steff" wrote in message
news:
> Oui en fait je deploie aussi la dll avec des fichiers Access (.mdb). Bien
> entendu je fais une reférence sur la dll et/ou des déclarations (Public
> Declare Function nomFonction Lib "maLibrairie.dll"...) mais comme je ne
> peux
> pas modifier la base de registre sur les postes clients les fichiers sont
> inutilisables. Par contre avec une DLL ecrite en C++ la déclaration des
> fonctions marche (c'est pourquoi je me dis que c'est possible de le
> faire).
> J'ai bien résolu le problème avec les .exe (et je vous remercie de votre
> aide) mais maintenant il faut que je fasse la même chose avec les .mdb. Il
> me
> semble qu'il n'est pas possible de faire des manifests pour les fichiers
> mdb
> (mais je n'en suis pas certain) mais existe t il un moyen équivalent ?
>
> Merci
> Steff
>
> "Eric Vernié [MS]" a écrit :
>
>> Bonjour Patrick,
>>
>> Qu'entends-tu par fichier Access ?
>> Est-ce que cela veut dire que ta DLL est chargée par une application
>> Access
>> ?
>>
>> A+
>>
>> Eric Vernié
>> Microsoft
>>
>> "Steff" wrote in message
>> news:
>> > Merci Eric
>> > Le problème est partiellement résolu car j'arrive à déployer ma dll
>> > pour
>> > des
>> > applications vb (au fait je développe en VB6). Le problème est que les
>> > postes
>> > clients diposent également de fichiers Access et je n'arrive pas à
>> > écrire
>> > le
>> > bon fichier manifest. Avez vous une idée ?
>> >
>> > Merci d'avance
>> > Steff
>> >
>> > "Eric Vernié [MS]" a écrit :
>> >
>> >> Bonjour Steff,
>> >>
>> >> Il est peut être possible de le faire avec un fichier dit
>> >> manifest(Fichier
>> >> XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
>> >> Peut-être un bon point de départ ici :
>> >> Registration-Free Activation of COM Components: A Walkthrough
>> >> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
>> >> et les articles qui sont dispo ici
>> >> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp
>> >>
>> >> Cordialement
>> >>
>> >> Eric Vernié
>> >> Microsoft
>> >>
>> >>
>> >> "Steff" wrote in message
>> >> news:
>> >> > Bonjour à tous,
>> >> >
>> >> > J'aimerais savoir comment déployer une DLL ActiveX sur des postes
>> >> > clients
>> >> > sans avoir à recourir à un regsvr32 (même par le code). En effet les
>> >> > postes
>> >> > clients sur lesquelles je souhaite deployer la DLL ne disposent pas
>> >> > des
>> >> > droits pour modifier la base de registre.
>> >> > Ou si quelqu'un à une alternative je suis preneur...
>> >> >
>> >> > Merci
>> >> > Steff
>> >>
>> >>
>> >>
>>
>>
>>





Avatar
Eric Vernié [MS]
Re-bonjour Steff,

Est-ce un problème de déploiement que tu as ou un problème d'instanciation ?

Une DLL C++, si elle n'est pas de Type COM (Comme les ATL ou les DLL VB6),
n'a pas besoin d'être enregistrer dans le registre Windows.
Pour peux que la convention d'appel soit compatible FAR PASCAL (stdcall),
tu peux les appeler directement dans VB6 en passant par le mot clé Declare
Function nomFonction Lib "maLibrairie.dll" etc.... ou nomFonction est une
fonction Exportée.

Une DLL VB6 c'est une DLL COM qui se doit d'être enregistrer dans le
registre Windows et tu ne peux pas utiliser le même mécanisme que les DLL
C++ vu plus haut pur les instancier. Aucune fonctions publiques que tu
donnes à ta DLL ne sont exportées, car se sont des méthodes COM.

Il est donc impératifs de les enregistrer ou éventuellement de passer par la
manipulation des manifests si cela fonctionne et de passer par un mécanisme
COM de création des objets (CreateObject ou new).

Entre nous, les versions supèrieures de Visual Basic resolvent se problème
d'enregistrement, car elles n'utilisent plus du tout COM, et un simple copy
suffit pour déployer la DLL. ;-)

Cordialement


Eric Vernié






"Steff" wrote in message
news:
Hélas non...
Ce qui me chagrine c'est que ça fonctionne avec une DLL C++ alors pourquoi
pas avec une DLL ActiveX

Steff

"Eric Vernié [MS]" a écrit :

Bonjour Steff,

Et si tu renommes le fichier manifest en Access.Exe.manifest ?

A+

Eric Vernié


"Steff" wrote in message
news:
> Oui en fait je deploie aussi la dll avec des fichiers Access (.mdb).
> Bien
> entendu je fais une reférence sur la dll et/ou des déclarations (Public
> Declare Function nomFonction Lib "maLibrairie.dll"...) mais comme je ne
> peux
> pas modifier la base de registre sur les postes clients les fichiers
> sont
> inutilisables. Par contre avec une DLL ecrite en C++ la déclaration des
> fonctions marche (c'est pourquoi je me dis que c'est possible de le
> faire).
> J'ai bien résolu le problème avec les .exe (et je vous remercie de
> votre
> aide) mais maintenant il faut que je fasse la même chose avec les .mdb.
> Il
> me
> semble qu'il n'est pas possible de faire des manifests pour les
> fichiers
> mdb
> (mais je n'en suis pas certain) mais existe t il un moyen équivalent ?
>
> Merci
> Steff
>
> "Eric Vernié [MS]" a écrit :
>
>> Bonjour Patrick,
>>
>> Qu'entends-tu par fichier Access ?
>> Est-ce que cela veut dire que ta DLL est chargée par une application
>> Access
>> ?
>>
>> A+
>>
>> Eric Vernié
>> Microsoft
>>
>> "Steff" wrote in message
>> news:
>> > Merci Eric
>> > Le problème est partiellement résolu car j'arrive à déployer ma dll
>> > pour
>> > des
>> > applications vb (au fait je développe en VB6). Le problème est que
>> > les
>> > postes
>> > clients diposent également de fichiers Access et je n'arrive pas à
>> > écrire
>> > le
>> > bon fichier manifest. Avez vous une idée ?
>> >
>> > Merci d'avance
>> > Steff
>> >
>> > "Eric Vernié [MS]" a écrit :
>> >
>> >> Bonjour Steff,
>> >>
>> >> Il est peut être possible de le faire avec un fichier dit
>> >> manifest(Fichier
>> >> XML qui décrit l'activeX), mais ce n'est pas super simple à faire.
>> >> Peut-être un bon point de départ ici :
>> >> Registration-Free Activation of COM Components: A Walkthrough
>> >> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/rfacomwalk.asp
>> >> et les articles qui sont dispo ici
>> >> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp
>> >>
>> >> Cordialement
>> >>
>> >> Eric Vernié
>> >> Microsoft
>> >>
>> >>
>> >> "Steff" wrote in message
>> >> news:
>> >> > Bonjour à tous,
>> >> >
>> >> > J'aimerais savoir comment déployer une DLL ActiveX sur des postes
>> >> > clients
>> >> > sans avoir à recourir à un regsvr32 (même par le code). En effet
>> >> > les
>> >> > postes
>> >> > clients sur lesquelles je souhaite deployer la DLL ne disposent
>> >> > pas
>> >> > des
>> >> > droits pour modifier la base de registre.
>> >> > Ou si quelqu'un à une alternative je suis preneur...
>> >> >
>> >> > Merci
>> >> > Steff
>> >>
>> >>
>> >>
>>
>>
>>