Eclipse现在支持p2,这是一个比旧的更新管理器更灵活的系统.它可用于安装新软件并检查现有软件的更新.
如果您使用某项功能,eclipse中的所有更新都更容易管理,但该功能可以将您的RCP应用插件标记为扩展到目录而不是jar(它会自动执行).
向任何应用添加自我更新都是非常重要的.您是一次更新所有罐子,还是只选择一个罐子?哪个罐子同时更新是有意义的?使用基于OSGi的eclipse,如何确保更新使系统处于工作状态? p2旨在帮助管理这些用例.见http://wiki.eclipse.org/P2
编辑:
可以使用p2 API添加简单的自我更新,而不包含任何UI代码:
public class SelfUpdateOperation {
public static void update() {
BundleContext context = FrameworkUtil.getBundle(
SelfUpdateOperation.class).getBundleContext();
ServiceReference> reference = context
.getServiceReference(IProvisioningAgent.SERVICE_NAME);
if (reference == null)
return;
Object obj = context.getService(reference);
IProvisioningAgent agent = (IProvisioningAgent) obj;
ProvisioningSession session = new ProvisioningSession(agent);
UpdateOperation update = new UpdateOperation(session);
IStatus result = update.resolveModal(new NullProgressMonitor());
if (result.isOK()) {
update.getProvisioningJob(new NullProgressMonitor()).schedule();
} else {
// can't update for some reason
}
context.ungetService(reference);
}
}
这需要一点工作(可能产品必须包含更新站点),但这是基本的API.