說明
首先說下為什麼要把ocx控件打包成cab檔案,這是因為ocx控件,需要使用者單獨下載下傳,然後自己通過resiger指令,在cmd中注冊,這對于小白使用者,顯然不太顯示,是以就需要打包成cab檔案,由網頁作為ActiveX控件自動的下載下傳注冊,這樣使用者使用起來就輕松了多。
OCX打包CAB并過程(打包cab後可以在加入自定義簽名)
制作cab檔案時需要将所有的相關檔案都包含進去,可以通過Depends(VC自帶的)檢查需要的檔案。使用inf檔案将這些東西都寫進去。
1、制作inf檔案
setup.INF
最開始一般是[Version]區:
eg: [Version]
signature=" $CHICAGO$ "
AdvancedINF=2.0
接下來就是最重要的[Add.Code]區:
eg: [Add.Code]
getcertocx.ocx=getcertocx.ocx
前面是要下載下傳的檔案名,後面是對應這個檔案的區域名,可以是任何名字,不過一般都是和檔案的名字相同,這樣友善維護。
再接下來是各個檔案的區域了
[getcertocx.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={0A0488CF-F9AB-4AC4-AD8F-CD893553DD22}
DestDir=11
FileVersion=1,0,0,1
[getcertocx.ocx]區域中的第一個file值告訴ie到哪裡去得到這個ocx,file一共包括三個部分,第一部分是file,這個永遠都是這樣的;第二部分告訴聲明支援的OS,win32表示windows,mac就是蘋果MAC OX了;第三部分是CPU類型,比如說x86、mips等
file的值可以取三個:一個URL、ignore和thiscab,如果是URL則說明到URL所在的位置去下;如果是ignore說明對于這種OS和CPU,不需要下載下傳這個檔案;如果是thiscab就在目前的cab檔案中了。
第二部分是RegisterServer,可以取兩個值yes和no,如果為yes則說明ie要注冊該ocx,如果是no就不必了;
接下來是clsid,需要填寫該ocx的class guid。
再下來是DestDir,它的值是ocx将要存到本地硬碟的位置,如果它的值是10,則将ocx放到\Windows或者\WinNT下;如果是11,則放到\Windows\System或者
\WinNT\System32下;如果是空(就是沒有值)則會放到\Windows或者\WinNT下的Downloaded Program Files目錄下;
最後是FileVersion,說明了ocx的版本号。
[version]
; version signature (same for both NT and Win95) do not remove
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
FerlyOcx2005.ocx=FerlyOcx2005.ocx
libFLAlgJniCall.dll=libFLAlgJniCall.dll
setup.inf=setup.inf
[install.files]
FerlyOcx2005.ocx=FerlyOcx2005.ocx
libFLAlgJniCall.dll=libFLAlgJniCall.dll
setup.inf=setup.inf
[FerlyOcx2005.ocx]
clsid={E962EB9D-583C-449D-AE47-1F0C389C0031}
file-win32-x86=thiscab
FileVersion=1,0,0,1
DestDir=11
RegisterServer=yes
[libFLAlgJniCall.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
[setup.inf]
file=thiscab
[RegisterFiles]
%11%\FerlyOcx2005.ocx
; end of INF file
2、制作cab檔案
利用iexpress.exe(windows提供的一個向導式cab制作工具)

選“建立新的自解壓縮指定檔案”,點“下一步”。
選“僅建立壓縮檔案(ActiveX安裝)”,點“下一步”。
點“添加”将上邊制作好的setup.inf和getcertocx.ocx檔案添加進來,點“下一步”。
點“浏覽”輸入要生成的CAB檔案名稱,并選中“在軟體包中使用長檔案名儲存檔案”,之後點“下一步”。
選“不儲存”,點“下一步”。
點“下一步”。
點“完成”退出向導,cab檔案生成。