Skip to end of metadata
Go to start of metadata

As an open-source project, we have kindly received a couple of free licenses for Install4j from ej-technologies. Contact Stian or Alan if you need a license key.

Install4j is able to package up a Java application and produces launchers (replacing shell scripts) and packages/installers for the most common operating systems (Windows, OS X, Linux).

To verify the installers worked (without also testing a new release), we repackaged and tested Taverna 2.4.1.

Taverna 2.5 and later are distributed using the installers documented on this page.

Supported operating systems

We have decided to create packages of the Taverna Workbench for:

  • Windows 64-bit .exe
  • OS X 64-bit .app
  • Linux 64-bit .deb (Debian/Ubuntu/Mint/BioLinux)
  • Linux 64-bit .rpm (Fedora/Redhat)
  • Windows 32-bit .exe (not officially recommended)
  • Platform-neutral .zip  (not officially supported)

All of these include application-menu integration. The Linux distributions install themselves into /opt/taverna-workbench

Similarly there are planned packages of the Taverna Command line for the same operating systems.

Bundled Java runtime

One great advantage of install4j, beyond providing a single point of making installers and launchers, is that it allows us also to bundle the Java JRE together with the Taverna Workbench, which simplifies installation for users and helps ensure a consistent usage experience. We have however chosen not to bundle the Oracle JREs with Taverna, because:

  • The Oracle JRE can be redistributed, but only licensed under the Oracle Binary Code License Agreement
    • This license should be compatible with Taverna's license LGPL 2.1, but might not be compatible with the licenses GPL 2 and GPL 3, which Taverna's license can optionally be interpreted under
  • Due to US export regulations, the Oracle JRE does not enable its support for "strong encryption"; users have to manually install the JCE Unlimited Strength policy, which requires an awkward navigation to the correct subfolder in the correct Java installation directory, and extraction of several files from the downloaded policy ZIP file, which might require administrator privileges
    • Taverna uses 'strong encryption' for its Credential Manager, which keeps track of SSL certificates and username/passwords for secured services. Without JCE, Taverna still work, but the Credential Manager will fail if you use a passphrase more than 6 characters long

Instead, we are bundling unofficial builds of OpenJDK, the open-source GPL distribution of Java. These have the advantages:

  • Compatible open source license (GPL 2 with classpath exception)
  • "Strong encryption" is enabled by default (in fact it has to be non-restricted to pass the export regulations)

The JREs which we bundle are the unofficial OpenJDK builds by Alex Kasko. We have made slight alteration to the packaging to make them compatible with Install4j. The JRE bundles which we embed are hosted at http://build.mygrid.org.uk/openjdk/ ({{/local/

Bundled graphviz

The new distributions bundle binaries for the Graphviz program dot, which Taverna uses to layout the workflow diagram.

This avoids several problems we have identified since Taverna 2.4.0:

  • Avoids additional install step on OSX and Linux (we already bundled the windows binary)
  • OS X downloads of Graphviz are specific per OS version
  • Output from Graphviz newer than v2.28.0 is incompatible with Taverna (T3-874)

These binaries are included within the bin/ folder structure of Taverna Workbench - but the install4j packages typically exclude the binaries for incompatible operating systems (except in the platform-independent distribution).

The binaries included are:

  • bin/win32i386/dot.exe - 32-bit for Windows - repackaged from the official graphviz-2.28.0.msi
  • bin/osx-x64/dot_static - 64-bit for OS X 10.6 and newer. Compiled on 10.6 with ./configure --enabled-static, relinked manually to avoid dynamic links to libpng.dylib etc.
  • bin/linux-x86/dot_static - 32-bit for Linux. Compiled on Debian 5 with ./configure --enabled-static, relinked manually to avoid dynamic links to libpng.so etc.
  • bin/linux-x64/dot_static - 64-bit for Linux. Compiled on Debian 5 with ./configure --enabled-static, relinked manually to avoid dynamic links to libpng.so etc.

The installers use the corresponding dot binary as the launchers specify the system property taverna.dotlocation. The shell script bin/dot.sh uses uname to dispatch to the corresponding binary (falling back to dot on the $PATH) and is used by the platform-independent taverna.sh.

Running install4j GUI

You must run mvn clean install -Pdist or requivalent before running install4j, as it relies on the distribution in ../../../target/taverna-workbench-dist - which is made by the src/main/assembly/dist-assembly.xml.

