自动更新Java应用程序

6
我正在构建一个Java应用程序,将免费从网上下载。我想添加自动更新功能,以便在修复错误或增强应用程序时使用。为了实现自动更新,我将我的程序拆分为3个单元。
1. 基础-非常小的代码,将检查第二个单元(上传程序)的新版本,更新它并运行它。 2. 上传程序将检查项目的新更新,并下载任何更新并运行它。 3. 主程序-包含主要应用程序和所有模块。
我以上述方式做出上述决定有两个原因:
1. 我不希望客户在更新时重新启动应用程序。 2. 由于该应用程序仍然是新的,我不希望用户无法运行或更新应用程序,因此基础部分非常小,几乎没有错误。
是否有通用的Java方法/第三方软件可以进行自动更新?
3个回答

6

Java Web Start(JWS)是Oracle Corporation所使用的技术,可直接从网络或互联网链接启动丰富客户端(Swing,AWT,SWT)桌面应用程序。对于支持Java的平台,它提供“一键”安装。

JWS提供了许多吸引人的功能,包括但不限于闪屏、桌面集成、文件关联、自动更新(包括惰性下载和更新的编程控制),按平台、架构或Java版本划分本机和其他资源下载,配置运行时环境(最低J2SE版本、运行时选项、RAM等),使用扩展轻松管理常见资源。


实际上,Web Star 不会有所帮助,因为我有一个针对我的 Java 应用程序的安装程序,需要许多其他文件和依赖项。 - aymankoo
在这个语句中没有排除JWS。如果它们可以被放置在Jar文件中,只需将该Jar添加到运行时类路径中即可。但是,如果需要进行额外的设置/拆卸(例如将文件解压缩到特定位置),请在Java中编写代码并从ExtensionInstallerService中调用它。同时还需要提供许多其他文件和依赖项。 - Andrew Thompson
出于许多原因,我需要我的程序检查更新,因为并非我应用程序中使用的所有文件都需要上传。在某些情况下,在更新中我需要删除客户端机器上的一些文件,还有许多其他情况,所以我认为这应该通过代码实现。 - aymankoo
好的Ndrew,谢谢你。我会仔细阅读链接,感谢你的帮助。 - aymankoo
1
Java Web Start需要客户端机器安装Java,有时我们需要将JRE与应用程序捆绑在一起,以便用户不必自己安装。 - Amr Lotfy
Java Web Start需要客户端机器安装Java。这就是deployJava.js的作用。在链接的页面中提到了它(显然你在发表不相关的评论之前没有仔细阅读)。 ;) - Andrew Thompson

0

你可以尝试使用OSGi。

如果你能合理规划应用程序的模块化结构,那么当你更新应用程序模块时,有可能无需重启应用程序。你只需要重新启动依赖于更新模块的模块即可。在不重启应用程序的情况下,应用程序内部将会进行相关模块的重置。

我更喜欢使用Felix OSGI应用程序。

Apache Felix


0

虽然Java Webstart正是解决OP问题的技术,但Oracle已经从他们的Java版本中删除了Webstart。

幸运的是,Open Webstart填补了这一空缺:

Java Web Start (JWS)在Java 9中被弃用,并且从Java 11开始,Oracle将JWS从其JDK发行版中删除。这意味着安装了最新版本Java的客户端不能再使用基于JWS的应用程序。由于公共支持Java 8已于2019年第二季度结束,因此公司不再获得任何Java Web Start的更新和安全修复。

这就是为什么我们决定创建OpenWebStart,这是Java Web Start技术的开源重新实现。我们的替代品提供了Java Web Start和JNLP标准的最常用功能,以便您的客户可以继续使用基于Java Web Start和JNLP的应用程序而无需进行任何更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接