http://www.cnblogs.com/weiwin/p/4493835.html
activeX 打包
原文?http://www.docin.com/p-409284488.html
CAB打包文檔說明
?
- 文檔目的
本文檔的目的在于說明將ocx和dll以及相關的文件打包成一個CAB包,以便在網頁下調用ocx控件時免去手工將dll和其他一下文件拷貝到客戶機,方便了現場施工。
?
- 打包工具
打包工具有makeCAB
其中,ActvxDoc.exe用來查看ocx的CLSID,signcode.exe用來對打包好的cab進行數字簽名,其它的用于生成數字認證文件。
?
- 打包過程
- 將打包工具makeCAB里面的所有文件放到系統文件夾system32目錄下
- 新建一個文件夾,將所有要打包進cab的文件放在該新建的文件夾下
- 編寫inf安裝文件。新建一個txt文本文檔,并將其改名為*.inf安裝文件,按照以下格式編寫inf文件。(打包時注意去除紅色的字)
[version]
signature="$CHINA$"
AdvancedINF=1.0
?
[Add.Code]?????????????--該段為所打包的文件
logocx.ocx=logocx.ocx
MFC42D.DLL=MFC42D.DLL
MFCO42D.DLL=MFCO42D.DLL
MSVCP60D.DLL=MSVCP60D.DLL
MSVCRTD.DLL=MSVCRTD.DLL
pssts.ini=pssts.ini
?
[logocx.ocx]????????????--打包的ocx
file=thiscab
clsid={5710EB41-87CE-4BF8-9A24-F520556714BB}???--ocx的序列號
FileVersion=1,0,0,1
RegisterServer=yes
?
--以下是其他的相關文件
[MFC42D.DLL]
file-win32-x86=thiscab???
RegisterServer=no? ??
DestDir=11?? ?????????????--存放目錄為system32
FileVersion=7,10,3052,4?
?
[MFCO42D.DLL]
file-win32-x86=thiscab???
RegisterServer=no???
DestDir=11??
FileVersion=7,10,3052,4?
?
[MSVCP60D.DLL]
file-win32-x86=thiscab???
RegisterServer=no???
DestDir=11??
FileVersion=7,10,3052,4?
?
[MSVCRTD.DLL]
file-win32-x86=thiscab???
RegisterServer=no???
DestDir=11??
FileVersion=7,10,3052,4?
?
[pssts.ini]
file-win32-x86=thiscab
DestDir=11
- 編寫運行的bat文件。新建一個txt文本文檔,并將其改名為*.bat運行文件,按照以下格式編寫bat文件。(打包時注意去除紅色的字)
--生成數字簽名文件*.pvk
--logocx是文件路徑
makecert -sk logocx logocx.pvk -n CN=迪科電力
--生成數字簽名文件*.cer
makecert -sk logocx.pvk logocx.cer
--生成數字簽名文件*.spc
cert2spc logocx.cer logocx.spc
--打包cab文件,其中【MFC42D.DLL MFCO42D.DLL MSVCP60D.DLL MSVCRTD.DLL pssts.ini logocx.ocx logocx.inf】為要打包進cab中的文件,注意要包含上一步編寫的inf文件
cabarc -s 6144 n logocx.cab MFC42D.DLL MFCO42D.DLL MSVCP60D.DLL MSVCRTD.DLL pssts.ini logocx.ocx logocx.inf
--運行數字簽名程序
signcode.exe
- 運行編寫好的bat文件。
將所有需要打包的文件和上兩步編寫好的inf、bat放在同一個目錄下,雙擊bat文件運行,首先生成數字簽名所需要的pvk、cer、spc文件,然后打包成cab,最后運行signcode.exe程序進行數字簽名。(以上步驟為雙擊bat文件后自動生成的)
在signcode界面中,
點擊【下一步】,點擊【瀏覽(R)…】,更改文件類型為*.cab,選中剛生成的cab文件,點擊【打開】,然后點擊【下一步】,
選擇【自定義】,然后點擊【下一步】,
點擊【從文件選擇】,打開剛才生成的cer文件,點擊【下一步】
首先選擇【磁盤上的私鑰文件】,點擊瀏覽選擇剛才生成的PVK文件,然后選擇【CSP中的私鑰】,在【密鑰容器】中選擇*.pvk(為剛才選擇的pvk),點擊【下一步】。
選中【sha1】,然后點擊【下一步】
選中【包括在以下PKCS#7(.p7b)文件中的證書(P)】,點擊瀏覽,選擇剛才生成的spc文件,點擊【下一步】
然后一直點擊【下一步】直到數字簽名完成。
- 版本控制
對.cab包進行版本更新,使用戶能夠打開瀏覽器時自動下載更新.cab包,需進行如下處理。
- 對ocx控件的版本進行更新。方法如下:打開源代碼,找到資源文件,修改版本信息,如下圖:
修改后重新生成ocx文件。
- 對打包時的.inf文件中ocx中的版本信息進行更新,舉例如下:
[logocx.ocx]????????????--打包的ocx
file=thiscab
clsid={5710EB41-87CE-4BF8-9A24-F520556714BB}???--ocx的序列號
FileVersion=1,0,0,1
RegisterServer=yes
修改FileVersion=1,0,0,3
?
- 頁面加載控件時添加版本信息,如下列紅色字體所示:<object id="slipprint"?style="display:none"?width=30?height=30?classid="CLSID:?5710EB41-87CE-4BF8-9A24-F520556714BB"?codebase="../activeX/DicEPSON532.cab#version=1,0,0,3">
?
?
- 注意事項
雖然已對打包好的cab進行了數字簽名,但是該簽名并未在網上注冊,在客戶端仍然需要設為信任站點。
?
6.如果安裝不成功可以安裝 depends 看看你的插件缺少什么dll,自行去補充
?
?
重要提示
?
?
?
平臺工具集 Visual Studio 2013 - Windows XP (v120_xp)
?
relase 編譯 多線程 選mt
?
所在的“項目”=>>“屬性”=>>“配置屬性”=>>“C/C++”=>>“預處理器”=>>“預處理定義”?移除_DENUG