【问题标题】:How update Eclipse RCP application?如何更新 Eclipse RCP 应用程序?
【发布时间】:2010-11-26 08:36:14
【问题描述】:

this previous question 的上下文中,我想知道是否可以在不增加 RCP 产品版本的情况下更新我的 RCP 产品中包含的功能(基于功能)?

假设我有以下 RCP 应用程序

com.my.company.myproduct 1.0.0 包括

  • org.eclipse.rcp 3.5.0
  • com.my.company.myproduct.feature1 1.0.0
  • com.my.company.myproduct.feature2 1.0.0

我的问题是,在不增加产品版本号的情况下,我是否可以增加、导出并安装(在 1.0.0 环境中)新版本的 com.my.company.myproduct.feature2(例如 1.1.0) ?

我想知道这一点,因为它可以避免向我的客户提供大的(> 50 兆字节)补丁。

【问题讨论】:

  • 如何管理您的产品?使用 p2 还是经典更新管理器?
  • 我的产品是用p2管理的

标签: java eclipse eclipse-rcp


【解决方案1】:

首先,您将产品部署到 p2 存储库中。*和根 IU 是 com.my.company.myproduct_1.0.0。它由 org.eclipse.rcp_3.5.0 和 com.my.company.feature_1.0.0 组成。

然后您的功能有更新,因此您可以将 com.my.company.myproduct 发布到 1.1.0。它由 org.eclipse.rcp_3.5.0 和 com.my.company.feature_1.1.0 组成。它也应该被部署为 p2 存储库。但是,您可以从存储库中删除 org.eclipse.rcp 的所有工件(org.eclipse.rcp 的功能和插件 jar)以减小大小。

它是一个累积存储库,它不能安装到一个干净的环境中。但是,它可以安装在您现有的产品 1.0.0 上。 P2 能够仅更新具有较新版本的功能。

更新:

如果您重用 Eclipse 本身的 UI,更新存储库应该具有您产品的更高版本,以使 Eclipse 的“安装新软件”/更新对话框显示您产品的较新版本。

如果您使用 p2 API 安装更新,则不需要更高版本的产品。但是您的产品(1.0.0)的原始版本必须取决于您的功能的版本范围。例如,com.my.company.myproduct_1.0.0 依赖于 com.my.company.feature 从 1.0.0(包含)到 2.0.0(排除)。

【讨论】:

  • 感谢您的回答。我明白了你所说的,我必须增加产品编号,但我可以提供一个新的干净存储库,其中只包含更改的内容:我说的对吗?在这种情况下,p2 足够聪明,可以重用关于 org.eclipse.rcp 的现有功能和插件,但没有改变?
  • 当然,p2足够聪明,不会更新未更改的功能和插件。
【解决方案2】:

有很好的策略点和教程。

教程:Eclipse RCP 应用程序的 p2 更新: http://www.ralfebert.de/blog/eclipsercp/p2_updates_tutorial_36

【讨论】: