[ActiveX] Installation de DLLs à partir d'un .cab
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 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
[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 ; si le pc possède la dll avec une version précédente, il passe par le hook
;hook désigne la section à laquelle on doit se référer si on ne trouve pas le fichier sur le PC
hook=IPlayDLLs.cab_installer
[DevIL.dll]
FileVersion= ;la version 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}" |
Il enregistre mon ActiveX, fait les copies demandées, mais il semble ignorer la section :
Code:
1 2 3 4
|
[IPlayDLLs.cab_installer]
file-win32-x86=http://www.fordev-studio.com/IPlayDLLs.cab
InfFile=IPlayDLLs.inf |
Et du coup, il ne m'installe pas les DLLs nécessaires à l'éxécution de mon ActiveX.
Quelqu'un peut-il m'aider?