3

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

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

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

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

更新:

我终于弄清楚发生了什么。

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

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

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

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

任何想法为什么二进制文件不会在我的无头 PDE 构建中构建?

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

4

1 回答 1

2

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

于 2010-09-23T16:09:50.020 回答