利用Eclipse的Update组件实现适合企业应用的更新组件(1)
利用Eclipse的Update組件實現適合企業應用的更新組件(1)
tag: java,eclipse,rcp,ibm,client,wed,expeditor,liveupdate,update
?
有關Eclipse RCP的廢話少說,直接進入正題。
做一個商業軟件,應用更新組件是必不可少的,包括windows,Norton等軟件都有自己很好的自動更新體系,它們都做得很復雜,簡單的也有,如QQ,360安全衛士,由于是輕量級的客戶端,更新時只是些版本判斷和簡單的替換即可,不涉及太多的其它問題。
如果做過某些企業應用,則會發現軟件更新會有其更特殊的一面。除了某些通用的如版本管理,兼容性管理,平臺版本管理,簽名檢查,沖突檢測及解決外,我們可能需要更多的定制特性,比如:基于權限的更新,定向更新(只向某些固定的用戶更新),對更新的時機和動做也千差萬別,比如,在啟動前更新(跑跑卡丁車),啟動后立即更新,定時自動更新(提供非常靈活的機制,如一個月的某天某個時間,每天的某時,每周六的某時,非周某的某個時間等),更新動作的定制,如完成免干擾,即一切進種都接某種配置進行(類似于silent installation),應用出錯了(BUG)/網絡問題等,需要重啟(提示/不提示?),在某些無人值守的終端,可能不需要提示,而在有人值守的終端,則需要提示避免丟失數據,提示/不提示客戶端,從而不打擾客戶端進行正常工作,有些地方要求由管理員集中控制每個端終/用戶的更新策略(如某些企業版的殺毒軟件)等等。
以上列舉了一些企業軟件同通用軟件相比在自動更新組件上的一些不同。然而無論是選取什么樣的開發工具/開發語言/架構,完全滿足上述需求的現成組件都不存在。它們大多提供一個較通用的更新架構,可定制性不強,本文以Eclipse為例說明有何種途徑去達成上述目標。如果你的客戶端基于Eclipse RCP架構,希望本文可以做為參考,幫助你盡快實現你的更新需求。如果你已經開發更好的解決方案或有更好的建議,也在此留言交流(http://blog.csdn.net/mudboy/)。
Eclipse的更新機制基于Feature,一個Feature是一個功能部件,是若干個plugin的組合,若干個Feature可以組成一個更新站點(site)部署在可以基于http訪問的服務器上。利用ECLIPSE可以方便的生成Feature和site。
以org.eclipse.update為前綴的五六個插件是Eclipse 更新組的的主要部分。就象前面所說的,它提供了一個更新組件所需要的主要功能:但它提供給最終用戶的界面相對較專業,不適合企業的一般操作者。
1、????????????? 基于現有Feature的更新功能,系統按照Fearture.xml中指定的URL尋找更新,但如果更新站點變化呢?或是需要不同的用戶找不同的站點呢?可以用policy,指定policy,但policy只是指定哪些插件去什么站點更新之之類的問題,依然不方便動態的更改policy
2、????????????? 尋找新的更新,這個界面要求用戶新建站點再查找更新,這對普通用戶不適合。
3、????????????? 自動更新:自動更新的時間設置靈活性不大,自動更新大多基于現有特性的更新,無法自動查找新的特性,定制站點也不太多便。
4、????????????? 無法進行免干擾更新,也就是說,在一個更新進程中,很多過程都需要用戶干預,比如選擇站點,選擇要安裝的部件,簽名警告(可通過設置去除),重啟應用等,雖說這給用戶更大的自由度,但有時并不適合企業應用。
應該說,核心的功能已經足夠用了,我們需要改善的只是皮毛,如果我們沒有特殊需求的話,則只需要乎出幾個菜單就可以實現更新功能了,有一篇文章寫了相關的內容(http://www.ibm.com/developerworks/cn/opensource/os-ecl-rcpum/)。
由于Eclipse現成的更新應用集成了很多的UI,因此利用表層的實現無法達到要求,必須從底層一些構造更新組件,但可以參照現有的表層實現,主要可以借鑒的類有:
UpdateJob
UpdateSearchRequest
UpdateUtils
InstallWizardOperation
InstallWizard
InstallWizard2
僅需參照這幾個類,我們就可以構造一個完全可控的更新組件。
?
(未待續完)
總結
以上是生活随笔為你收集整理的利用Eclipse的Update组件实现适合企业应用的更新组件(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上班路上的抉择----无解的CSP?
- 下一篇: 购房经历(合集)