【问题标题】:Its posible to use Self-Update in a RCP aplicaction that is based on plugins?是否可以在基于插件的 RCP 应用程序中使用自我更新?
【发布时间】:2026-01-13 13:55:01
【问题描述】:

这就是问题所在。 我有一个基于插件启动的应用程序(从 pde 版本 3.1 开始) 现在我正在升级该应用程序。

主要问题是我没有完全理解整个过程,整个画面。 我关注了 Vogella 教程,eclipse 中的 wiki,但没有什么能比得上我所拥有的。

此外,如果我将“产品”配置从插件更改为功能,则导出过程不起作用,并显示错误。

据我所知,当您想要这种情况时,您必须创建一个“RCP 插件项目”和一个“功能项目”,其中每个项目都依赖于另一个项目。 “RCP 插件项目”应该是基于功能的。

然后“功能项目”创建一个“更新站点项目”。 但是,当“RCP 插件项目”基于“插件”时,所有的 cicle 都会中断,我无法向“功能项目”添加依赖项。

有没有办法将这种“自我更新方案”与基于插件的产品一起使用? 或者我可以转换为 P2 吗?

最好的问候

【问题讨论】:

    标签: eclipse rcp


    【解决方案1】:

    通常,可以在 RCP 应用程序中提供更新功能。今天最简单的方法是为此使用 p2。

    因此,您将需要一个更新站点和一个支持 p2 的 RCP 产品。

    关于特性、插件和依赖:特性基本上是插件的容器;插件基本上贡献代码来执行。一个特性包含插件,并且自动依赖于所包含的插件所依赖的所有插件,因此不需要将所包含的项目作为依赖添加到特性中。另一方面,插件项目应该也不能知道包含它们的特性——这会引入无法管理的依赖循环。

    关于更新站点项目:不要使用它们 - 它们是旧更新管理器使用的遗留项目类型 - 对于 p2,最好简单地导出功能。详情我无耻地提供我去年的own blog post

    然后您可以将所需的 p2 元素添加到您的应用程序中 - 基本上您必须确保 p2 插件存在并在运行时执行。您可以重用 IDE 中的 p2 更新 GUI,也可以自己滚动。有关此功能的详细信息,请参见 Eclipse wikiAndrew Niefers 博客文章(也链接自 wiki 页面)。

    更新:以及 vogella.de 上的 brand new corresponding post

    【讨论】:

    • 谢谢 Zoltán,我会阅读您的博客。但现在我想知道将应用程序检查更新的 url 放在哪里。
    • 请参阅 wiki 页面中的 wiki.eclipse.org/Equinox/p2/…。该部分列出了一个示例项目和一些其他所需的详细信息。
    • 再次感谢 Zoltán,但我没有运气。我有 Eclipse 3.7.1,每导入一个包,我都会收到一个警告“Discourage”。我的目标是让我的应用程序仅指向我的网站 url,并且我将有一个未来部署的项目,其中应用程序应该自动搜索下载和安装更新。任何想法 ?我做错了什么? (除了尝试在两天内理解这一点)
    • 现在我的应用启用了 P2。 1)如何删除旧的更新架构? 2)即使我创建了一个 p2.inf 文件,我也看不到用于下载更新的可用站点......任何建议。很抱歉这个问题很耗时
    • 我不认为 p2 默认提供自动更新检查。它提供了更新机制,但没有说明何时触发。如果要自动更新,则必须编写一些代码来触发该机制;但为此我无法再为您提供帮助(我从未使用 p2 API 进行编程)。
    最近更新 更多