1.首先将要打包的文件,建一个cab文件夹
2.cab文件夹内放上相应的ocx文件以及dll,并且要加入的文件夹及其文件。
3.在cab文件夹内,新建一个与ocx同名的inf安装配置文件
[version] signature="$CHICAGO$" AdvancedINF=2.0 [DefaultInstall] CopyFiles=FileList RegisterOCXs=RegisterDll [DefaultUninstall] cleanup=1 Delfiles=FileList UnRegisterOCXs=RegisterDll [RegisterDll] %11%\cos\HyPlayer.ocx [DestinationDirs] FileList=11,cos [FileList] HyPlayer.ocx Nrcapc7.dll VARender7.dll VS_OEMPlugin\D00001_CREARO\AVCDecoder.dll VS_OEMPlugin\D00001_CREARO\c7codec.dll VS_OEMPlugin\D00001_CREARO\c7util.dll VS_OEMPlugin\D00001_CREARO\CRPostproc.dll VS_OEMPlugin\D00001_CREARO\d_shell.dll VS_OEMPlugin\D00001_CREARO\D00001_VideoDec.dll VS_OEMPlugin\D00001_CREARO\msvcp71d.dll VS_OEMPlugin\D00001_CREARO\msvcr71d.dll VS_OEMPlugin\D00001_CREARO\MSVCRTD.DLL [VideoPlayer.ocx] file-win32-x86=thiscab clsid={F9EEF56B-97B1-4303-9825-C9CDE4127BD2} FileVersion=1,0,0,0 DestDir=%11%\cos RegisterServer=yes [Nrcapc7.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos [VARender7.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos [VS_OEMPlugin\D00001_CREARO\AVCDecoder.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\c7codec.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\c7util.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\CRPostproc.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\d_shell.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\D00001_VideoDec.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\msvcp71d.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\msvcr71d.dll] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO [VS_OEMPlugin\D00001_CREARO\MSVCRTD.DLL] file-win32-x86=thiscab FileVersion=1,0,0,0 DestDir=%11%\cos\VS_OEMPlugin\D00001_CREARO
保存好此inf文件,然后右键,安装一下,最后看是不是c:\windows\system32有一个cos文件夹,此文件夹下还给新建了VS_OEMPlugin等子文件夹。。
上面的配置中 %11,表示的是C:\Windows\System32这个文件夹路径。如果其它文件要带文件,首先在声明文件时,加入相对路径,然后在section节([])中也用此相对路径指示即可。
4.将cab文件夹下的ocx进行数字签名
makecert -$ "individual" -r /sv "w.pvk" /n "CN=这里是公司名称" w.cer cert2spc w.cer w.spc signcode
依次运行上面3个dos命令,第一行是制作一个证书文件,里面设置好密码,简单点就用123456,第二行生成spc文件。最后一个是给文件加上数字签名。
5.在cab文件夹上一级,拷cabarc.exe,cabinet.dll这两个文件,进行打包。
打包时,先进入command模式,转到cab文件夹。然后输入
..\cabarc -r -p N ..\m.cab *
这样就在cabarc所在的位置,将cab文件夹下的打包成了cab。最后也将cab做一下数字签名。
6.测试,写一个 t.htm 文件,加入
<OBJECT id="viewocx" classid="clsid:F9EEF56B-97B1-4303-9825-C9CDE4127BD2" codebase="m.cab" width=640 height=500 align=center hspace=0 vspace=0 > <param name="Server" value="113.105.181.197"> <param name="Port" value="8866"> <param name="DevId" value="151038403525119133"> <param name="Channel" value="0"> </OBJECT>
7.将这个t.htm和m.cab拷到网页目录下,然后就可以试试了。
================================================================================
另外,Delphi7编写的ocx,是可以调试的。具体是在菜单->Run->Parameters指定:
Host Application : C:\Program Files (x86)\Internet Explorer\iexplore.exe (64位系统,要指向到32位的ie)
Parameters : D:\Work\Prog2018\d7_ocx\bin\test.htm
Working Directory:D:\Work\Prog2018\d7_ocx\bin\
但是,如果IE是8.0的版本,则要更改注册表。我用的11,是没有调试起来。