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

Installation d'un ActiveX

2 réponses
Avatar
ByB
Bonjour,

Je développe un ActiveX sous Windows XP, qui devrait être installé chez
les utilisateurs via une page Web.

J'ai entendu dire que pour l'install, il fallait générer un fichier
.CAB contenant l'ActiveX et un fichier .INF contenant des informations
pour l'installation.

a) Où puis-je trouver des informations et des exemples sur la syntaxe
de ce fichier .INF ?

b) Pour fonctionner, mon ActiveX doit disposer d'une DLL spécifique qui
doit se trouver dans le dossier WINDOWS de l'utilisateur.
Comment puis-je faire pour qu'à l'installation de l'ActiveX, cette DLL,
qui sera contenue dans le fichier .CAB avec l'ActiveX, soit placée dans
le bon dossier ?

Merci !

--
Le rhinocéros, d'une agilité surprenante pour sa structure, en proie à
une violente rage - ce qui est fréquent chez ces animaux laids et
pauvres d'instinct -, bondissait comme un fou, brisait, réduisait en
miettes les bambous qui se trouvaient autour de lui. De temps à autre,
il se roulait par terre en agitant ses courtes pattes, enfonçait sa
corne dans les herbes, se relevait et se remettait à bondir.
[Emilio Salgari, Les Mystères de la jungle noire,1895]

2 réponses

Avatar
Patrick Philippot
ByB wrote:
J'ai entendu dire que pour l'install, il fallait générer un fichier
.CAB contenant l'ActiveX et un fichier .INF contenant des informations
pour l'installation.

a) Où puis-je trouver des informations et des exemples sur la syntaxe
de ce fichier .INF ?

b) Pour fonctionner, mon ActiveX doit disposer d'une DLL spécifique
qui doit se trouver dans le dossier WINDOWS de l'utilisateur.
Comment puis-je faire pour qu'à l'installation de l'ActiveX, cette
DLL, qui sera contenue dans le fichier .CAB avec l'ActiveX, soit
placée dans le bon dossier ?



Bonjour,

Les articles suivants peuvent déjà aider:

http://support.microsoft.com/kb/167158/EN-US/
http://support.microsoft.com/kb/165075/EN-US/
http://support.microsoft.com/kb/165075/EN-US/

Le dossier Windows est représenté par la valeur 10 dans les scripts et
le dossier SYSTEM32 par 11 (ne me demandez surtout pas pourquoi :-) ).
Notez que le .INF inséré dans le .CAB doit avoir le même nom que le
.CAB.

Veuillez également noter que votre package devrait normalement être
signé digitalement (clés à obtenir auprès de Verisign ou organisme
similaire). S'il ne l'est pas, dans un grand nombre de cas, le
téléchargement sera refusé surtout sous XP SP2. Mais tout utilisateur
raisonnable ou tout administrateur un tant soit peu professionnel dans
une entreprise interdira le téléchargement de contrôles non signés.
L'obtention de clés pour la signature prend un peu de temps (et coûte un
peu d'argent) car une enquête est nécessaire, aussi il faut vous y
prendre à l'avance. Pas au moment de mettre vos pages en ligne.

Ce point est essentiel. Voir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaxctrl/html/msdn_deplactx.asp .

Enfin, votre page ne fonctionnera que sous IE ou dans un browser
disposant d'un plugin de support des ActiveX Controls. Par exemple,
Firefox nécessite un plugin spécial pour les ActiveX Controls. S'il
n'est pas installé chez l'utilisateur, votre page ne fonctionnera pas.

Voici un exemple de .INF très simple installant un ActiveX Control
développé avec VB et nécessitant la runtime VB :

; ================== MonControl.inf ====================== ; Ce fichier pilote le téléchargement des modules nécessaires
; au fonctionnement de MonControl sur la station cliente.

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
Msvbvm60.dll=Msvbvm60.dll
MonControl.ocx=MonControl.ocx

