self -registering ? Quoi donc qu'est ce ?

self -registering ? Quoi donc qu'est ce ? - Programmation

Marsh Posté le 14-05-2001 à 15:23:28    

Qu'est ce que ça veut dire qu'une dll ou fonction ou autre est Self-registering ?  :??:  :??:  
 
Si besoin est ,voila mon erreur qui apparait dans une procédure d'installation avec installshield :
 
The build was unable to extract COM information from the file "toto.dll" in feature "ProjetToto".  Please ensure that the file is self-registering and verify that the self-registration process does not fail.

Reply

Marsh Posté le 14-05-2001 à 15:23:28   

Reply

Marsh Posté le 14-05-2001 à 15:35:35    

Fais une recherche sur google (mondial) de :
Please ensure that the file is self-registering and verify that the self-registration process does not fail
 
et tu trouveras des renseignements

Reply

Marsh Posté le 14-05-2001 à 15:38:25    

Une dll est self registering qd il s'agit d'une dll COM. Ca signifie qu'elle contient le code nécessaire pour qu'elle s'enregistre dans la base de registre. (les objets COM ont besoin d'etre enregistrer dans la base de registre).
Dans windows, il y a un outil pour enregistrer les dll : regsvr32.exe.
ex :
- pour enregistrer : regsvr32 toto.dll
- pour dé-enregistrer : regsvr32 /u toto.dll
- taper regsvr32 pour plus d'option.

Reply

Marsh Posté le 14-05-2001 à 16:07:58    

Quel est le code pour que ma dll s'auto-enregistre ?

Reply

Marsh Posté le 14-05-2001 à 16:32:29    

Je vois que tu essaye d'enregistrer une dll avec install shield.
Mais ta dll, est elle compatible COM ?
Si oui, ca doit marcher.
Si non, c'est inutile de l'enregistrer (de tout facon ca marchera pas  :D  :D ...)

Reply

Marsh Posté le 14-05-2001 à 17:13:01    

Qu'appelles tu exactement compatible COM ?
 
j'ai créé une DLL dans VB6 (Type DLL activeX).
Celle ci contient des classes qui font des accès à une base de données Access, sinon le code n'a rien de vraiment spécial.
 
 :??:

Reply

Marsh Posté le 14-05-2001 à 17:21:09    

Si ta dll contient un ActiveX, elle est COM.
(ActiveX est une application de COM, Component Object Model).
 
Donc il faut l'enregistrer.

Reply

Marsh Posté le 14-05-2001 à 17:47:40    

Le problème est:
Est ce que installshield enregistre automatiquement les dll ou non.
 
Si il ne le fait pas, comment faire pour enregistrer ces dll par programme (pour ne pas à avoir à demander au client de l'enregistrer manuellement) ? :??:  :cry:

Reply

Marsh Posté le 15-05-2001 à 11:36:24    

Il faut que ta DLL exporte certaines fonctions.
Je me souviens plus lesquels (une en particulier) mais ca se retrouve (dans le MSDN online par exemple) je sais qu'il y a le mot register dans la fonction à exporter...

Reply

Marsh Posté le 15-05-2001 à 12:36:20    

Pour enregistrer une dll COM :
 
STDAPI __export DllRegisterServer(void)
STDAPI __export DllUnregisterServer(void)
 
Maintenant c'est bizarre, VC++ ou C++ Builder  créent le code de ces fonctions automatiquement quand on crée un projet "ActiveX" donc je pense que VB le fait aussi. Tu es sûr de n'avoir pas raté une option ?


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Marsh Posté le 15-05-2001 à 12:36:20   

Reply

Marsh Posté le 15-05-2001 à 13:34:55    

Oui, InstallShield enregistre les dll.
Il faut déclarer le "file group" en tant que "self registered".
(donc dans ce "file group", on ne met que des dll ou ocx enregistrables).

Reply

Marsh Posté le 15-05-2001 à 17:10:19    

seblamb> Je n'ai pas trouvé de fonction ou propriété explicite qui indique que la dll doit être self-register  :cry:  
 
bat> J'utilise Installshield express, je ne doit donc pas avoir la même version que toi (professionnal ?) car je n'ai pas de possibilité de déclarer le file en tant que self registered.
Par contre dans les properties avancées de mes dll il y a une case "registration type" avec choix:
- None
- Extract COM information
- self-registration
 
Je pense que ce doit être ça (self-registration), je vais essayer.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed