What's New in install4j 5.1

Please see the change log for a detailed list of changes.
install4j 5.1 introduces the following notable new features:

For a discussion of breaking changes when migrating from install4j 5.1, please see this blog post.

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 has failed.
  • 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.