|
瀏覽器中運(yùn)行的ActiveX 自動(dòng)升級(jí)功能實(shí)現(xiàn)
(http://blog.csdn.net/wqf2)
現(xiàn)在我們公司的一些應(yīng)用產(chǎn)品有B/S的需求,而ActiveX已經(jīng)作為我們C/S向B/S過(guò)渡的最方便的橋梁。B/S最大的好處就是不需客戶端運(yùn)行安裝程序,很容易部署。在我們傳統(tǒng)的C/S的客戶程序中,自動(dòng)升級(jí)功能采用的模式是:服務(wù)端運(yùn)行一個(gè)自動(dòng)升級(jí)服務(wù)程序,客戶端連接這個(gè)服務(wù)根據(jù)版本判斷,下載升級(jí)。而現(xiàn)在B/S結(jié)構(gòu)中,升級(jí)一個(gè)ActiveX控件也采用這種模式的話,就有點(diǎn)小題大做了。 我想談?wù)勎业腁ctiveX自動(dòng)升級(jí)功能的實(shí)現(xiàn)方法。 首先,將ActiveX控件和依賴文件打成cab包。我所用的工具是Visual Studio.Net 2003 中的制作cab工具。生成的cab包中會(huì)多出一個(gè)文件osd的XML文件。這個(gè)文件中描述了包的名字,包的版本和組件信息。其中包的版本就是我們以后升級(jí)的比較條件。在生成包之前,我們可以利用Visual Studio.Net 2003對(duì)這個(gè)版本進(jìn)行設(shè)置。 然后,編寫調(diào)用ActiveX的html文件,調(diào)用如下: <object classid="clsid:4B9759DD-5550-40BB-A932-E51AE6E51818" codebase="http://www./test.CAB#version=1,0,0,0"> </object> classid就是組件的CLSID。codebase就是ActiveX組件的下載地址和CAB包的版本。 瀏覽器瀏覽這個(gè)網(wǎng)頁(yè)的時(shí)候,就會(huì)先判斷本機(jī)是否有這個(gè)ActiveX,如果沒(méi)有就去http://www./test.CAB下載;如果有就判斷版本,當(dāng)本機(jī)安裝的cab文件的版本較低的話,就會(huì)從http://www./test.CAB下載更新。所以這樣就可以不用編寫或改寫任何程序就能實(shí)現(xiàn)自動(dòng)升級(jí)功能。當(dāng)有新版本的ActiveX時(shí),就可以新打一個(gè)cab包,將這個(gè)cab版本增加一下,然后在codebase的version那改成對(duì)應(yīng)的版本就行了。 題外話:從網(wǎng)站上下載的cab文件會(huì)保存到本機(jī)windows目錄下的“Downloaded Program Files”文件夾里,如果你的cab包更新過(guò)多次,舊的ocx文件并沒(méi)有被覆蓋,而是共存在cab包中,也就是說(shuō),你機(jī)器上會(huì)有那個(gè)ActiveX的各種版本,兼容性得到有效的保障。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=66965
|