[Msvbvm60.dll]
FileVersion=6,0,88,77
hook=VBRunTimeInstaller

[VBRunTimeInstaller]
file-win32-x86=https://www.monserveur.com/monappli/vbruntime.cab
InfFile=vbruntime.inf

[MonControl.ocx]
file-win32-x86=thiscab
clsid={155AD126-8C97-11D3-A7CF-0060087342CE}
FileVersion=1,1,0,8
RegisterServer=yes


; Tout part de la section ADD.Code
; Chaque entrée spécifie le nom d'un module à installer
; et indique quelle section décrit cette installation
; (habituellement, la section porte le même nom que le module)
;
; MonControl.ocx est inclus dans le fichier .CAB et indique
; un numéro de version minimum et un CLSID.
; Si ces conditions ne sont pas remplies, le .OCX est installé
; automatiquement.
;
; Pour la runtime, si elle n'est pas présente ou pas à la bonne
; version, IE télécharge le package VBRUNTIME.CAB à l'URL indiquée
; et procède à l'installation selon les indications de VBRUNTIME.INF
; qui sera présent dans VBRUNTIME.CAB.
;
; Ce mécanisme est décrit dans la MSDN Library par l'article Q165075
; ainsi que dans la documentation de l'assistant d'empaquetage de VB.

Voici un exemple plus complexe pour un contrôle développé en VC++. Il
installe le contrôle, quelques bitmaps dans le répertoire Windows et
vérifie si la runtime est rpésente. Si elle ne l'est pas, il l'installe.

; ================== exemple.inf ====================== ; Ce fichier pilote le téléchargement des modules nécessaires
; au fonctionnement de moncontrol sur la station cliente.

; La section ADD.CODE indique quelle section du script doit être
exécutée pour
; installer un fichier particulier. Par exemple, pour installer
moncontrol.ocx,
; l'interpréteur va exécuter la section [moncontrol.ocx] (le nom peut
être différent
; de celui du fichier).
;
; La section [moncontrol.ocx] indique
;
; file-win32-x86=thiscab
; le fichier se trouve dans le .CAB contenant ce .INF.
; clsid={291B1986-C344-11D2-A7CE-0060087342CE}
; le CLSID du composant
; FileVersion=1,7,0,0
; la version minimum
; RegisterServer=yes
; que le fichier doit être enregistré
;
; Pour les fichiers runtime des MFC, chaque section indique que si le
fichier
; n'est pas présent, on doit exécuter la section [Mfc42Installer]

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
Mfc42.dll=Mfc42.dll
Msvcp60.dll=Msvcp60.dll
Msvcrt.dll=Msvcrt.dll
Olepro32.dll=Olepro32.dll
moncontrol.ocx=moncontrol.ocx
bfd.bmp¿d.bmp
quit.bmp=quit.bmp
zoom.bmp=zoom.bmp
blocs.bmp=blocs.bmp
flechdro.bmp=flechdro.bmp
flechgau.bmp=flechgau.bmp
proc.bmp=proc.bmp
retour.bmp=retour.bmp
service.bmp=service.bmp
type.bmp=type.bmp
contexte.bmp=contexte.bmp
deco.bmpÞco.bmp
pointfic.bmp=pointfic.bmp
acteur.bmp¬teur.bmp

[Msvcrt.dll]
FileVersion=6,0,8797,0
hook=Mfc42Installer

[Mfc42.dll]
FileVersion=6,0,8665,0
hook=Mfc42Installer

[Msvcp60.dll]
FileVersion=6,0,8168,0
hook=Mfc42Installer

[Olepro32.dll]
FileVersion=5,0,4277,1
hook=Mfc42Installer

[Mfc42Installer]
file-win32-x86=http://svr/rep/cabs/Mfc42.cab
InfFile=mfc42.inf

[moncontrol.ocx]
file-win32-x86=thiscab
clsid={291B1986-C344-11D2-A7CE-0060087342CE}
FileVersion=1,7,0,0
RegisterServer=yes

