日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Web發(fā)布cab文件打包的ActiveX控件總結(jié)

 ookkhh 2011-09-15

一、程序描述:
程序環(huán)境:windows Xp sp2, ie 6, tomcat 5.5, vc++6.0

程序過程:控件做成ocx文件,用于客戶端調(diào)用本地硬件,其中有用到第三方幾個.dll文件。采用windows自帶iexpress.exe 打包成cab文件,在服務(wù)器端jsp頁面進行控件調(diào)用,下載cab文件并自動注冊。

二、程序問題:
遇到問題:
1.       cab文件無法下載,而且根本不加提示。
2.       下載好的cab文件在system32中能夠看到,但是頁面仍然不能顯示,一把紅叉,并且無法使用。

問題測試:
1.       瀏覽器頁面根本沒有下載提示,考慮應(yīng)該是cab的路徑問題,也曾考慮是ie瀏覽器的安全問題。將安全降到最低測試。反復(fù)更改cab路徑。
2.       這個問題最郁悶,搞了很久。考慮首先是安全問題,然后在網(wǎng)上搜索之后說是sp2調(diào)高了安全策略,有說降低安全,有說需要對程序進行數(shù)字簽名。

問題解決:
1.       確實是路徑不對,與安全無關(guān)。當(dāng)在jsp中代碼為:
<OBJECT id=pos codebase="TestCAB.CAB#version=1,0,0,1" height=100 width=100 classid="CLSID:719A1D6E-7099-4123-9D63-F0118AFF2D61" VIEWASTEXT></OBJECT>
TestCAB.CAB文件應(yīng)該放置在tomcat5.5安裝目錄Tomcat 5.5\webapps下該調(diào)用jsp所在的工程下。
2.       不需要更改安全級別,而應(yīng)該在Internet選項-〉安全-〉受信任的站點-〉站點 中添加服務(wù)器地址。注意:不要選復(fù)選框“對該區(qū)域中的所有站點要求服務(wù)器驗證”。

三、總結(jié):
1. 將ocx文件以及第三方dll文件打包成cab文件:
Internet 軟件分發(fā)單位是“軟件包”,它由包含.INF文件或軟件分發(fā).OSD文件(或兩者都包括)的.CAB文件所組成。一個分發(fā)單位也可以包含軟件組件,如 ActiveX 控件(.OCX)、.DLL文件、.EXE文件、Java類文件或小程序。當(dāng)Web頁上OBJECT元素的CODEBASE特性引用包含.INF文件的. CAB文件時,Internet Explorer將自動把.CAB文件作為軟件分發(fā)單位下載并安裝,每次訪問時還會自動檢測版本并進行更新。
INF文件是一個文本文件,指定運行控件所需要下載或者呈交的文件(比如.DLL或者其它.OCX)。一個.INF文件就捆綁了.CAB壓縮文件所有的必須文件。 缺省情況下,與現(xiàn)有硬盤中文件版本號相同的文件不被下載。
先自己寫了一個inf文件,其中信息包括將.ocx文件,以及相關(guān)的.dll文件打包,并下載到文件夾:\WINDOWS\system32,詳細(xì)標(biāo)注如下:
[version]   
signature="$CHICAGO$"
AdvancedINF=2.0

[DefaultInstall]   
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[DestinationDirs]
install.files=11
[SourceDisksNames]   
1=%DiskName%,TestCAB.CAB,1

[Add.Code]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll

[install.files]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll

[SourceDisksFiles]
pcpos.ocx=1
Comm.dll=1
pcpos.dll=1
TCPCLNT.dll=1

[pcpos.ocx]
file-win32-x86=thiscab   
RegisterServer=yes   
clsid={719A1D6E-7099-4123-9D63-F0118AFF2D61}   
DestDir=11   
FileVersion=1,0,0,1

[Comm.dll]
file-win32-x86=thiscab   
RegisterServer=yes                        
DestDir=11   
FileVersion=1,0,0,1

[pcpos.dll]
file-win32-x86=thiscab   
RegisterServer=yes     
DestDir=11   
FileVersion=1,0,0,1

[TCPCLNT.dll]
file-win32-x86=thiscab   
RegisterServer=yes     
DestDir=11   
FileVersion=1,0,0,1

