看了官方的demo,还是研究了好久才实现了此功能。描述实在是太简单了。
参考地址:fxldemo fxlauncher JavaFX本地应用自动更新功能的实现——FXLauncher
在看了那些参考资料后,感觉还是无从下手。资料上说主要是以下几个步骤:
1.FXLauncher的使用步骤
1)编译项目JAR到app.dir
2)复制依赖包到app.dir
3)生成app.xml manifest
4)创建本地安装器
5)上传artifact到自动更新仓库
实现该功能后,回过头来看官方给的步骤就比较好理解了。其实步骤中最关键的地方就是 生成app.xml manifest 。
只要能搞定app.xml和理解fxlauncher是个什么东东就好办了。
下面是我的具体步骤:
2. 打开我的javafx项目MyBrowser
(就是该javafx要实现自动更新功能。可以参考例子fxldemo)。
此时项目应该是一个可以编译运行的应用了,只是没有自动更新功能。现在就是要在此基础上实现该功能。
MyBrowser项目是按照javafx入门教程创建的,项目项目和运行使用的是ant,和fxldemo使用的maven不一样,所以需要根据fxldemo中的pom.xml修改对应的build.xml。
3. 修改build.xml。这个是重点。
先把修改后的build.xml文件贴出来:
<?xml version="1.0" encoding="UTF-8"?> <project name="AddressApp" default="create-app-xml" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant"> <property name="java.jdk.home" value="H:\Program Files\Java\jdk1.8.0_112" /> <property name="appName" value="MyBrowser" /> <property name="vendor" value="MyBrowser.pelin" /> <property name="mainClass" value="application.Main" /> <property name="app.url" value="http://10.100.1.240:8089/" /> <property name="app.cacheDir" value="USERLIB/${appName}" /> <property name="app.dir" value="${basedir}\dist" /> <property name="app.installerdir" value="${basedir}\deploy\bundles" /> <!-- Should the client downgrade if the server version is older than the local version? --> <property name="app.acceptDowngrade" value="true" /> <!-- Optional parameters to the application, will be embedded in the launcher and can be overriden on the command line --> <property name="app.parameters" value="--myOption=myValue --myOtherOption=myOtherValue" /> <echo message="basedir: ${basedir}" /> <echo message="app.dir: --cache-dir=${app.cacheDir}" /> <echo message="java.home:${java.home}" /> <echo message="java.jdk.home:${java.jdk.home}" /> <target name="init-fx-tasks"> <path id="fxant"> <filelist> <file name="${java.jdk.home}\lib\ant-javafx.jar"/> <