自动更新程序JAR

时间:2013-12-31 19:01:58

标签: java jar auto-update

我有一个JAR文件,我希望自己实现。

我到目前为止:

  • 步骤1:检查是否有新的血管。
  • 步骤2:如果有,请下载“下载程序”。
  • 步骤3:打开“Downloader”,关闭当前的JAR。 (这是 问题)。
  • 第4步:“Downloader”取代原来的JAR。
  • 第5步:打开新的JAR。

问题是,当我打开“Downloader”时,当前的JAR仍在运行。

    private void startUpdater() {
    try {

        String command = "java -jar Updater.jar";
        System.out.println("Command: " + command);
        Runtime.getRuntime().exec(command);

        System.out.println("Updater started!");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

节日快乐!

2 个答案:

答案 0 :(得分:2)

对于部署Java桌面应用程序,最好的选择通常是安装应用程序。使用Java Web Start。 JWS适用于Windows,OS X& * nix中。

  

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

答案 1 :(得分:0)

对于那些习惯使用Unix的人来说,Runtime.exec()是用词不当。在Unix中,exec替换当前进程。在Java中,它没有,因为缺少一个更好的词,“启动”另一个过程和调用exec的过程仍然存在。

在exec返回之后,您有一个Process对象,它充当新启动的进程的句柄。你真的不需要对此做任何事情,但你应该立即退出

的父进程

在这种情况下,exec返回后调用exec的进程也需要退出,这样操作系统就不会打开原来的jar。