JavaFX本地应用自动更新功能的实现FXLauncher

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50669923 JavaFX本地应用自动更新功能的实现——FXLauncher作者:chszs,未经博主允许不得转载。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50669923

JavaFX本地应用自动更新功能的实现——FXLauncher

作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs

一、Javapackager介绍

JavaFX已经成为构建现代桌面应用最好的UI框架之一,但是它一直存在部署不方便的问题。Javapackager工具就是针对这个问题的解决方案,正如同JavaFX已经打包进JDK 8中,Javapackager工具也随同JDK 8一同提供。
Javapackager工具使得创建本地应用的安装器很容易,但是很遗憾的是,Javapackager不支持自动更新。而Java Web Start倒是可以支持更新操作,但它不能打包本地应用。
Javapackager工具可以执行针对Java应用程序和JavaFX应用程序的打包和签名的任务。

语法: javapackager command [options]

command包括:
1)-createbss
转换CSS文件为二进制形式
2)-createjar
根据其它参数产生JAR文档
3)-deploy
产生基本的应用程序发布包(可以是自包含的应用程序发布包)
4)-makeall
执行编译,createjar和deploy都会调用它
5)-signjar
根据提供的证书对应用程序签名

二、FXLauncher介绍

FXLauncher工具结合了Javapackager的本地安装器功能和Java Web Start相似的更新机制,使得可以使用FXLauncher而无需本地安装包,以及发布仅有14KB的可运行JAR文件(launcher),通过在线安装方式下载应用的各个模块并保持应用的版本更新。

launcher会先查看应用程序的manifest文件(app.xml)的内容,manifest文件用于在启动时同步本地artifact。
当Manifest被载入时,用户会看到这样的动画:
这里写图片描述
当应用程序开始更新时,用户会看到这样的动画:
这里写图片描述
预载入器接着会控制应用程序的过程。launcher看起来是使用CSS配置的。

manifest文件(app.xml)的内容示例:

<Application uri="http://fxldemo.tornado.no/" launch="no.tornado.FxlDemo">
    <lib file="controlsfx.jar" checksum="1589854040" size="954085"/>
    <lib file="fxldemo-2.0.jar" checksum="223197943" size="4865"/>
    <updateText>Updating...</updateText>
    <updateLabelStyle>-fx-font-weight: bold;</updateLabelStyle>
    <progressBarStyle>-fx-pref-width: 200;</progressBarStyle>
    <wrapperStyle>-fx-spacing: 10; -fx-padding: 25;</wrapperStyle>
</Application>

本地安装器不包含任何代码,因此在应用程序发布新版本时无需重建它们,只需简单地复制应用程序的artifact到预定义的位置,FXLauncher会处理剩下的一切工作。

FXLauncher还可以处理多种编程语言的应用,它与TornadoFX结合起来工作的极好。
FXLauncher和Tornado结合的例子见: http://fxldemo.tornado.no/

三、FXLauncher的使用步骤

1)编译项目JAR到app.dir
2)复制依赖包到app.dir
3)生成app.xml manifest
4)创建本地安装器
5)上传artifact到自动更新仓库

复制部署描述符,并按自己的需求进行修改:

<properties>
    <!-- 应用程序名 -->
    <app.filename>${project.name}</app.filename>
    <!-- JavaFX应用的入口类 -->
    <app.mainClass>no.tornado.FxlDemo</app.mainClass>
    <!-- app和launcher存放位置 -->
    <app.dir>${project.build.directory}/app</app.dir>
    <!-- 本地安装器存放位置 -->
    <app.installerdir>${project.build.directory}/installer</app.installerdir>
    <!-- 托管应用artifact的基础URL -->
    <app.url>http://fxsamples.tornado.no/demo/</app.url>
    <!-- Optional scp target for application artifacts hosted at the above url -->
    <app.deploy.target>w48839@fxldemo.tornado.no:fxldemo</app.deploy.target>
</properties>

四、Maven目标

1、产生应用程序

mvn clean package

2、部署应用程序artifact到自己的Web服务器

mvn exec:exec@deploy-app

3、建立本地安装器

mvn exec:exec@installer

五、TornadoFX介绍

TornadoFX是针对Kotlin语言的轻量级JavaFX框架。TornadoFX的特性包括:
1)依赖注入
2)类型安全建立器
3)异步任务执行
4)MVC
5)极度轻量级
6)小巧简单的API
7)为模型对象提供的REST客户端
8)零配置,无需XML,无需注释

https://github.com/edvin/tornadofx

Tornado的Maven依赖:

<dependency>
    <groupId>no.tornado</groupId>
    <artifactId>fx</artifactId>
    <version>1.2.3</version>
</dependency>
目录
相关文章
|
1月前
|
iOS开发 UED
Flutter 动态修改应用图标功能指南
探索Flutter中动态应用图标的实现方法,了解如何为用户提供独特体验,促进用户升级和应用内购买。
Flutter 动态修改应用图标功能指南
|
1月前
|
监控 C++
C++ Qt开发:QFileSystemWatcher文件监视组件
QFileSystemWatcher 是 Qt 框架中提供的一个类,用于监视文件系统中的文件和目录的变化。它允许你在文件或目录发生变化时接收通知,并可以用于监视文件的创建、删除、重命名以及内容修改等操作。这对于需要实时监控文件系统变化的应用程序是非常有用的。
35 5
C++ Qt开发:QFileSystemWatcher文件监视组件
【Flutter】当项目中使用交互并且使用小工具管理其状态widget的state的详解
【Flutter】当项目中使用交互并且使用小工具管理其状态widget的state的详解
|
XML JSON 数据格式
Qt实现软件自动更新的一种简单方法
Qt实现软件自动更新的一种简单方法
835 0
Qt实现软件自动更新的一种简单方法
|
Web App开发 测试技术
Chrome-headless 模式,没有UI界面的自动化UI测试
Chrome-headless 模式,没有UI界面的自动化UI测试
Chrome-headless 模式,没有UI界面的自动化UI测试
|
存储 XML Java
Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)
Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)
173 0
Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)
|
XML SQL JSON
Toolkit 大更新:UI 更美观,用起来更方便!
前段时间有小伙伴在群里聊天,说到 Toolkit 下载量到 4.9k 了。就突然想起来,很久没有更新这个插件。
270 0
|
Android开发
【错误记录】Android Studio 创建 Flutter 应用被卡住 ( 更新 Flutter 插件 | 命令行创建 | 断网 )
【错误记录】Android Studio 创建 Flutter 应用被卡住 ( 更新 Flutter 插件 | 命令行创建 | 断网 )
280 0
【错误记录】Android Studio 创建 Flutter 应用被卡住 ( 更新 Flutter 插件 | 命令行创建 | 断网 )
|
搜索推荐 C++
QT应用编程: 应用程序的配置保存与恢复
QT应用编程: 应用程序的配置保存与恢复
371 0
|
JavaScript 前端开发 Java
如何在Android平台上创建自定义的Cordova插件并使用SAP UI5消费
如何在Android平台上创建自定义的Cordova插件并使用SAP UI5消费
如何在Android平台上创建自定义的Cordova插件并使用SAP UI5消费