What's New in install4j 6.1

Change release:

Please see the change log for a detailed list of changes.

install4j 6.1 introduces the following notable new features:

install4j 6.1 brings major compilation performance improvements. The actual speedup varies for different projects and is due to

  • Parallel Pack200 compression
  • Parallel compression of media files
  • No more staging of the distribution directory
  • Cached runtime shrinking for multiple media files
  • Reduced interaction with anti-virus tools that create a delay during the creation of executables

RTL support has been implemented in the install4j runtime. Two new RTL languages have been added, Arabic and Hebrew.

A powerful Modify ZIP file action has been added. In its "Modification actions" property you can configure a list of actions that will work on the temporarily extracted ZIP file.

All actions relevant for modifying the ZIP file are allowed in the action list. In particular, you can delete files, copy files to and from the archive or modify text files, XML files and property files. You could even add another "Modify ZIP file" that modifies a contained ZIP file - like a WAR inside an EAR.

A JDBC container action has been added. Previously, you had to specify the database and connection properties for each and every JDBC action. Also, a database connection is opened and closed for each JDBC action. The JDBC container action allows you to configure these properties only once.

The configured list of JDBC actions does not require any further database configuration and is executed on the same database connection.

The "Button" and "Hyperlink action label" form components can now execute action lists. Previously, the only option was to execute a script that had to complete quickly to avoid blocking the UI. Now, you can set the "Action type" property to "Action list" and configure a list of actions.

All actions are supported in the action list. During the execution, the UI components are disabled except for the cancel button and the actions are executed in the background.

Support for passing file lists from build systems or from the command line. Sometimes you have a list of files in your build system like gradle, maven or ant that you want to use in your install4j project. Previously, this would have required you to modify the project file programatically.

Now, there are two places in install4j where a compiler variable expands into a list of files. Compiler variables are the preferred way to pass information from the build system to an install4j project, because they can be easily overridden from the command line. File lists have a configurable separator which by default is set to the new compiler variable ${compiler:sys.pathListSeparator} which resolves to ; on Windows and to : otherwise.

Firstly, the class path in the launcher wizard now has a "Compiler variable" entry type. Class paths have to be relative to the distribution tree, so there is an option to strip a specified path prefix from absolute files.

Secondly, there is a new entry type "Compiler variable" in the distribution tree. It will expand to the list of files that is contained in the specified compiler variable.

Unlike for the class path configuration, files should be absolute and there is no need to strip a prefix.

The "Uninstall previous installation" action has been improved. It now has an "Installer variables" property that allows you to communicate settings to the the uninstaller.

Also, deselecting the new "Uninstall services" property allows you to keep services installed to avoid the loss of user account settings.

Finally, the log files of multiple actions of this type are now preserved in the .install4j directory.

The "HTTP request" action has been improved. For POST and PUT requests, you can now define a custom request body with an arbitrary content type. This is important if you use JSON data instead of encoded form data. Also, the new "Network failure script" property allows you to react with custom code if the URL connection cannot be established.

In addition, proxy auto-detection now also supports Windows proxy auto-config (PAC) for all HTTP actions.

Launchers can now have Java version-specific VM parameters. On the "Java invocation" step of the launcher wizard, you can open the dialog with the version-specific VM parameters below the fixed VM parameters.

Each configured VM parameter is only passed to the JVM if the actual Java version starts with the configured version string.

Action groups have new control flow options. If you select the "On error break group" property of an action group, you can now also set the "Retry expression" to determine if the action group should be repeated. In addition, there is now a "Failure strategy" and an "Error message" property that allows you to handle errors on the action group level rather than for each contained action.

Environment variables are now supported in some text fields in the install4j IDE. When using a JRE bundle, the bundle file may be located in a system-specific folder that is unrelated to the project directory. You can now use environment variables to specify such a location.

In the code signing settings, all keystore files may also be outside the project directory, so you can specify the paths with environment variables. Apart from using environment variables, you can also use the tilde character ~ to refer to the user home directory in a cross-platform way.