我正在使用 Eclipse RCP,但是,主要是因为我可以完全控制 UI(删除所有贡献,从头开始制作首选项等)我只是不能接受包含的 UPDATE MANAGER 的复杂性和需求(另外,我使用插件而不是功能,并且应用程序插件必须被提取 - 尽管我可以解决最后一个问题)。
无论如何,在第一种方法中,我只想检查是否有更新版本的应用可用。
合乎逻辑的方法是检查服务器上的文件(xml?)。
那里有好的库和示例吗?
谢谢。
最佳答案
Eclipse 现在支持 p2,这是一个比旧的更新管理器灵活得多的系统。它可用于安装新软件和检查现有软件的更新。
您可以在没有 UI 的情况下包含 p2 的 self 更新部分,尽管此处描述了包括“帮助”>“安装新更新”的完整过程 http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application
如果您使用一项功能,则 eclipse 中的所有更新都更易于管理,但该功能是您可以将 RCP 应用程序插件标记为扩展到目录而不是作为 jar(它会自动执行)的地方。
向任何应用程序添加 self 更新都非常重要。你是一次更新所有的 jar ,还是只更新选定的 jar ?同时更新哪些 jar 有意义?使用基于 OSGi 的 Eclipse,您如何确保您的更新使您的系统处于工作状态? p2 旨在帮助管理这些用例。参见 http://wiki.eclipse.org/P2
编辑:
可以使用 p2 API 添加简单的 self 更新,而无需包含任何 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。
关于java - java中的简单 "check for update"库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5937328/