2009-11-07 39 views
3

我已经采用了org.eclipse.equinox.p2.examples.rcp.prestartupdate项目,并对其进行了调整以用于我的RCP应用程序。然后我设置一个更新存储库,作为我每晚构建的一部分进行更新。P2无头更新不起作用

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

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

我真的不知道接下来要看的地方,并希望看看其他人是否有任何想法。

更新:

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

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

我试图通过在代码中手动创建一个配置文件来补偿这个问题,因为我发现这个配置文件是一个非常糟糕的主意。我的原始问题是由于我的配置文件设置不正确而创建的。

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

我现在的问题是,虽然插件安装正确,但可执行文件已被删除,我无法再启动我的应用程序。我正在通过Hudson构建我的更新站点,并且缺少使用Eclipse导出产品向导时存在的二进制文件夹。我认为现在是什么问题。

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

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

+0

您可能想问Equinox新闻组:http://www.eclipse.org/forums/index.php?t=thread&frm_id=31&S=54cb8a352cdaac8400ec1094fdd67639 – 2009-11-08 08:12:11

回答

2

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