if you install install4j locally, you will need to configure it with a valid license key. See email 2013-12-18 from Stian Soiland-Reyes "License keys for your open source application", and indicatate below which license key you have used. Please do not paste the complete license key in here as this is a public page!

  • X-XX-TAVERNA#XXXXXXXX0001-XXXXXXXXXXXXX#XXXX Stian
  • X-XX-TAVERNA#XXXXXXXX0002-XXXXXXXXXXXXX#XXXX (available)
  • X-XX-TAVERNA#XXXXXXXX0003-XXXXXXXXXXXXX#XXXX (available)
  • X-XX-TAVERNA#XXXXXXXX0004-XXXXXXXXXXXXX#XXXX Jenkins

Within Install4j, open src/main/install4j/taverna-workbench.install4j.

As of 2014-01-29, our build consists of:

  • Default Fileset, taken from ../../../target/taverna-workbench-dist
    • excluding bin/ *.sh *.bat
  • Windows/OSX/Unix filesets
    • Adding *.bat / *.sh  and corresponding bin/subfolder
  • Launchers:
    • Taverna Workbench (e.g. taverna.exe and friends)
      • Do not allow multiple instances
      • classpath: lib/*  conf
      • Native library: lib
      • Main class: net.sf.taverna.raven.launcher.Launcher (not PreLauncher - as all that did was to build lib/* classpath)
      • icons from ../resources, ../windows and ../osx
      • Preferred VM: Client hotspot
      • VM options to specify system properties
        • Including -Dtaverna.dotlocation=${compiler:dot} which allows each OS install media to customize the dot variable.
        • and -Xmx${compiler:maxMemory} / -XX:MaxPermSize=${compiler:maxPermGenSpace} - as these numbers needs to be lowered for 32-bit installs
        • Note: -Dtaverna.startup is no longer set from here, but from net.sf.taverna.raven.launcher.Launcher
      • Splashscreen from ../resources/lib/launcher_splashscreen.png
    • executeworkflow
      • Similar to above, but with:
        • VM Option: -Draven.launcher.app.main=net.sf.taverna.t2.commandline.CommandLineLauncher
        • Allow multiple instances
        • No icon, no splashscreen
  • Installer
    • The default installer screens (no need to modify these)
  • Media
    • Windows x64 installer
    • Windows i386 installer
    • Mac OS X Single Bundle Installer
    • Linux Deb Archive x64
    • Linux RPM x64
    • Each of the above has a bundled OpenJDK, e.g. openjdk-1.7.0-u40-unofficial-windows-amd64-image
    • Windows Archive (no Java, all of bin/)
    • Unix Archive  (equivalent to Windows archive, but .tar.gz to better preserve permissions

The configuration is saved as an XML file with relative paths, so it is also possible (but not generally recommended) to edit this by hand.

mvn clean install -Pdist should  download the openjdks if needed, to ~/.install4j5/jres

They are downloaded from http://build.mygrid.org.uk/openjdk/ - which contain the unofficial builds converted with http://build.mygrid.org.uk/openjdk/1.7.0-u40-unofficial/convert-bundle.sh to be install4j compatible.

Install4j in the build

The workbench-distro module builds the installers if the Maven profile dist is enabled.

You can combine the profile with a nightly or release profile to change the version/timestamp strings.

In order for this to work, you need to first tell the Install4j maven plugin what your location of install4j is:

If you have not done so with the Install4j GUI (see above) or with the install4jc commandline tool, you may also need to install the install4j license key:

 

Example:

The installers are available under target/media:

These installers are "attached" to the Maven build, and so deployed to the snapshot repository and also exposed as artefacts within the Jenkins build, but with slightly different filenames like workbench-distro-2.5-SNAPSHOT-linux_amd64.deb

Update mechanism

Install4j comes with an update mechanism that checks a updates.xml file for any update at startup, and performs the download of the new installer, which then allows 'replacing' the original installer. Therefore the Windows installer now by default goes into c:\Program files\Taverna Workbench without specifying the version.

We have not currently used this mechanism, but for future use, the installers assume these locations, where 2.5-SNAPSHOT will depend on the version of the POM. To use this mechanism, you just need to copy the files from target/media to updates.taverna.org.uk/local/www/updates/workbench/* according to:

  • [INFO] Please upload updates.xml to http://updates.taverna.org.uk/workbench/2.5-SNAPSHOT/updates.xml
    [INFO] and upload all generated media files to http://updates.taverna.org.uk/workbench/installers/

     

Labels
  • None