我正在使用Eclipse RCP,但是,主要是因为我完全控制了UI(删除了所有贡献,从头开始制作首选项等)我只是无法接受所包含的UPDATE MANAGER的复杂性和需求(同样,我使用PLUGINS不是功能,应用程序插件必须被提取 - 虽然我可以在最后一期中解决问题。)
无论如何,在第一种方法中我只想检查是否有更新版本的应用程序可用。
逻辑方法是检查服务器上的文件(xml?)。
那里有一个好的图书馆和例子吗?
感谢。
答案 0 :(得分:3)
Eclipse现在支持p2,这是一个比旧的更新管理器更灵活的系统。它可用于安装新软件并检查现有软件的更新。
您可以在没有用户界面的情况下包含p2的自我更新部分,尽管此处介绍了包含帮助>安装新更新的完整流程http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application
如果您使用某项功能,eclipse中的所有更新都会更容易管理,但您可以在此功能中将RCP应用插件标记为扩展到目录而不是jar(它会自动执行)。 / p>
向任何应用添加自我更新都是非常重要的。您是一次更新所有罐子,还是只选择一个罐子?哪个罐子同时更新是有意义的?使用基于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。
答案 1 :(得分:1)
使用Java Web Start启动应用。自动更新是JWS的主要功能之一。