【问题标题】:P2 headless update not workingP2 无头更新不起作用
【发布时间】:2010-12-14 06:20:48
【问题描述】:

我采用了 org.eclipse.equinox.p2.examples.rcp.prestartupdate 项目并对其进行了调整,以便在我的 RCP 应用程序中使用。然后,我设置了一个更新存储库,该存储库作为我的夜间构建的一部分进行更新。

当我打开我的应用程序时,它会像正在更新一样进行动作——它会找到更新站点,为每个包正确生成卸载和安装操作数,并说它完成时没有错误。问题是插件实际上从未安装在插件文件夹中,即使配置文件已更新(后续运行状态没有更新)。下次我的构建运行时,它会正确识别有更新,但同样的事情再次发生。

我花了几天时间调试,唯一看起来不寻常的事情(不是我完全理解发生了什么)是在最后的配置阶段,没有任何 TouchpointData 对象有任何指令,所以它看起来不就像 configure 正在做它应该做的。

我真的不知道下一步该往哪里看,想看看其他人是否有任何想法。

更新:

我终于搞清楚是怎么回事了。

当我在没有生成元数据存储库的情况下构建我的产品时,问题就开始了。通过 Eclipse 构建时,我没有在导出产品向导中检查“生成元数据存储库”,因为我不需要 p2 存储库,只需要产品。问题是,如果不检查该按钮,产品不会在启用 P2 时安装,从而导致副作用,例如不生成配置文件等。

我试图通过在代码中手动创建配置文件来弥补这一点,后来我发现这是一个非常糟糕的主意。我最初的问题是由于我的个人资料设置不正确造成的。

一旦我开始使用“生成元数据存储库”导出产品,检查更新开始正确安装新插件。

我现在遇到的问题是,虽然插件安装正确,但可执行文件被丢弃,我无法再启动我的应用程序。我正在通过 Hudson 构建我的更新站点,并且在我使用 Eclipse 导出产品向导时出现的二进制文件夹丢失了。我假设这就是现在出了问题。

知道为什么二进制文件不会在我的无头 PDE 构建中构建吗?

也想通了。我曾假设我需要的只是我想要构建的平台的单独启动器插件。由于我试图了解我将插件一一复制到构建服务器的过程。事实证明,在构建中包含平台特定的二进制文件,您需要从 delta 包中获得 org.eclipse.equinox.executable 功能。一旦我将它添加到构建中,二进制文件就开始出现在输出中。使用二进制文件,更新机制完全按照预期工作。

【问题讨论】:

标签: eclipse eclipse-rcp rcp p2


【解决方案1】:

我认为我需要的只是我想要构建的平台的单独启动器插件。由于我试图了解该过程,因此我将插件一一复制到构建服务器。事实证明,在构建中包含平台特定的二进制文件,您需要从 delta 包中获得 org.eclipse.equinox.executable 功能。一旦我将它添加到构建中,二进制文件就开始出现在输出中。使用二进制文件,更新机制完全按照预期工作。

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多