我正在使用 Eclipse RCP,但是,主要是因为我完全控制了 UI(删除了所有贡献,从头开始进行首选项等),我只是无法接受所包含的更新管理器的复杂性和需求(另外,我不使用插件功能,并且应用程序插件必须被提取 - 尽管我可以解决最后一个问题)。
不管怎样,在第一种方法中我只想检查是否有可用的较新版本的应用程序。
合乎逻辑的方法是检查服务器上的文件(xml?)。
有没有好的库和示例?
Thanks.
Eclipse 现在支持 p2,这是一个比旧更新管理器更加灵活的系统。它可用于安装新软件并检查现有软件的更新。
您可以在没有 UI 的情况下包含 p2 的自我更新部分,尽管此处描述了包括“帮助”>“安装新更新”的完整过程http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application
如果您使用某个功能,则 Eclipse 中的所有更新都更容易管理,但该功能是您可以将 RCP 应用程序插件标记为扩展为目录而不是 jar(它会自动执行)。
向任何应用程序添加自我更新并非易事。您是一次性更新所有罐子,还是只更新选定的罐子?同时更新哪些 jar 才有意义?使用基于 OSGi 的 eclipse,如何确保更新使系统处于工作状态? p2 的构建是为了帮助管理这些用例。看http://wiki.eclipse.org/P2 http://wiki.eclipse.org/P2
Edit:
可以使用 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)