P2配置文件不包括通过p2 Operations API安装的软件包

时间:2013-02-14 13:38:34

标签: install equinox p2

我们有一个Eclipse产品,在启动时使用标准p2 Operations API或'p2 Silent Update'已经实现了“检查可用更新”的更新机制。这非常合适,更新操作可以解决所有依赖关系,例如安装了哪些更新,哪些不安装,如果有新的更新,它将正确下载它们。

我在启动时使用相同的Operations API或“p2 Silent install”实现了“检查可用的新安装”的类似功能。我的代码如下所示:

InstallOperation install = new InstallOperation(provisioningSession, toInstall); 
IStatus status = install.resolveModal(null);
if (status.getSeverity() == IStatus.OK) {
    Job job = operation.getProvisioningJob(null);
    job.schedule();
}

问题是我安装新捆绑包后(仅在重启应用程序后才可见),我需要检查它们是否已经安装,我使用标准API:

IProfileRegistry profileRegistry = (IProfileRegistry) provisioningAgent.getService(IProfileRegistry.SERVICE_NAME);
IProfile profile = profileRegistry.getProfile(IProfileRegistry.SELF);
Collection<IInstallableUnit> alreadyInstalled = profile.available(QueryUtil.ALL_UNITS, null).toUnmodifiableSet(); 

问题是已安装的设备列表不包含我新安装的捆绑包。另一个奇怪的观察是我的应用程序会尝试一直安装相同的bundle,因为InstallOperation解析为OK,好像这些bundle从未安装过(我认为这是因为它们实际上并没有包含在当前的p2配置文件中,结果与我得到的相同)列出当前配置文件中所有已安装的软件包时,请参阅上面的代码。

我想知道这是一个错误,还是有另一个单独的p2配置文件,其中包含通过Operations API安装的软件包,以及为什么它们不会被注册为当前配置文件的一部分(即使我可以看到它们被复制并正确安装在我的应用程序中。

Operations API:

http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_api_overview.htm

0 个答案:

没有答案