Installation d'un ActiveX à partir d'un .cab [Résolu]

Signaler
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015
-
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015
-
Voilà mon problème : J'utilise un .cab pour installer mon ActiveX
(jusqu'ici tout est normal). Ce .cab vérifie que les DLLs nécessaires à
l'éxécution de l'ActiveX sont présentes sur le PC client. S'il ne les
trouve pas, il va les chercher sur un autre fichier .cab qui les
contient. Je n'ai pas mis les DLLs dans le même .cab pour des raisons
d'optimisation de temps de téléchargement (pas besoin de télécharger
les DLL si on les a déjà). Toutes ces actions sont décrites dans le
fichier .inf suivant :

[Version]
Signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
;Section définissant dans quelle section traiter quel fichier
; <nom fichier> = <nom section>
IPlay.ocx=IPlay.ocx
cg.dll=cg.dll
DevIL.dll=DevIL.dll
ILU.dll=ILU.dll
OgreMain.dll=OgreMain.dll
OgrePlatform.dll=OgrePlatform.dll
Plugin_ParticleFX.dll=Plugin_ParticleFX.dll
RenderSystem_Direct3D9.dll=RenderSystem_Direct3D9.dll
RenderSystem_GL.dll=RenderSystem_GL.dll
zlib1.dll=zlib1.dll

[IPlay.ocx]
File-win32-x86=thiscab
clsid={3978C53C-7129-4767-9E8B-DF8DB808F045}
FileVersion=1,0,0,1
RegisterServer=yes
[cg.dll]
FileVersion=1,41,603,92
;FileVersion définit la version minimale nécessaire à l'éxécution de l'ActiveX
hook=IPlayDLLs.cab_installer
;hook définit la section où l'on doit aller si on ne trouve pas le fichier

[DevIL.dll]
FileVersion=
;FileVersion vide signifie que toutes les versions sont acceptées
hook=IPlayDLLs.cab_installer
[ILU.dll]
FileVersion=
hook=IPlayDLLs.cab_installer
[OgreMain.dll]
FileVersion=
hook=IPlayDLLs.cab_installer
[OgrePlatform.dll]
FileVersion=
hook=IPlayDLLs.cab_installer
[Plugin_ParticleFX.dll]
FileVersion=
hook=IPlayDLLs.cab_installer
[RenderSystem_Direct3D9.dll]
FileVersion=
hook=IPlayDLLs.cab_installer
[RenderSystem_GL.dll]
FileVersion=
hook=IPlayDLLs.cab_installer
[zlib1.dll]
FileVersion=1,2,1,0
hook=IPlayDLLs.cab_installer
[IPlayDLLs.cab_installer]
;On indique où se trouve le .cab contenant les DLLs manquantes
file-win32-x86=http://www.fordev-studio.com/IPlayDLLs.cab
;On indique le nom du fichier .inf situé dans IPlayDLLs.cab, pour l'installation des DLLs manquantes
InfFile=IPlayDLLs.inf

[DefaultInstall]
;Section définissant les paramètres d'installation (ici copie des fichiers nécessaires, enregistrement de l'ActiveX)
CopyFiles = IPlayBin,PluginsFile,InfFiles
RegisterDLLs = RegisterSection
[IPlayBin]
IPlay.ocx
[PluginsFile]
Plugins.cfg
[InfFiles]
IPlay.inf

[DestinationDirs]
;Section définissant les dossiers de destination des différents fichiers
IPlayBin = 16422, ForDevStudio\IPlay
PluginsFile = 16422, ForDevStudio\IPlay
InfFiles = 17

[RegisterSection]
;Section nécessaire pour l'enregistrement de l'ActiveX
16422,ForDevStudio\IPlay,IPlay.ocx,1

[Strings]
VersionNumber = "1.0.0.1"
GUID = "{3978C53C-7129-4767-9E8B-DF8DB808F045}"

<!-- END TEMPLATE: bbcode_code -->
Il enregistre mon ActiveX, fait les copies demandées, mais il semble ignorer la section :

[IPlayDLLs.cab_installer]
file-win32-x86=http://www.fordev-studio.com/IPlayDLLs.cab
InfFile=IPlayDLLs.inf

<!-- END TEMPLATE: bbcode_code -->
Et du coup, il ne m'installe pas les DLLs nécessaires à l'éxécution de mon ActiveX.

Quelqu'un peut-il m'aider?

3 réponses

Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

En fait ça ne marche pas en local mais ça installe sans problème sur le net.
Donc mon problème n'en est pas un.
Messages postés
2
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
4 octobre 2007

Salut Dragonjoker59,

Une petite question,
je créé un objet COM à utiliser en tant que activeX, 
j'utilise VB.NET = OK
le fichier dll est créé et fonctionne (fait des tests)
Kel CLSID je doit recup pour installer mon object avec les balise (<Object> </object>) lors de l'instantiation de mon objet ??
Y a t-il une syntaxe ou procedure à integer dans mon code D'assembly pour que mon objet install son CLSID au niveau de la base de registre ??

pour l'instant je tourne en rond avec les différents CLSID.

merci de ta réponse.






ThyThy--TitiLebo
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

Je ne sais pas comment ça se passe pour le VB.NET vu que je développe en C++, mais as-tu implémenté les fonctions DLLRegisterServer, DLLUnregisterServer, CreateComponentCategory
, RegisterCLSIDInCategory et UnRegisterCLSIDInCategory ?