Please see the change log
for a detailed list of changes.
For a discussion of breaking changes when migrating from install4j 5.1, please see
this blog post.
install4j 5.1 introduces the following notable new features:
Integrated code signing on Windows and Mac OS X. In the "General Settings" section, install4j
now has a "Code signing" tab where you can configure code signing certificates for Windows and Mac OS X.
Code signing will be applied to all launchers and installer applications in the corresponding media files.
The implementations for code signing are cross-platform, so you can sign Windows and Mac OS X media files
from a Linux build server, for example.
On Mac OS X, this tab offers a utility to export a complete certificate from the Mac OS X keychain
to a PKCS #12 certificate file that is usable by install4j. Starting with Mac OS X 10.8, code signing is
required for downloaded installers and application bundles in the default security setting of Mac OS X.
If code signing is enabled, install4j asks for the keystore passwords at the beginning of the build.
During development, code signing can be disabled in the build section.
For command line builds, the password is queried on the console. For full automation, the new
command line parameters --win-keystore-password and --mac-keystore-password
or their corresponding attributes in the ant task can be used.
Support for OpenJDK on Mac OS X. Starting with Java 7u6, Oracle directly delivers a JRE for Mac OS X.
Apple will not develop a proprietary Java 7 version, and the current Java 6 support is likely to be phased out
in a future release of Mac OS X. install4j 5.1 adds support for running the installers and launchers with OpenJDK.
If you choose OpenJDK, you also get the following new features:
You can now bundle a JRE on Mac OS X. This was previously not possible due to technical
and legal reasons. We now provide JRE bundles for Mac OS X in our JRE download wizard.
Just like on Windows, you can decide to download the JRE on demand if no suitable JRE is installed.
The installer displays a native progress dialog while a bundled JRE is being decompressed and started -
similar to the one on Windows.
New privileges architecture for Windows and Mac OS X. Starting with install4j 5.1, the installer
GUI always runs without elevated privileges. The "Request privileges" action now starts an elevated
helper process in which any action can be executed if its "Action elevation type" property is set to
"Elevate to maximum privileges".
This property is available on all installer applications, screens, screen groups, actions and action groups.
By default, the property is set to inherit from the parent element. For installer applications, the default
setting is not to elevate any actions, so actions are not elevated unless explicitly specified.
All actions in install4j automatically set suitable default values for this property.
Since a restart of the installer is no longer needed, you can move the "Request privileges" action from the
"Startup" node to any later point in the installer when you determine that you need elevated privileges.
Enhanced "Run executable or batch file" action. The following features were added in install4j 5.1:
In the case of a rollback, it is now possible to specify a rollback executable with separate
executable, working directory and arguments. Other properties are taken from the main executable.
In this way it is possible to undo the effects of an external installer if the installation
External executables can hang. With the "Timeout" property you can choose to terminate the
process after a specified number of seconds, so that your installer cannot become blocked.
When executing other executables, you now have much better control over redirection of stdin, stdout
and stderr. In addition to redirection to and from files, it is possible to redirect stdout and stderr
to the log file or to an installer variable and you can redirect stdin from a string value. For the new
redirection modes, the "Wait for termination" property has to be selected.
With the new "Require installer privileges" action you can now reliably request the same
privileges that were actually obtained in the installer. This action can be used in installer applications and
in the uninstaller. New projects have this action by default in the "Startup" node of the uninstaller.
Improvements for looping in screen and action groups. Starting with install4j 5.1, you can now
configure a looping index, its start value and its increment. This loop index is passed at the "index"
parameter to the "Loop expression" property. In addition, you can configure an installer variable that is set
to the value of the loop index, so that you can use the index value in the screens or actions that are contained
in the group.
Modifying the Info.plist file for Mac OS X launchers is now possible for each launcher.
The launcher wizard now has an "Executable Info->Mac OS X options" step that allows you define a
custom fragment that will be inserted into the Info.plist file at compilation time.
This is especially important for code signing of archives, since the Info.plist file cannot be modified
at runtime without destroying the signature.