Update framework for JavaFX packaged applications.
UpdateFX is inspired by Sparkle and provides an all-in-one solution to update application based on the JavaFX framework and packaged as standalone desktop applications. It has both a beautiful GUI with the ability to view HTML-formatted changelogs and the mechanism needed to actually discover and perform the updates.
Usage is very simple, basically you just have to add the following lines in your application:
UpdateFX updater = new UpdateFX(MyApplication.class);
updater.checkUpdates();In the package where "MyApplication.class" is located, you should have a file named app-info.properties with the following structure:
app.version = 1.0.1
app.release = 10001
app.licenseVersion = 1
app.updatefx.url = http://example.com/ExampleAppUpdateFX.xml
app.versionis the current application version in a human readable form.app.releaseis the internal version number and must contain only digits. It can either be a sequential number for every build (1, 2, 3) or encoded in any way you see fit like in the example above. This number is used to decide if an update exists or not, so it must be increased for every release.app.licenseVersionis the version of the license accepted by this application. This is used to differentiate between paid and free updates.app.updatefx.urlis the URL where the XML file describing available updates is located. The format of this file is documented below.
Updates are described using an XML file, which is downloaded and read by the framework using JAXB. A typical file would look like this
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://www.briksoftware.com/updatefx" name="Example App" changelog="http://example.com/changelog">
<release id="20000" version="2.0.0" releaseDate="2014-10-11T00:00:00.000+02:00" licenseVersion="2">
<binary href="http://example.com/ExampleApp2.dmg" size="100000" platform="mac" />
<binary href="http://example.com/ExampleAppSetup2.exe" size="10000" platform="win_x86" />
<binary href="http://example.com/ExampleAppSetup2_64.exe" size="10000" platform="win_x64" />
</release>
<release id="10002" version="1.0.2" releaseDate="2014-10-10T00:00:00.000+02:00" licenseVersion="1">
<binary href="http://example.com/ExampleApp.dmg" size="100000" platform="mac" />
<binary href="http://example.com/ExampleAppSetup.exe" size="10000" platform="win_x86" />
<binary href="http://example.com/ExampleAppSetup64.exe" size="10000" platform="win_x64" />
</release>
</application>As you can see, multiple releases can be active at the same time. This allows you for example to support more than one major revision and deliver security updates.
application has two attributes: name and changelog. The URL to the changelog will be used to display changes from the previous version. UpdateFX will send as parameter from and to indicating respectively the current version of the application and the version it wish to update to. The server responding can use these parameters to show only relevant changes
release describes each release and can appear multiple times. It has the following attributes:
idcorresponds to theapp.releasefrom the info file. This will be used to determine if there is a newer versionnameis used to display the name of this versionreleaseDateis the release date and must be formatted as seen abovelicenseVersionis the version of the license. This will be used to determine if the update is free or paid
binary can be found in releases. A release can have multiple binaries, one for each supported OS. Its attributes are:
hrefthe URL to download the binarysizethe size, in bytes, of the file. If your webserver gives this information instead, this attribute will be ignoredplatformthe platform on which this binary runs. Currently supported values are: mac, win_x86, win_x64
When invoking the checkUpdates method, the framework will download the XML file (on a background thread) and look for updates. The algorithm to determine if an update is available is quite simple: if a release with a bigger number is present, then there is an update available. In case there is more than one possible update, the one with biggest number and compatible license version is selected.
If no update is present, nothing happens. If an update is found a dialog is shown informing about the update, showing the changelog and informing the user if the update is a free or paid one. The user can decide to ignore or install the update. If the user choose to install the update, the framework will start the installation procedure and terminate the application. At the end of the update, the application will be restarted. No user intervention is required during install.
- Support for signature/hashes is defined in the XML format but is currently unimplemented (it is correctly read but is ignored)
- Localize in more languages
- Support MSI for Windows and PKG Installer for OS X
- PDFKey Pro - Mac and Windows utility to lock and unlock PDF files.