高级别:我正在开发一个我想自动更新的JavaFX应用
我看过的事情:
问题我有:尝试将两个单独的javafx本机可执行文件打包到一个包中。
说明 我创建了一个JavaFX UI应用程序,它在启动时检查更新的版本。通过为每个操作系统构建本机(使用jfx packager)软件包来提供应用程序:Liux,Windows和OSX。
如果有更新的版本,应用程序会将所需的更新下载到临时文件夹中。
要自行更新,应用技术上需要覆盖一些自己的文件。虽然这可以在Linux和OSX上执行,但Windows会锁定在主应用程序运行时需要更新的所有jar文件。
为了解决这个问题,我创建了一个小型的更新程序"我要下载的应用程序。我的主应用程序将下载所有更新和更新程序应用程序。然后主应用程序将启动更新程序并自行终止。
更新程序将不断尝试更新该应用程序文件(这是某种循环,以防主应用程序关闭需要一段时间)。
更新程序完成后,只需调用正确的主程序可执行文件,即可完成更新。
这有效......但是:为了运行我的更新程序应用程序,我依赖于客户端的java机器(并且具有正确的版本来启动)。使用javafx native packager的重点是确保JRE随应用程序一起分发,并且不依赖于任何本地版本。
我想尝试黑客攻击:
黑客只适用于OSX - 在Windows和Linux上都有可执行文件依赖的本地配置文件来调用正确的java文件。
有什么方法可以解决这个问题吗?有没有办法强制打包器输出自定义" package.cfg" (在windows的情况下)允许我捆绑两个可执行文件?
我意识到这是一个很长的镜头,但任何建议都会受到赞赏。
答案 0 :(得分:1)
我可能在代码之前稍微问了一下我的想法是否包含在javapackager中。
简短的故事是,现在可以使用javapackager做,这是JDK 1.8发布的一部分> 60(我现在使用74)
以下是官方oracle文档的链接:Oracle Doc
也可以使用Maven构建您的JavaFX应用程序以通过以下方式创建辅助发射器:javafx-maven-plugin