如何在Java中实现自动更新?

时间:2012-05-04 05:43:23

标签: java swing deployment installer auto-update

全部:    我在这里面临一个问题,我的应用程序由一些jar文件和一些其他文件组成,它们都位于一个目录中。我打算实施自动更新功能。当应用知道服务器上有新版本时,它会将一个zip文件下载到临时目录。下载后,它会询问客户是否要安装它。如果是,我的应用程序将退出,我需要解压缩zip文件并覆盖原始目录中的所有文件。现在我想知道:

如何解压缩文件并覆盖目录?创建一个脚本(这意味着我需要为Windows编写bat和其他平台的shell)?创建一个java类来做它?

退出后如何启动此脚本/ java类?

作业完成后,如何删除安装程序?将它保存在临时目录中并在新版本应用程序启动时检查出来吗?


后来的评论:

我知道JWS是一个不错的选择,但由于“老板否认”的原因,我无法使用它。

2 个答案:

答案 0 :(得分:3)

自应用程序。有一个GUI(通过Swing标签判断),使用Java Web Start

进行部署
  

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

     

JWS提供了许多吸引人的功能,包括但不限于启动画面,桌面集成,文件关联,自动更新(包括延迟下载和程序化控制更新),本地分区和&按平台,体系结构或Java版本下载其他资源,运行时环境配置(最低J2SE版本,运行时选项,RAM等),使用扩展轻松管理公共资源..

答案 1 :(得分:3)

可能有几种方法。既然你说应用程序是跨平台的,那么使用Java进行更新是明智的。

您可以创建一个小jar文件来处理更新过程。它可能是初始应用程序的一部分(假设它不会更新)或者它可能是更新包的一部分(然后您也可以更新它)。

因此,您的应用程序下载zip,将其解压缩到临时目录并启动更新程序,然后退出。更新程序将旧罐子复制到旧罐子上。


然而,最好不要重新发明轮子。考虑使用JWS:它提供了更多功能,并且需要更少的工作量来实现。必须有良好的理由才能拒绝JWS。你应该通过解释使用JWS的好处来说服你的老板。