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

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>[email protected]:fxldemo</app.deploy.target>
</properties>

四、Maven目标

1、产生应用程序

mvn clean package

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

mvn exec:[email protected]

3、建立本地安装器

mvn exec:[email protected]

五、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>
时间: 2024-10-17 07:33:21

JavaFX本地应用自动更新功能的实现FXLauncher的相关文章

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

看了官方的demo,还是研究了好久才实现了此功能.描述实在是太简单了. 参考地址:fxldemo    fxlauncher  JavaFX本地应用自动更新功能的实现--FXLauncher 在看了那些参考资料后,感觉还是无从下手.资料上说主要是以下几个步骤: 1.FXLauncher的使用步骤 1)编译项目JAR到app.dir 2)复制依赖包到app.dir 3)生成app.xml manifest 4)创建本地安装器 5)上传artifact到自动更新仓库 没有具体的步骤,只能研究fxld

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

JavaFX本地应用自己主动更新功能的实现--FXLauncher 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一.Javapackager介绍 JavaFX已经成为构建现代桌面应用最好的UI框架之中的一个.可是它一直存在部署不方便的问题. Javapackager工具就是针对这个问题的解决方式,正如同JavaFX已经打包进JDK 8中,Javapackager工具也随同JDK 8一同提供. Javapackag

简单实现安卓app自动更新功能

一般的安卓app都有自动更新功能,实现app的更新,以让用户体验新版本的功能,这里也是项目中用到的,今天就来总结一下,代码应该有点多,还请耐心点哈. 安卓应用实现自动更新比较简单,这里跟大家介绍下: 第一步 服务器端: 服务端提供一个借口,或者网址,我这里就用的服务器是tomcat,这里提供一个网址如下: //也就是一个json数据接口 public static final String UPDATE_URL = "http://192.168.1.103:8080/update.json&q

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

WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因程序的bug而带来频繁让用户更新程序的不良影响,就想给ECM增加一个winform自动更新功能,今天在这里,我想与大家一起分享代码,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧.   1. 首先我们在这里先分析一下其它程序猿的一些基本情况: 相信有许多程序猿都喜欢用Wi

Android应用自动更新功能的实现!!!

自动更新功能的实现原理,就是我们事先和后台协商好一个接口,我们在应用的主Activity里,去访问这个接口,如果需要更新,后台会返回一些数据(比如,提示语:最新版本的url等).然后我们给出提示框,用户点击开始下载,下载完成开始覆盖安装程序,这样用户的应用就保持最新的拉. 为了让大家容易理解,我像往常一样准备一个小例子,这里为了方便我就省去了和后台交互部分了.步骤分别如下: 第一步:新建一个Android工程命名为:UpdateDemo.代码结构如下图所示: 第二步:新建一个UpdateMana

Android应用自动更新功能的代码实现

由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软件的版本信息: <update> <version>2</version> <name>baidu

Android 应用自动更新功能的代码

由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软件的版本信息: <update> <version>2</version> <name>baidu

[转]Android应用自动更新功能的代码实现

本文转自:http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html 由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软

Android 云服务器的搭建和友盟APP自动更新功能的实现

setContentView(R.layout.activity_splash); //Bmob SDK初始化--只需要这一段代码即可完成初始化 //请到Bmob官网(http://www.bmob.cn/)申请ApplicationId,具体地址:http://docs.bmob.cn/android/faststart/index.html?menukey=fast_start&key=start_android Bmob.initialize(this, Constant.BMOB_APP