利用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)相关推荐

  1. 在Ubuntu下利用Eclipse调试FFmpeg

    [编辑]第一步:准备编译环境 sudoapt-get update sudo apt-get -y install autoconf automake build-essential git liba ...

  2. android 利用eclipse观察内存变化情况

    android 利用eclipse观察内存变化情况 使用方法比较简单: · 选择DDMS视图,并打开Devices视图和Heap视图 · 点击选择要监控的进程,比如:上图中我选择的是system_pr ...

  3. Excel.Application组件使用方法,适合应用于使用EXCEL组件做WEB应用开发。

    Excel.Application组件使用方法,适合应用于使用EXCEL组件做WEB应用开发. 转自http://bbs.xtjc.com/thread-376095-1-1.html 定制模块行为 ...

  4. 如何选一款适合企业的进销存软件?这款软件推荐给你

    我们先来聊一聊,什么是进销存? 进销存是指企业管理过程中采购(进)->入库(存)->销售(销)的动态管理过程. 再来详细拆解下-- 进:指询价.采购到入库与付款的过程. 销:指报价.销售到 ...

  5. 智能名片有哪些功能才是适合企业销售的?

    智能名片是电子名片与人工智能AI相结合的新科技产品.在微信小程序的背景下,智能名片在短时间内发展迅速,由于没有APP下载的繁琐,小程序和微信的结合使智能名片找到了最适合发展的土壤.市场上有很多智能名片 ...

  6. 哪个平台比较适合企业直播

    现在直播越来越火,很多的商家和企业也开始做起了直播.对于准备开启直播的B端企业来说,选择一个专业的直播平台是更为重要的,一个好的直播平台是能否让直播传播更广的关键.那么,哪个平台比较适合企业直播呢? ...

  7. Java归去来第2集:利用Eclipse创建Maven Web项目

    一.前言 如果还不了解剧情,请返回第一集的剧情          Java归去来第1集:手动给Eclipse配置Maven环境 二.利用Eclipse创建Maven Web项目 选择File-New- ...

  8. 精致3D图片切换效果,最适合企业产品展示

    这是一个精致的立体图片切换效果,特别适合企业产品展示,可立即用于实际项目中.支持导航和自动播放功能, 基于 CSS3 实现,推荐使用最新的 Chrome,Firefox 和 Safari 浏览器浏览效 ...

  9. 利用Eclipse/MyEclipse 实体类生成.hbm.xml文件

    在Struts+Hibernate+Spring 三大框架开发web程序的时候,通常为了节省开发间,提高开发效率,通常会使用到许多三方插件,那么这次要给大家分享的是如何利用Eclipse/MyEcli ...

最新文章

  1. 51CTO完成B轮融资,围绕1400万社区用户的IT学习平台要怎么做?
  2. 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java
  3. sql server left join 重复数据原因图
  4. win32 masm32 汇编学习 及 远程线程实例
  5. java -Math类
  6. 北邮OJ 980. 16校赛-R_clover's Challenge
  7. gif分解工具_Python之GIF图倒放,沙雕快乐源泉
  8. 晨读,难道只是为了完成任务而读的吗?
  9. 使用 jQuery Mobile 与 HTML5 开发 Web App (八) —— jQuery Mobile 工具栏
  10. 剖析Volley请求多次的原理
  11. 比较贵的计算机配置,什么电脑配置好 几款配置比较豪华的笔记本电脑推荐【图文】...
  12. typora 下载 安装教程
  13. 思科模拟器Cisco Packet Tracer菜单栏——参数选择
  14. 想要成功,你得像剥洋葱一样一层一层地撕开自己
  15. kubectl rollout restart重启pod
  16. Java高并发累加器Striped64
  17. 【Grace卫星】Grace卫星精度知识点。
  18. java实现日记软件_建立日记类
  19. 9.17模拟赛2.0
  20. PHP压缩和解压缩文件的三种方式

热门文章

  1. python学生成绩管理程序设计总框图_学生成绩管理程序设计报告
  2. java实现大整数的加减乘除法(百练OJ:2736、2737、2980、2981)
  3. java与C++实现判断闰年(百练OJ:2733:判断闰年)
  4. 【青海】2021年下半年软考报考时间及通知
  5. 信息系统项目管理师:第8章:项目质量管理(2)-章节重点
  6. 笔记-高项案例题-2017年下-计算题
  7. Android中应用百度地图API开发地图APP实例-显示百度地图
  8. SpringBoot+Junit在IDEA中实现查询数据库的单元测试
  9. 源代码主干分支开发四大模式
  10. flutter - dart基础之map