eclipse更新功能的实现

Eclipse功能部件feature

在插件组成的软件产品中,基于灵活性考虑,一般不会只有一个插件构成,而是设计成相互独立又互相关联的集合。当产品发布时,若是基于插件则将呈现杂乱无章的现象。因此采用feature实现。

l  Feature概念

是由一个或多个插件及它们的附属数据构成的软件产品。用来管理插件的安装和升级。

l  Feature构成

描述:包括对插件的描述、版本声明和许可协议等

内容:feature可以包含插件和段,也可以包含另一个featrue

依赖性:指出该feature所依赖的其他插件或feature

安装:指定安装feature时的特殊要求(该feature是否要和别的feature安装在同一个目录,安装时需不需要调用其他的处理程序等)

l  Feature功能

声明使用软件产品的前提需求

扫描二维码关注公众号,回复: 712913 查看本文章

用户可以禁用整个软件产品(禁用后,相应的插件不会启动)

安装软件产品后,显示欢迎画面

在平台中显示代表软件产品的标签

当产品有了更新版本时,通过自动升级功能下载并升级

思考几个问题:

eclipse平台如何实现feature的启用、禁用、卸载(但不是手动添加、删除文件)?

eclipse平台如何在“关于对话框”中显示功能部件标签?

eclipse中如何实现自动更新?

创建feature

创建feature项目。

在概述选项卡中,填写feature的标识、版本(如1.0.3)、名称等,还可以填写更新站点的地址和名称。另外还可配置插件的安装环境。

在信息选项卡中,填写功能部件的描述、版权声明、许可协议以及访问更新站点的备选站点(从概述中声明的更新站点更新失败时用到)。

插件及功能部件选项卡的使用就不提了。

依赖性选项卡需要提的是在它里面添加的插件和功能部件是该feature所依赖的东西,而插件和功能部件选项卡中的东西是该feature所包含的东西。不要弄混了。在自动更新时,系统会检查目标系统是否安装了依赖的插件或feature,如果没有,会出现安装失败。这样可以防止用户安装不能使用的插件。(注意:如果手动复制粘贴feature文件到本地,不会出现这个检查,但运行插件会出错)

安装选项卡暂时不用指定内容。

更新功能

创建更新站点

更新站点需要创建,类似创建插件项目,我们创建更新站点项目,该项目不包含可执行内容,创建实际上就是一个配置过程。它的核心是site.xml文件。

在站点图选项卡中,可以创建类别然后添加feature;也可以不创建类别,直接添加feature,在从更新站点安装feature时,为分类的feature显示为“其他”类别。

在归档选项卡中设置更新站点的URL和描述信息。URL可以是本地路径(如file:/D:/updatesite),也可以是http协议访问的网络路径。feature中的更新站点的URL要和这个路径保持一致,故需要修改featureURL为(file:/D:/updatesite)。

设定好上述,就可以构建更新站点了,在站点选项卡中选择某一feature点击构建(或是选择全部构建),eclipse将在当前目录下生成featureplugin目录,并将相关的feature和插件导入其中。将这两个目录和site.xml文件一起复制到D:/updatesite下,就完成站点创建。

根据更新站点安装插件

我们在“帮助”—>“软件更新”中新建一个更新站点,路径就是上面我们创建URL。根据界面操作提示,一直“下一步”就完成了安装,它自动重启工作台。

如何更新

首先,对feature做了改动,如给某个插件添加了一个德文语言包,我们将这个语言包添加到功能部件中来,并修改feature的版本号。

打开更新站点项目,站点图选项卡中的版本自动随之更新(有疑问,验证没通过,可以手动删除后再添加),单击同步,然后单击构建,然后将构建的feature目录,plugin目录以及site.xml复制到d:/updatesite下。

在“帮助”—>“软件更新”找到我们的更新站点,右键查找更新,找到后提示安装。上述更新是手动更新,如果启动了自动更新功能,自动更新时也会查找该站点是否有更新内容,这条没验证过

添加产品标签

要想在产品“关于对话框”中显示某个feature的一个图标,需要分两步:

feature.xml中指定一个品牌插件,产品标签的信息将从这个目标插件中取得。这个品牌插件就是一个一般的插件,我们需要在这个插件的根目录下创建一个about.ini的文件,并编辑之。内容为:

aboutText=\u5730\u1323……

featureImage=image.gif

在构建路径时要把about.iniimage.gif文件添加进去,重新构建并发布,就可以了。

注意:在这里可以用feature中的某一个插件代替,而不用重新创建一个新的品牌插件,在里面我们定义about.iniimage.gif就可以了。

添加branding的内容验证没有通过。

远程更新功能

上面的功能是基于本地路径的更新方式。下面我们看看软件的远程更新功能。

首先,也是要创建feature项目,配置更新站点http://localhost:8080/chenTestupdate.

其次,安装Tomcat服务器。比如装到:d:/program/apache software foundation/tomcat6.0下。

再次,创建更新站点项目,这里可以勾选“生成列示站点中所有可用功能部件的web页面”。当然这里同样要求更新站点地址保持一致。

再次,创建更新站点。在d:/program/apache software foundation/tomcat6.0/webapps下创建文件myupdate/WEB-INF/web.xml(文件内容不赘述).

最后,我们在更新站点项目中构建feature,并拷贝featurespluginsxxx/webapps下。

一些更新功能所需要依赖的插件:

 

自动更新功能

上面无论是本地更新还是远程更新,都是我们用eclipse提供的更新管理器,以向导的方式提示用户更新。而更多的时候是我们通过一个在线升级菜单,更新任务由系统自动完成,而不须干预。(或者干脆当系统启动时,自动检测一遍是否有更新,检查完成后再让用户登录)。

任务1:通过菜单完成更新

我们定义一个菜单,其actionupdate,这个action将会搜索升级信息、收集更新内容、执行更新并重启。

这个类的内容参考《eclipse rcp应用系统开发方法与实践》电子工业出版社,陈冈著 P369

任务2:系统启动时自动检测并升级

ApplicationWorkbenchAdvisor中覆盖preStartup(){}方法,并调用P2Util.checkForUpdate();参考XXX系统启动更新方式。

猜你喜欢

转载自sdfx.iteye.com/blog/1163665