我已经使用了org.eclipse.equinox.p2.examples.rcp.prestartupdate项目并对其进行了调整,以便在我的RCP应用程序中使用。然后我设置了一个更新存储库,它会在我的每晚构建中更新。
当我打开我的应用程序时,它会通过更新的动作 - 它找到更新站点,正确地为每个包生成卸载和安装操作数,并说它完成没有错误。问题是即使配置文件得到更新,插件也永远不会安装在插件文件夹中(后续运行状态没有更新)。下次我的构建运行它正确识别有更新,但同样的事情再次发生。
我花了几天的时间进行调试,唯一看起来与众不同的事情(不是我完全理解发生的事情)是在最终的配置阶段,没有任何TouchpointData对象有任何指令所以它看起来不像就像configure正在做它应该做的事情。
我真的不知道下一步该去哪里,想知道是否有其他人有任何想法。
更新
我终于弄清楚发生了什么。
当我在没有生成元数据存储库的情况下构建产品时,问题就出现了。通过Eclipse构建时,我没有检查导出产品向导中的“生成元数据存储库”,因为我不需要p2存储库,只需要产品。问题是,如果不检查该按钮,则产品不会在启用P2的情况下安装,从而导致副作用,例如不生成配置文件等。
我试图通过在代码中手动创建配置文件来弥补这一点,我发现这是一个非常糟糕的主意。我的原始问题是因为我的个人资料设置不正确而创建的。
我开始使用“生成元数据存储库”导出产品后,更新开始正确安装新插件。
我现在遇到的问题是,虽然正确安装了插件,但可执行文件已被删除,我无法启动我的应用程序。我正在通过Hudson构建我的更新站点,并且缺少使用Eclipse Export Product向导时存在的二进制文件夹。我假设现在出了问题。
为什么二进制文件不会在我的无头PDE构建中构建?
也是如此。我假设我需要的只是我想要构建的平台的各个启动器插件。因为我试图理解这个过程,所以我一个接一个地将插件复制到构建服务器上。事实证明,在构建中包含特定于平台的二进制文件,您需要从delta包中获得org.eclipse.equinox.executable功能。一旦我将其添加到构建中,二进制文件就开始显示在输出中。使用二进制文件,更新机制完全按预期工作。
答案 0 :(得分:2)
我假设我需要的只是我想要构建的平台的各个启动器插件。因为我试图理解这个过程,所以我一个接一个地将插件复制到构建服务器上。事实证明,在构建中包含特定于平台的二进制文件,您需要从delta包中获得org.eclipse.equinox.executable功能。一旦我将其添加到构建中,二进制文件就开始显示在输出中。使用二进制文件,更新机制完全按预期工作。