- 浏览: 255749 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
aquarion:
非常感谢,解决了我的问题
Perspective 自定义设置扩展点 -
zheng_zhen:
好文章,进一步问您一下,请问自己实现的run/debug如何能 ...
【原创】Eclipse Launcher (Run/Debug As 菜单扩展)实现 -
salever:
mwdnjupt 写道http://www.xeclipse. ...
浅析OSGI的bundle依赖 -
mwdnjupt:
http://www.xeclipse.com/?p=1165 ...
浅析OSGI的bundle依赖 -
Tom.X:
插件化、模块化应遵循高内聚、低耦合的原则,尽量不要在各bund ...
浅析OSGI的bundle依赖
Eclipse的软件管理很方便,尤其是在E3.4以及以后的版本中使用了Equinox P2框架以后,本文将如何使用Equinox P2框架实现RCP 程序的软件安装、更新、管理等进行介绍。
使用旧的UpdateManagerUI 实现更新RCP程序(E3.4以前)请见:
http://www.ibm.com/developerworks/cn/opensource/os-ecl-rcpum/
Equinox P2方式进行Eclipse插件安装介绍请见:
http://www.ibm.com/developerworks/cn/opensource/os-eclipse-equinox-p2/index.html
Equinox P2 进行Update另见:
http://www.vogella.de/articles/EclipseP2Update/article.html#firstfeature_category
http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application
http://www.ralfebert.de/blog/eclipsercp/p2_updates_tutorial/
Equinox P2
使用Equinox P2框架实现RCP 更新,首先需要获得P2相关的插件。Eclipse SDK版本都会包这些插件,如果您的版本中没有,那么请到eclipse.org上自行下载,或者使用Eclipse的Installer New Software功能在线更新。
主要用到的插件为org.eclispe.equinox.p2.ui以及其依赖的其他插件。
Feature
Feature用来组织插件,更新时需要使用Feature。RCP程序都会包含一个基础Feature——org.eclipse.rcp,它包含了 RCP程序需要的基础插件,内容为见eclipse目录下 features/org.eclipse.rcp_3.5.0.v20090519-9SA0FwxFv6x089WEf-TWh11。
先创建一个用于更新的RCP程序,org.eclipse.update.example。具体过程略。运行效果为:
下面来创建一个Feature Project。
File——New——Project——Plug-in Development——Feature Project,Feature工程一般命名为XXXX.featue,主要目的是为了与Plug-in工程区别开,但是Feature的ID却不一定以 feature结尾。
Feature Initialize Plug-in设置,这里设置为org.eclipse.update.example和org.eclipse.ui.forms。
配置Product
先给org.eclipse.update.example添加一个product configuration,添加完毕以后,进行product配置。在product中有很多依赖插件,没有这些插件,RCP程序将无法启动。默认情况 下product是基于plug-in的,在这里需要修改为基于feature。修改位置:
这时候以feature为依赖项的product就配置好了。但是运行提示失败,因为还没有给它添加以来的feature,在product的 Dependencies中添加我们刚刚创建feature“org.eclipse.update.example”。具体原因和步骤可以参考“ Equinox P2方式进行Eclipse插件”。
现在我们让插件依赖于feature,所以在对应的feature中必须定义包含的插件,不然RCP会因为找不到依赖项而无法启动。
配置Feature
feature的配置包括以下几个方面:
1,包含插件:这些插件就是上面prodcut的依赖项
2,包含feature:如果使用了eclipse定义的基本feature,那么使用它们会减少工作量。主要是向feature中添加plug-in的 工作量
3,Update site:更新源URL,可以是一个网址,也可以使本地文件,这里使用本地文件测试。
首先在feature.xml的Included Feature中添加 org.eclispe.rcp,org.eclipse.equinox.p2.user.ui,org.eclipse.help,这样它们所包含的 插件就无需再添加到包含插件中了。接着在feature.xml的Plug-in中添加org.eclipse.update.example。更新源 URL的设置比较简单,在feature.xml的Overview中,进行设置。注意URL的格式,这里使用本地文件E:/updates。
4, Dependencies:Feature自己也有依赖项。这里添加org.eclipse.ui, org.eclipse.core.runtime. org.eclipse.equinox.p2.ui.
如果配置正确,这时候再启动org.eclipse.update.example(使用product),就会发现多出一些菜单项和首选项了。
更新相关首选项:
这时候更新功能是不能用的,需要继续配置。
注意这时候Export Product时一定要记得选中Generate Metadata Repository选项,否则Update功能不能使用。大家可以发现选中与不选中时,产生的config.ini文件是不一样的。
配置Equinox P2
P2提供了自定义Update UI的功能,你可以通过扩展 org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy来实现UI的定制。
比如UpdatePolicy:
package org.eclipse.update.example.policy; import org.eclipse.equinox.internal.provisional.p2.ui.policy.IUViewQueryContext; import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; /** * @author salever * */ public class UpdatePolicy extends Policy{ public UpdatePolicy() { // Disable the ability to manipulate repositories. setRepositoryManipulator(null); // View everything in the repository. IUViewQueryContext context = new IUViewQueryContext(IUViewQueryContext.AVAILABLE_VIEW_FLAT); context.setVisibleAvailableIUProperty(null); setQueryContext(context); } }
然后在Activtor中使用这个policy.
public void start(BundleContext context) throws Exception { plugin = this; registration = context.registerService(Policy.class.getName(), new UpdatePolicy(), null); } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { context.ungetService(registration.getReference()); registration = null; }
同时你还可以使用扩展点org.eclipse.ui.about.installationPages来定义软件安装页面。
配置Update Site
New——Plug-in Development——Update Site Project,然后添加Category和要更新的Feature。
点击上面的Build按钮,在工程目录下会生成更新源文件,将这些文件复制到update site目录中。
稍后会给出实例源码。
注意Eclipse3.5 下使用Equinox p2方式更新Feature时有2种情况,一种是针对新安装的插件的更新,另一种是针对打包时就有的插件的更新,两种方式下更新源文件的制作方式不同。
1,新安装的插件的更新:给插件对应的Feature建立category.xml,然后使用这个XML导出metadata repository,就可以作为更新源,也可以使用上面的Update Site Project方法。
2,打包时就有的feature则麻烦一些,必须使用每次打包时生成的repository文件夹下的内容作为更新源,单独导出feature是无效的。
- demo_ws.rar (66 KB)
- 下载次数: 585
评论
打包时就有的feature则麻烦一些,必须使用每次打包时生成的repository文件夹下的内容作为更新源,单独导出feature是无效的
始终不明白这个是什么意思,对于打包时就有的插件进行更新,你能给出一些具体的步骤么,试了好多方法都不行
发邮箱也行:desertfox633@163.com
小弟在这里跪谢了
有些feature,是在product的配置文件中的,对于这样的feature就不能单独导出,比如示例中的org.eclipse.update.example feature。有些feature是独立的,比如eclipse的很多project,比如gef,这些feature的更新就不用导出整个product。
有什么不懂得可以发我邮箱 salever@126.com
打包时就有的feature则麻烦一些,必须使用每次打包时生成的repository文件夹下的内容作为更新源,单独导出feature是无效的
始终不明白这个是什么意思,对于打包时就有的插件进行更新,你能给出一些具体的步骤么,试了好多方法都不行
发邮箱也行:desertfox633@163.com
小弟在这里跪谢了
这些网页都不可访问了,怎么回事呢?
不好意思 社区更新了,http://www.ceclipse.org/forum.php?mod=viewthread&tid=28124
这些网页都不可访问了,怎么回事呢?
org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy
这个类是找不到的,而相应的有
org.eclipse.equinox.p2.ui.Policy
但是里面的方法都不同了
org.eclipse.equinox.internal.provisional.p2.ui.policy.IUViewQueryContext
这个类也找不到,似乎也换成了
org.eclipse.equinox.internal.p2.ui.query.IUViewQueryContext
那在这样的情况下,我应该如何配置我的Policy呢?望指点
这个建议你看看http://www.ceclipse.org/read-cec-tid-28124.html 这本书,或者去eclipse的WIKI上找找看
org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy
这个类是找不到的,而相应的有
org.eclipse.equinox.p2.ui.Policy
但是里面的方法都不同了
org.eclipse.equinox.internal.provisional.p2.ui.policy.IUViewQueryContext
这个类也找不到,似乎也换成了
org.eclipse.equinox.internal.p2.ui.query.IUViewQueryContext
那在这样的情况下,我应该如何配置我的Policy呢?望指点
望指点
必须要导出product,才能看到update 菜单
望指点
2.对于新增的feature,建立category.xml,怎么使用这个XML导出metadata repository?使用Update Site Project方法放在一个新site中,更新,它是灰掉的,说:已经更新过了。
我说的新增的意思指,不包含在product中的feature,这些feature的更新可以使用Update Site Project的方式更新,但这好象是Eclipse3.5的问题,3.6不知道还有没有这个问题
这个就是可用的 Eclipse插件工程无法正常运行是很常见的事 你要会摆弄它
2.对于新增的feature,建立category.xml,怎么使用这个XML导出metadata repository?使用Update Site Project方法放在一个新site中,更新,它是灰掉的,说:已经更新过了。
此两种方案都不知道如何解决,请赐教
这个就要看你要更新的feature是哪一种情况了,如果是RCP里面已经有的feature,那么每次feature更新需要重新export product,然后用respository作为update site的内容。
方便的话邮件交流。
salever@126.com
发表评论
-
基于Spring/Hibernate/Hessian的RCP客户端系统框架
2012-08-14 11:23 2708本文同步发表在 http://www.xeclips ... -
【资料整理】中国Eclipse社区开发资料整理
2012-05-13 21:53 4332前言 中国Eclipse社区(www.ceclipse ... -
【Eclipse plug-in】 org.eclipse.ui.activities 的使用
2011-11-30 15:20 2805整理一下org.eclipse.ui.activities的使 ... -
Eclipse plugin中获取工程的几种办法
2011-10-10 15:56 2814在Eclipse开发中,涉及到Resource的时候,经常会需 ... -
【SDK or Binary】Eclipse 开发版本选择
2011-08-19 14:11 5714前言:老手直接忽略。打开Eclipse的download页面, ... -
Eclipse Spring Application Context XML 小工具
2011-08-18 15:35 2223概述 Spring 开发经常需要配置bean clas ... -
OSGI MANIFEST.MF Header 小结
2011-07-26 10:43 28211 MANIFEST 文件 Bun ... -
【Eclipse所有示例】Eclipse CVS 平台源码
2011-04-21 10:06 1864总有TX上论坛要各种源码,首先并不提倡这种做法,这与间接的 ... -
中文版的Eclipse 帮助文档
2011-04-14 13:43 3545偶然在IBM的一个帮助网站上发现了部分Eclipse的部分的中 ... -
深入 Common Navigator Framework 完整版下载
2011-04-11 15:19 2593写完整个Common Navigator Framework之 ... -
深入 Common Navigator Framework 之 Link with Editor Support
2011-04-11 15:15 20058.1 概述 这个功能简单的说,就是将选中的节点与对应的编辑 ... -
深入 Common Navigator Framework 之 Drag and Drop Support
2011-04-11 15:11 22737.1 概述 顾名思义,Drag and Drop Supp ... -
深入 Common Navigator Framework 之 Action Providers
2011-04-11 15:05 22866.1 概述 有了工程的树形结构显示,自然就要考虑到菜单的配 ... -
深入 Common Navigator Framework 之 Common Wizards
2011-04-11 15:00 18075.1 概述 Common Wizard用于定制Naviga ... -
深入 Common Navigator Framework 之 Common Filters
2011-04-11 14:56 20304.1 概述 Common Filter负责进行节点过滤,类 ... -
深入 Common Navigator Framework 之 navigatorContent
2011-04-07 14:31 24883.1 概述 Eclipse为了方便 ... -
深入 Common Navigator Framework 之 Navigator
2011-04-07 14:18 31262.1 概述 Navigator 是CNF中用来显示资源结构 ... -
深入 Common Navigator Framework 之概述
2011-04-07 14:07 28701.1 概述 CNF,全称Common Navigato ... -
Common Navigator Framework初探
2011-03-30 17:14 5013这篇文章是继《Eclipse RCP/Plugin 入门自学教 ... -
利用Eclipse SDK 学习 Extension Point
2011-03-07 11:27 4194很多Eclipser在开发RCP时候,会遇到Extension ...
相关推荐
在RCP应用中,Equinox p2提供了版本检测和自动更新的功能,使得开发者能够轻松地管理软件的生命周期,确保用户始终能够使用最新版本。 在RCP应用中,版本检测是至关重要的,它允许程序检查服务器上是否有新版本可用...
org.eclipse.equinox.p2.examples.rcp.prestartupdate.rarorg.eclipse.equinox.p2.examples.rcp.prestartupdate.rarorg.eclipse.equinox.p2.examples.rcp.prestartupdate.rar org.eclipse.equinox.p2.examples.rcp....
org.eclipse.equinox.p2.examples.rcp.cloud.rarorg.eclipse.equinox.p2.examples.rcp.cloud.rarorg.eclipse.equinox.p2.examples.rcp.cloud.rar
标题中的"org.eclipse.equinox.p2.examples.rcp.sdkui.rar"是一个压缩文件,它包含了Eclipse Equinox P2的一个示例,专门针对基于RCP(Rich Client Platform)的应用程序的软件开发工具包(SDK)用户界面。...
\org.eclipse.equinox.p2.examples.rcp.sdkbundlevisibility.rar \org.eclipse.equinox.p2.examples.rcp.sdkbundlevisibility.rar v
20. **专题五**:EQUINOX P2 方式实现RCP自动更新 - **概述**:P2是Eclipse的更新和包管理系统。 - **示例**:通过P2实现RCP应用的自动更新。 - **Feature概念**:了解Feature在更新中的作用。 - **配置Product*...
RCP Update Manager 的模式用于更新rcp中的版本,同时可以检测新版本,该模式用于Eclipse 小于3.4版本,当eclipse版本高于等于3.4版本时,需要采用 equinox p2的模式。
Eclipse-plugins 插件,eclipse 各种插件 .jar 包,免费下载 eclipse202106 -plugins 各种插件 .jar 包,免费下载 如果下载不了,关注我,评论区联系我, Eclipse-plugins eclipse, plugins, eclipse202106, ...
Eclipse-plugins 插件,eclipse 各种插件 .jar 包,免费下载 eclipse202106 -plugins 各种插件 .jar 包,免费下载 如果下载不了,关注我,评论区联系我, Eclipse-plugins eclipse, plugins, eclipse202106, ...
Eclipse RCP使用统一的资源管理系统,允许开发者以国际化和本地化的方式管理文本、图片和其他资源。 **9. 性能优化** 为了确保RCP应用的性能,需要考虑内存管理和线程管理,合理使用事件模型,以及避免不必要的计算...
Eclipse-plugins 插件,eclipse 各种插件 .jar 包,免费下载 eclipse202106 -plugins 各种插件 .jar 包,免费下载 如果下载不了,关注我,评论区联系我, Eclipse-plugins eclipse, plugins, eclipse202106, ...
Eclipse-plugins 插件,eclipse 各种插件 .jar 包,免费下载 eclipse202106 -plugins 各种插件 .jar 包,免费下载 如果下载不了,关注我,评论区联系我, Eclipse-plugins eclipse, plugins, eclipse202106, ...
结合P2P的特性,我们可以推测"Coolface"可能是一个利用JXTA实现的、基于Eclipse RCP的P2P应用程序,拥有自定义的用户界面和丰富的功能集。然而,具体的实现细节和功能需求还需要参考"A部分"的说明或者其他相关文档来...
Eclipse RCP 允许开发者使用 eclipse结构风格设计弹性的可扩展的应用程序,可重用Eclipse中 已存在的方法和编码模式。俗话说,万事开头难。Eclipse RCP 入手可能会比较困难、费时。接下 来我们将主要讲述如何让RCP ...
7. **Equinox**:Eclipse的运行时环境,是OSGi容器的具体实现。它负责加载、管理插件以及处理它们之间的依赖关系。 8. **Debugging and Testing**:Eclipse提供了强大的调试和测试工具,使得开发者能够方便地调试...