分類
程式技術

OCX版本及自動更新功能

(由於是使用 ActiveX 方式, 故僅支援 IE 的瀏覽器.)

使用網頁部署程式是最方便的, 因為每台電腦都有 web browser, 利用 ocx 的方式更是好用的更新方式, 然而, 版本檢查更新是該部署方式最好用的地方.

如何利用 ocx 部署應用程式, 並且自動偵測使用者端的版本及現在要部署的版本新舊狀況後, 再進行更新呢? 因為 ocx 在 build 時, 可以放入版本資訊, 例如 1.0.0.0, 其中 4個代碼分別為:

major.minor.build.revision


放到 ocx 裡的資訊, 會在安裝於客戶端電腦時, 記錄於 %windir%\downloaded program files 裡, 這樣一來, 系統就會知道目前的 ocx 版本, 但是變成 client 都要 download 才會知道版本, 若是 ocx 過大, 不就會有要先下載才能比對的問題?

其實不然, 在 <object> 的語法中, 有個 codebase 的屬性, 該屬性可以指定該 ocx 的版本(註一), 利用這個資訊, web browser 將會自動帶出已安裝於客戶端的同 guid 的 ocx 版本, 一但比較出來, web 上的 #x,x,x,x 的版本較新於已安裝於客戶端的 ocx 版本時, 將會提示使用者是否下載, 由於是全部信任 web 上的版本屬性, 所以一旦寫錯了, 將會有一些問題, 當然也可以加以利用, 主要就是版本比對機制的功能, 所以最好部署的 ocx 就和頁面上的版本屬性一致, 才能節省部署的資源(頻寬, 使用者安裝時間).

以下為完整的 ocx 的語法, 重要的是版本屬性是使用 “,” (逗號) 做區隔, 而不是使用 “.” (點號) 做區隔!

<OBJECT classid=”clsid:AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE”

width=0 height=0 id=XNAME codebase=”http://url/mycontrol.ocx#1,0,0,0″>

</OBJECT>

如此一來, 就能使用方便又好用的 ocx 版本比對部署功能囉!

PS. ocx 檔案本身若沒有數位簽章時, 將會依 web browser 本身的安全性設定而有不同的表現方式, 如限制或提示, 但有數位簽章時, web browser 會提示使用者是否要下載安裝, 可以大大減低部署 ocx 的困難!

(註一)就只是用來描述用的, 並非是真的 ocx 的版本, 所以 mycontrol.ocx 和 1,0,0,0 不見得要相同, 但若不同, 就會有使用者要一直下載的問題, 因為真的安裝到客戶端電腦的 download ocx 版本, 一定是會讀到該 ocx 本身寫的版本號.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。