[RegisterFiles]   
%11%\pcpos.ocx

注釋:
"thiscab" 是一個關(guān)鍵字,意指包含該INF的CAB文件。也可以從網(wǎng)上下載所需要的DLL文件,只要指定一個HTTP 網(wǎng)址即可,如:
file-win32-x86=http://www./mydir/NEEDED.DLL
關(guān)鍵字"file-win32-x86" 指定平臺是 x86。
文件版本號可見屬性。
"DestDir"指的是裝載目錄或者文件的地址: 11 指定為系統(tǒng)目錄 WINDOWS/ /SYSTEM32;
"clsid" 指的是要安裝控件的CLSID。

制作cab:
使用\WINDOWS\system32\iexpress.exe。
1)        選擇“Create new Self Extraction Directive file”,點擊下一步。
2)        選擇“Create compressed files only(ActiveX Installs)”,點擊下一步。
3)        點擊Add,文件添加(pcpos.ocx,pcpos.dll,comm.dll,tcpclnt.dll),點擊下一步。
4)        點擊Browse,輸入.CAB文件的存放地址(包含所取文件名),這里取TestCAB.CAB,并且要選中 “Store files using Long File Name inside Package”。點擊下一步。
5)        選擇“Don’t save”,一直點擊下一步,直到完成。

注意:
如果控件已經(jīng)在客戶機注冊,并且不是通過.CAB的方式注冊,那么通過.CAB自動注冊的時候,該控件將無法被更新。必須先手動刪除該文件。

2. 對CAB文件進行數(shù)字簽名
傳說中數(shù)字簽名之后就可以不出現(xiàn)提示而自動下載,所以也試試:
在\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin 中間有三個小工具,就用他們來實現(xiàn)數(shù)字簽名。
1.Makecert.exe ---證書創(chuàng)建工具
2.Cert2Spc.exe ---發(fā)行者證書測試工具
3.Signcode.exe ---文件簽名工具

步驟:
1)        makecert -ss name -n "CN=公司名" -sv d:\pos.pvk -r d:\pos.cer 其中sk-表示主題的密鑰容器位置,ss-主題的證書存儲名稱, n-證書頒發(fā)對象,r-證書存儲位置,-sv 導(dǎo)出私鑰文件(為了簽名使用)。注意:這個時候會讓輸入三次密碼,三次要完全一致。
2)        使用Cert2Spc生成spc發(fā)行者證書(可選):cert2spc d:\pos.cer c:\pos.spc
3)        雙擊signcode,不帶參數(shù)會啟動簽名向?qū)?。先選擇要簽名文件,下一步,選擇“自定義”,下一步,選擇“從文件選擇”,添加剛生成的pos.cer證書,下一步,選擇剛生成的私鑰pos.pvk,再下一步,可spc證書,再一直下一步。添加時間戳,在時間戳填入http: //timestamp.verisign.com/scripts/timstamp.dll TestCAB.CAB,再下一步完成。

這樣就對CAB文件進行了簽名,但是這個時候點擊這個文件會發(fā)現(xiàn)證書不可用,原因是證書沒有安轉(zhuǎn)。文件屬性->數(shù)字證書->詳細(xì)信息-〉查看證書-〉安裝證書,進入安裝證書向?qū)?,存放區(qū)域選擇“受信任的根證書頒發(fā)機構(gòu)”,點擊完成即可。

在客戶端測試:
1)        加入證書,瀏覽器-〉工具-〉Internet選項-〉內(nèi)容-〉證書-〉受信任的頒發(fā)機構(gòu)-〉導(dǎo)入證書。
2)        在有證書的情況下,如果服務(wù)器沒有加入“可信任網(wǎng)址”,提示下載的時候會顯示證書所簽內(nèi)容,沒有證書則提示為“未知”。
3)        如果服務(wù)器已加入“可信任網(wǎng)址”,并且已導(dǎo)入證書,則不提示任何信息,在用戶毫無感覺情況下下載。如果沒有加入“可信任網(wǎng)址“,控件可以正常下載但仍然不能正常使用,與是否簽名無關(guān)。

四、問題:
1.是否可以不添加“可信任網(wǎng)址”。
2.?dāng)?shù)字簽名的作用,授權(quán)證書與不授權(quán)證書的區(qū)別。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多