将多个javaFX应用程序打包到一个本机程序包中

时间:2016-01-26 15:11:48

标签: java deployment javafx

高级别:我正在开发一个我想自动更新的JavaFX应用

我看过的事情:

问题我有:尝试将两个单独的javafx本机可执行文件打包到一个包中。

说明 我创建了一个JavaFX UI应用程序,它在启动时检查更新的版本。通过为每个操作系统构建本机(使用jfx packager)软件包来提供应用程序:Liux,Windows和OSX。

如果有更新的版本,应用程序会将所需的更新下载到临时文件夹中。

要自行更新,应用技术上需要覆盖一些自己的文件。虽然这可以在Linux和OSX上执行,但Windows会锁定在主应用程序运行时需要更新的所有jar文件。

为了解决这个问题,我创建了一个小型的更新程序"我要下载的应用程序。我的主应用程序将下载所有更新和更新程序应用程序。然后主应用程序将启动更新程序并自行终止。

更新程序将不断尝试更新该应用程序文件(这是某种循环,以防主应用程序关闭需要一段时间)。

更新程序完成后,只需调用正确的主程序可执行文件,即可完成更新。

这有效......但是:为了运行我的更新程序应用程序,我依赖于客户端的java机器(并且具有正确的版本来启动)。使用javafx native packager的重点是确保JRE随应用程序一起分发,并且不依赖于任何本地版本。

我想尝试黑客攻击:

  • 而不是让我的更新程序成为常规jar(java应用程序)。我可以使更新程序成为我本机打包的JavaFX应用程序。
  • 然后我手动将生成的本机可执行文件从更新程序中取出,然后将其与我的主应用程序一起分发。
  • 由于主可执行文件和更新程序可执行文件的文件夹结构都是相同的,我希望这两个可执行文件都可以搭载一个捆绑的JRE

黑客只适用于OSX - 在Windows和Linux上都有可执行文件依赖的本地配置文件来调用正确的java文件。

有什么方法可以解决这个问题吗?有没有办法强制打包器输出自定义" package.cfg" (在windows的情况下)允许我捆绑两个可执行文件?

我意识到这是一个很长的镜头,但任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

我可能在代码之前稍微问了一下我的想法是否包含在javapackager中。

简短的故事是,现在可以使用javapackager做,这是JDK 1.8发布的一部分> 60(我现在使用74)

以下是官方oracle文档的链接:Oracle Doc

也可以使用Maven构建您的JavaFX应用程序以通过以下方式创建辅助发射器:javafx-maven-plugin