我們打開淘寶等網(wǎng)站時,IE瀏覽器會提示安裝空間,這個控件便是用于對用戶名密碼進(jìn)行加密的ActiveX控件。如何在我們的站點(diǎn)上安裝如此控件,讓用戶可以通過簡單的點(diǎn)擊便可方便使用我們的空間呢?
下面是如何讓在你的站點(diǎn)上安裝控件的方法。
基礎(chǔ)知識
html語言中Object標(biāo)簽
定義和用法
定義一個嵌入的對象。請使用此元素向您的 XHTML 頁面添加多媒體。此元素允許您規(guī)定插入 HTML 文檔中的對象的數(shù)據(jù)和參數(shù),以及可用來顯示和操作數(shù)據(jù)的代碼。<object> 標(biāo)簽用于包含對象,比如圖像、音頻、視頻、Java applets、ActiveX、PDF 以及 Flash。object 的初衷是取代 img 和 applet 元素。不過由于漏洞以及缺乏瀏覽器支持,這一點(diǎn)并未實(shí)現(xiàn)。瀏覽器的對象支持有賴于對象類型。不幸的是,主流瀏覽器都使用不同的代碼來加載相同的對象類型。而幸運(yùn)的是,object 對象提供了解決方案。如果未顯示 object 元素,就會執(zhí)行位于 <object> 和 </object> 之間的代碼。通過這種方式,我們能夠嵌套多個 object 元素(每個對應(yīng)一個瀏覽器)。
實(shí)例
向HTML中添加對象:
1 <object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" id="Slider1"
2 width="100" height="50">
3 <param name="BorderStyle" value="1" />
4 <param name="MousePointer" value="0" />
5 <param name="Enabled" value="1" />
6 <param name="Min" value="0" />
7 <param name="Max" value="10" />
8 </object>
參考
http://www.w3school.com.cn/tags/tag_object.asp
Windows中注冊類ID:clsid
“通用唯一標(biāo)識符”(UUID),用于標(biāo)識 COM 組件。每個 COM 組件在 Windows 注冊表中都有自己的 CLSID,以便讓其他應(yīng)用程序加載。
ActiveX控件CLSID的獲取
在編譯完成每一個ActiveX控件之后,系統(tǒng)會生成ocx.html文件,其中是調(diào)用該ActiveX控件的方法。該頁面中有一個標(biāo)簽即為Object,其中有一行則記錄著該ocx文件的CLSID,如下:
1 <object
2 ID="TopoSceneViewer"
3 WIDTH=800
4 HEIGHT=600
5 CLASSID="CLSID:321B84C8-3745-4AC9-BF04-55753F40CE63">
6 </object>
創(chuàng)建cab文件
cab文件中需要包含一系列文件,其中.inf文件會告訴IE如何去安裝這些文件。我們從.inf文件開始
怎么寫inf
INF文件的組成有節(jié)(Sections),鍵(Key)和值(value)三部分。
關(guān)鍵節(jié)有
1 [Version]版本描述信息,主要用于版本控制。
2 [Strings]字符串信息,用于常量定義。
3 [DestinationDirs]定義系統(tǒng)路徑信息。
4 [SourceDisksNames]指明源盤信息。
5 [SourceDisksNames]指明源盤文件名。
6 [DefaultInstall]開始執(zhí)行安裝。
其它的節(jié)可以自定義
最開始一般是[Version]區(qū):
1 [Version]
2 signature="$XXXX$"
3 AdvancedINF=2.0
"Signature"項定義了該INF文件需要運(yùn)行在何種操作系統(tǒng)版本中。有$Windows NT$, $Chicago$, or $Windows 95$三個值供選擇,一般選擇$Chicago$即可。
接下來就是最重要的[Add.Code]區(qū):
1 [Add.Code]
2 Ctrl1.dll=C1Section
3 Ctrl2.dll=Ctrl2.dll
前面是要下載的文件名,后面是對應(yīng)這個文件的區(qū)域名,可以是任何名字,不過一般都是和文件的名字相同,這樣方便維護(hù)。
還有需要注意是在[Add.Code]區(qū)出現(xiàn)的文件要根據(jù)依賴性進(jìn)行排序,例如前面說的ctrl1.dll要依賴于ctrl2.dll,則ctrl2.dll要出現(xiàn)在ctrl1.dll的前面。因?yàn)榘惭b時是按照相反的順序進(jìn)行的,也就是說先安裝ctrl2.dll,然后才是ctrl1.dll,哧哧,記清楚了,不要搞反了。
再接下來是各個文件的區(qū)域了
1 [Ctrl1.dll]
2 file-win32-x86=thiscab
3 RegisterServer=yes
4 clsid={..}
5 DestDir=
6 FileVersion=1,0,0,0
[Ctrl1.dll]區(qū)域中的第一個file值告訴ie到哪里去得到這個dll,file一共包括三個部分,第一部分是file,這個永遠(yuǎn)都是這樣的(至少目前來說);第二部分告訴聲明支持的OS,win32表示windows,mac就是蘋果MAC OX了;第三部分是CPU類型,比如說x86、 ppc (Power PC)、 mips或者alpha了。
file的值可以取三個一個URL、ignore和thiscab,如果是URL則說明到URL所在的位置去下;如果是ignore說明對于這種OS和CPU,不需要下載這個文件(ctrl1.dll);如果是thiscab很明顯就在當(dāng)前的cab文件中了。
接下來是RegisterServer,可以取兩個值yes和no,如果為yes則說明ie要注冊該dll,如果是no就不必了。+如果這里選yes,則需要指定clsid,否則clsid一行可以省略。+
再下來是DestDir,它的值是dll將要存到本地硬盤的位置,如果它的值是10,則將dll放到/Windows或者/WinNT下;如果是11,則放到/Windows/System或者/WinNT/System32下;如果是空(就是沒有值)則會放到/Windows或者/WinNT下的Downloaded Program Files目錄下;
最后是FileVersion,這個就比較明顯了,說明了ctrl1.dll的版本號。
其他部分詳見參考文獻(xiàn)。
創(chuàng)建cab文件
- 如果需要創(chuàng)建cab文件,首先需要Cabarc或者M(jìn)akecab,它們隨著Cabinet SDK的安裝就有了,Cabinet SDK的下載地址是http://msdn.microsoft.com/workshop/management/cab/cabdl.asp
- Cabarc可以創(chuàng)建、查看或者解出cab里面的文件,而Makecab則只可以用來創(chuàng)建cab文件。
- 制作cab文件時需要將所有的相關(guān)文件都包含進(jìn)去,可以通過Depends(VC自帶的)檢查需要的文件。使用inf文件將這些東西都寫進(jìn)去。
- inf搞法:inf文件描述cab中所有的ocx及dll文件,inf通過一些命名區(qū)域來提供需要的信息。
cabarc N ctrl1.cab ctrl1.inf ctrl1.dll
N表示要創(chuàng)建一個新的文件,ctrl1.cab是創(chuàng)建的文件名,ctrl1.inf是cab的inf,后而是需要加到cab里的文件,可以使用通配符。
然后就可以將cab文件放到網(wǎng)頁上了
參考
- 如何編寫INF:http://www.cnblogs.com/sbdx/archive/2006/12/14/whatisinffile.html
- 如何寫cab相關(guān)的INF:http://docs.google.com/Doc?docid=0Aehzv88zbfy_ZGdncGdqczZfMjIxZHNnZDhtYzg&hl=zh_CN
簽名
申請證書
要使用到makecert工具,在VS2005目錄下搜索可以搜索到。
在命令提示行中執(zhí)行
1 makecert -sk myNewKey -r -n "CN=發(fā)證機(jī)關(guān)的名字,OU=Certification,O=公司名字,E=name@email.com" -ss my myNew.cer
2 cert2spc myNew.cer myNew.spc
makecert具體使用幫助可參考創(chuàng)建證書的工具(makecert.exe)
簽名
要使用到signtool工具,也可以在VS2005目錄下找到。
signtool工具有多種使用模式,下面使用的是帶UI的向?qū)J健?br />在命令提示行中執(zhí)行
之后進(jìn)入signcodewizard:
1 step1.選擇要簽名的cab文件
2 step2.自定義
3 step3.從文件中選擇 myNew.spc
4 step4.csp中的私鑰/密鑰容器:myNewKey
5 step5.sha1
6 step6.next
7 step7.描述:插件名稱/web:www.yourcompany.com
8 step8.http://timestamp.verisign.com/scripts/timstamp.dll
signtool 的具體使用幫助可參考簽名工具 (SignTool.exe)
本文轉(zhuǎn)自:http://blog.csdn.net/wangjingfei/article/details/5417028
其他鏈接:http://www.cnblogs.com/rushoooooo/archive/2011/06/22/2087542.html
posted on 2013-09-05 10:05
王海光 閱讀(716)
評論(0) 編輯 收藏 引用 所屬分類:
工具