我正在使用Eclipse RCP,但主要是因为我完全控制了UI(删除了所有的贡献,从头开始制作了首选项等)我只是不能接受所包含的UPDATE MANAGER的复杂性和要求(另外,我使用PLUGINS而不是功能,应用程序插件必须提取 – 虽然我可以得到最后一期的问题).
无论如何,在第一种方法,我只想检查是否有更新版本的应用程序可用.
那里有一个很好的图书馆和例子吗?
谢谢.
最佳答案
Eclipse现在支持p2,这是一个比旧的更新管理器更灵活的系统.它可用于安装新软件并检查现有软件的更新.
虽然包含帮助>安装新更新的完整流程在此处描述,但您可以在没有UI的情况下包含p2的自我更新部分http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application
如果您使用某项功能,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.