[bfd.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[acteur.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[quit.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[zoom.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[blocs.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[flechdro.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[flechgau.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[proc.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[retour.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[service.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[type.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[deco.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[contexte.bmp]
file-win32-x86=thiscab
FileVersion DestDir

[pointfic.bmp]
file-win32-x86=thiscab
FileVersion DestDir

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
ByB
Merci beaucoup pour cette réponse complête et détaillée !
Et bonnes fêtes de Pâques ! :-)


Patrick Philippot a utilisé son clavier pour écrire :
ByB wrote:
J'ai entendu dire que pour l'install, il fallait générer un fichier
.CAB contenant l'ActiveX et un fichier .INF contenant des informations
pour l'installation.

a) Où puis-je trouver des informations et des exemples sur la syntaxe
de ce fichier .INF ?

b) Pour fonctionner, mon ActiveX doit disposer d'une DLL spécifique
qui doit se trouver dans le dossier WINDOWS de l'utilisateur.
Comment puis-je faire pour qu'à l'installation de l'ActiveX, cette
DLL, qui sera contenue dans le fichier .CAB avec l'ActiveX, soit
placée dans le bon dossier ?



Bonjour,

Les articles suivants peuvent déjà aider:

http://support.microsoft.com/kb/167158/EN-US/
http://support.microsoft.com/kb/165075/EN-US/
http://support.microsoft.com/kb/165075/EN-US/

Le dossier Windows est représenté par la valeur 10 dans les scripts et le
dossier SYSTEM32 par 11 (ne me demandez surtout pas pourquoi :-) ). Notez que
le .INF inséré dans le .CAB doit avoir le même nom que le .CAB.

Veuillez également noter que votre package devrait normalement être signé
digitalement (clés à obtenir auprès de Verisign ou organisme similaire). S'il
ne l'est pas, dans un grand nombre de cas, le téléchargement sera refusé
surtout sous XP SP2. Mais tout utilisateur raisonnable ou tout administrateur
un tant soit peu professionnel dans une entreprise interdira le
téléchargement de contrôles non signés. L'obtention de clés pour la signature
prend un peu de temps (et coûte un peu d'argent) car une enquête est
nécessaire, aussi il faut vous y prendre à l'avance. Pas au moment de mettre
vos pages en ligne.

Ce point est essentiel. Voir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaxctrl/html/msdn_deplactx.asp
.

Enfin, votre page ne fonctionnera que sous IE ou dans un browser disposant
d'un plugin de support des ActiveX Controls. Par exemple, Firefox nécessite
un plugin spécial pour les ActiveX Controls. S'il n'est pas installé chez
l'utilisateur, votre page ne fonctionnera pas.

Voici un exemple de .INF très simple installant un ActiveX Control développé
avec VB et nécessitant la runtime VB :

; ================== MonControl.inf ====================== > ; Ce fichier pilote le téléchargement des modules nécessaires
; au fonctionnement de MonControl sur la station cliente.

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
Msvbvm60.dll=Msvbvm60.dll
MonControl.ocx=MonControl.ocx

[Msvbvm60.dll]
FileVersion=6,0,88,77
hook=VBRunTimeInstaller

[VBRunTimeInstaller]
file-win32-x86=https://www.monserveur.com/monappli/vbruntime.cab
InfFile=vbruntime.inf

[MonControl.ocx]
file-win32-x86=thiscab
clsid={155AD126-8C97-11D3-A7CF-0060087342CE}
FileVersion=1,1,0,8
RegisterServer=yes


; Tout part de la section ADD.Code
; Chaque entrée spécifie le nom d'un module à installer
; et indique quelle section décrit cette installation
; (habituellement, la section porte le même nom que le module)
;
; MonControl.ocx est inclus dans le fichier .CAB et indique
; un numéro de version minimum et un CLSID.
; Si ces conditions ne sont pas remplies, le .OCX est installé
; automatiquement.
;
; Pour la runtime, si elle n'est pas présente ou pas à la bonne
; version, IE télécharge le package VBRUNTIME.CAB à l'URL indiquée
; et procède à l'installation selon les indications de VBRUNTIME.INF
; qui sera présent dans VBRUNTIME.CAB.
;
; Ce mécanisme est décrit dans la MSDN Library par l'article Q165075
; ainsi que dans la documentation de l'assistant d'empaquetage de VB.

Voici un exemple plus complexe pour un contrôle développé en VC++. Il
installe le contrôle, quelques bitmaps dans le répertoire Windows et vérifie
si la runtime est rpésente. Si elle ne l'est pas, il l'installe.

; ================== exemple.inf ====================== > ; Ce fichier pilote le téléchargement des modules nécessaires
; au fonctionnement de moncontrol sur la station cliente.

; La section ADD.CODE indique quelle section du script doit être exécutée
pour
; installer un fichier particulier. Par exemple, pour installer
moncontrol.ocx,
; l'interpréteur va exécuter la section [moncontrol.ocx] (le nom peut être
différent
; de celui du fichier).
;
; La section [moncontrol.ocx] indique
;
; file-win32-x86=thiscab
; le fichier se trouve dans le .CAB contenant ce .INF.
; clsid={291B1986-C344-11D2-A7CE-0060087342CE}
; le CLSID du composant
; FileVersion=1,7,0,0
; la version minimum
; RegisterServer=yes
; que le fichier doit être enregistré
;
; Pour les fichiers runtime des MFC, chaque section indique que si le fichier
; n'est pas présent, on doit exécuter la section [Mfc42Installer]

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
Mfc42.dll=Mfc42.dll
Msvcp60.dll=Msvcp60.dll
Msvcrt.dll=Msvcrt.dll
Olepro32.dll=Olepro32.dll
moncontrol.ocx=moncontrol.ocx
bfd.bmp¿d.bmp
quit.bmp=quit.bmp
zoom.bmp=zoom.bmp
blocs.bmp=blocs.bmp
flechdro.bmp=flechdro.bmp
flechgau.bmp=flechgau.bmp
proc.bmp=proc.bmp
retour.bmp=retour.bmp
service.bmp=service.bmp
type.bmp=type.bmp
contexte.bmp=contexte.bmp
deco.bmpÞco.bmp
pointfic.bmp=pointfic.bmp
acteur.bmp¬teur.bmp

[Msvcrt.dll]
FileVersion=6,0,8797,0
hook=Mfc42Installer

[Mfc42.dll]
FileVersion=6,0,8665,0
hook=Mfc42Installer

[Msvcp60.dll]
FileVersion=6,0,8168,0
hook=Mfc42Installer

[Olepro32.dll]
FileVersion=5,0,4277,1
hook=Mfc42Installer

[Mfc42Installer]
file-win32-x86=http://svr/rep/cabs/Mfc42.cab
InfFile=mfc42.inf

[moncontrol.ocx]
file-win32-x86=thiscab
clsid={291B1986-C344-11D2-A7CE-0060087342CE}
FileVersion=1,7,0,0
RegisterServer=yes

[bfd.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[acteur.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[quit.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[zoom.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[blocs.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[flechdro.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[flechgau.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[proc.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[retour.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[service.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[type.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[deco.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[contexte.bmp]
file-win32-x86=thiscab
FileVersion > DestDir

[pointfic.bmp]
file-win32-x86=thiscab
FileVersion > DestDir



--
Le rhinocéros, d'une agilité surprenante pour sa structure, en proie à
une violente rage - ce qui est fréquent chez ces animaux laids et
pauvres d'instinct -, bondissait comme un fou, brisait, réduisait en
miettes les bambous qui se trouvaient autour de lui. De temps à autre,
il se roulait par terre en agitant ses courtes pattes, enfonçait sa
corne dans les herbes, se relevait et se remettait à bondir.
[Emilio Salgari, Les Mystères de la jungle noire,1895]