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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?