实现JavaFX应用程序自动更新功能

实现JavaFX应用程序自动更新功能,java,javafx,javafx-8,auto-update,Java,Javafx,Javafx 8,Auto Update,我将要编写一个新的跨平台应用程序,我选择了JavaFX,主要是因为它有丰富的UI库(包括标准和第三方)和本机数据绑定功能。我的应用程序将通过本机打包进行部署,这是因为缺少PPAPI Java插件(Chrome将停止Chrome 42中的NPAPI,该插件目前正在测试版中),这将阻止使用Chrome的用户使用WebStart,并且因为更“经典”的用户体验,所以WebStart和自动更新已不存在 情况如下: 应用程序启动并检查更新 如果找到更新,请下载它们并将它们放在临时文件夹中 在应用程序关闭时,

我将要编写一个新的跨平台应用程序,我选择了JavaFX,主要是因为它有丰富的UI库(包括标准和第三方)和本机数据绑定功能。我的应用程序将通过本机打包进行部署,这是因为缺少PPAPI Java插件(Chrome将停止Chrome 42中的NPAPI,该插件目前正在测试版中),这将阻止使用Chrome的用户使用WebStart,并且因为更“经典”的用户体验,所以WebStart和自动更新已不存在

情况如下:

  • 应用程序启动并检查更新
  • 如果找到更新,请下载它们并将它们放在临时文件夹中
  • 在应用程序关闭时,将新下载的JAR文件写入旧JAR文件
  • 自动重新启动更新的应用程序
  • 然而,我的脑海中出现了几个问题(最初是这两个问题,但我可以在有更多问题后立即更新这个问题):

    • 这样做安全吗?如果我覆盖应用程序生命周期中已经使用的一些JAR,JVM会变得疯狂吗
    • 我正在努力寻找一种自动重启JavaFX应用程序的方法。有可能吗
    谢谢大家的帮助。

    看看或。它实现了一个引导下载程序,用于检查更新,下载更新,并在应用程序更新后立即启动应用程序。

    也许您可以尝试一下,尽管它是付费的。这里我最喜欢的主要功能是自动更新,以及您可以轻松配置安装程序的方式(创建Linux-deb、rpm安装程序、Mac和window安装程序),甚至可以打包运行应用程序所需的jdk版本(这意味着您的用户在使用应用程序之前不需要先安装java版本)


    不过,对于您的需求来说,这似乎有点过分了。

    我最近创建了一个可以与Java 9的模块系统配合使用并满足您需求的系统。

    谢谢您的建议。不幸的是,GetDown和UpdateFX似乎都不能满足我的需要:-UpdateFX:它似乎需要将应用程序放在一个罐子中,而我有一些库,我想作为单独的罐子随身携带;-GetDown:它似乎非常面向Swing,我想学习一门纯JavaFX课程。你可以创建第二个更新程序应用程序,检查是否有新版本,必要时更新文件,然后启动你的应用程序。这是我目前正在探索的方式,通过更仔细地研究JavaFX预加载程序,该预加载程序在本场景中可能会很有用。