install4j Changelog

What's new in install4j 10.0.7

Jan 26, 2024
  • New features:
  • Enabled control flow guard (CFG) for Windows binaries generated by install4j
  • Support new Windows 10 DPI awareness settings in the executable manifest. This fixes problems when moving windows between monitors with different DPI settings.
  • Show strong configuration and build warnings for macOS single bundle media files which do not work on macOS 14+ anymore and will be removed in install4j 11
  • Support Alt-+/- on numeric keypad as secondary keyboard accelerators for the enable/disable actions
  • Report bean IDs in annotated stack traces
  • Bugs fixed:
  • If a variable was entered for the JRE bundle version that resolved to non-digit characters, an NPE was thrown
  • Executable processors for Windows media file: Fixed tools like smctl from DigiCert ignoring input files
  • Zulu hotfix releases with identical version number were not used
  • Calling context.getWizardContext().setControlButtonEnabled/setControlButtonVisible for the cancel button in unattended mode with progress bar did not work
  • Fixed a problem with a JRE bundle not being used when a media file had an overridden JRE bundle with a major version larger than the one configured under General Settings->JRE bundles
  • UpdateChecker.executeScheduledUpdate is now executed in a background thread to avoid blocking
  • A SecurityManager deprecation warning was shown when running with an OpenJ9 JRE
  • Redirection files with installer variables in the file name caused an error in the uninstaller
  • Proxy auto-detection for URLs without host name and protocol threw an exception

New in install4j 10.0.6 (Jun 19, 2023)

  • New features:
  • Support JDK generation on Linux ARM and Alpine Linux
  • API changes:
  • Added UpdateDescriptor#getEntryForCurrentMediaFileId
  • Bugs fixed:
  • Regression in 10.0: Configuration of installation components: Saving of the settings "Initially selected for installation", "User can change selection state" as well as the dependencies was broken
  • Regression in 10.0: Project export was broken
  • Regression in 10.0: "Create common data files where possible" was broken for Windows installers
  • i18n messages were not replaced in the decriptions for macOS file associations
  • "Help->Show Directories->Show Directory Containing the Global Config File" showed the config file in the installation directory
  • Windows launchers: There was maximum length limit for the classpath which has been removed in this release
  • If a compiler variable entry in the distribution tree had an empty compiler variable value, the selection tree in the Files->Installation Components step was broken
  • Installation component configuration: Changing settings on the "Options", "Descriptions" and "Dependencies" tabs did not mark the project as modified
  • HTTP download actions: Fixed an NPE when a null proxy was present in the list of system proxies
  • The -temp parameter for Windows installer did not work as expected
  • Fixed a problem with temporary directories containing an exclamation mark

New in install4j 10.0.5 (Feb 20, 2023)

  • New features:
  • Notarization on macOS: If available, use the new notarytool command line executable instead of the deprecated altool
  • •"HTML or text display" form component: The underlying JTextPane is now exposed as a configuration object in scripts
  • Bugs fixed:
  • ZIP file actions: STORED entries could sometimes not be extracted and an exception was thrown
  • Always apply an empty entity resolver when parsing XML files, regardless of the protocol in the systemId to avoid an attack from externally supplied XML files.
  • Regression in 10.0.4: The "Execute launcher" action did not work anymore in custom installer applications contained in macOS single bundle installers
  • Compile-time file associations for macOS: Icon file was not saved with platform-independent file separators
  • Trees with checkboxes always scrolled to the end when nodes were expanded

New in install4j 10.0.4 (Nov 28, 2022)

  • Bugs fixed:
  • Appstore packages could no longer be verified because of issues with binaries in JRE bundles
  • Using ~ in redirection files as advertised in the documentation did not work on macOS and Windows
  • Single bundle installers could throw an exception at the end of the installer on macOS 13 (Ventura), leading to an incomplete installation
  • DER encoding is now used for code signing signatures. The fixes the optional CVE-2013-3900 mitigation on Windows where binaries produced by install4j would appear as unsigned.
  • Updated zlib to 1.2.13 to address CVE-2022-37434
  • Do not fail if the JDK for script compilation is not configured and/or the fallback JDK cannot be downloaded. Instead, print a warning to explain the problem together with a strategy for fixing it.
  • If install4j.noWinInetConnection=true is set, fall back to Java proxy detection and also consider http(s).proxyHost and http(s).proxyPort if the proxyHost and proxyPort system properties are not set
  • Startup notifications that occurred before a listener was registered were not delivered in order

New in install4j 10.0.3 (Sep 29, 2022)

  • Bugs fixed:
  • If dark mode was used in macOS 13 (Ventura), the install4j IDE as well as generated installers would hang on startup
  • macOS installers: Under some circumstances, symbolic links would not be uninstalled
  • macOS installers: The initial progress dialog did not use dark mode according to the system appearance when running with with the Intel architecture
  • The "Test installer" action added the JRE bundle each time and checked for latest JRE versions which made the action considerably slower

New in install4j 10.0.2 (Sep 15, 2022)

  • Bugs fixed:
  • Regression in 10.0: New projects could have inconsistent styles that lead to an NPE in the installer, preventing the installer window from being shown. For projects with this symptom that were created with 10.0 or 10.0.1, using the "Reset styles to the default" button on the Installer->Screens & Actions->Styles view will fix the project
  • Regression in 10.0: If only class path or module path were changed in the launcher wizard, the changes were not saved
  • Regression in 9.0.3: PDF extensions did not work with a Java version lower than 11
  • Running installers in unattended mode on Amazon EC2 Mac Instances via SSH did not work
  • If a script property was modified and reset to an empty string, it was still shown as modified in the install4j IDE

New in install4j 10.0.1 (Sep 15, 2022)

  • New features:
  • "Schedule update installation" action: Added a "Check for newer installation" property that checks for a manually installed newer version directly before execution. The default value is false and correponds to the previous behavior.
  • Bugs fixed:
  • Regression in 10.0: Overridden properties of styles were broken under some circumstances
  • Regression in 10.0: The media file output directory was not saved when the file chooser was used
  • Regression in 10.0: Pack200 compression for distributed JAR files did not work when the install4j compiler was running with Java 17
  • Paths in overridden properties of styles were not made relative when the project was saved
  • The latest JDK mechanism did not work when the JDK version changed. The new JDK was downloaded but the old JRE bundle was still used.
  • If a JDK was configured explicitly in the Java editor settings, the JDK was most likely only available on the developer machine and not on a build server and so no JDK was not downloaded for script compilation. Now a fallback to the auto-download is performed if the configured JDK is not found.
  • Script compilation did not work on macOS with auto-downloaded JDKs for Java 9+
  • Full screen mode in macOS was broken
  • Compiler variables view: Fixed undo for changes on the "Overrides" tab
  • Code signing view: Setting the files for the "Directories excluded for additional signatures" to an empty list did not work if the list had at least one file before

New in install4j 10.0 (Jul 26, 2022)

  • New features:
  • Support for Windows on ARM
  • Support for Apple App Store submission
  • "Add a Windows firewall rule" action
  • Undo/Redo functionality for all modifications in the install4j IDE
  • Support for default values for bean properties with a gutter marker for non-default values and a context menu action to reset the default value
  • Static configuration of file associations and URL handlers for macOS
  • Optionally global single instance mode
  • On Windows, the per-user single instance mode now optionally covers all active sessions
  • Configurable Unix desktop file settings for external launchers
  • When building on Linux/macOS, the existing file and directory modes can now be used
  • Detection if JREs are headless on Linux machines to avoid failures for installers and GUI launchers
  • If only a headless JRE can be found on Unix/Linux, force headless mode for the installer
  • Unified logging for background updates with the -Dinstall4j.updateLog=true system property for launchers
  • "Schedule update installation" action: Added a "Retry inhibition in minutes" property to make the inhibition time between failed installer invocations configurable
  • Improved documentation for auto-update functionality and background downloaders
  • "Change Windows file rights" and "Change access rights for a key in the Windows registry" action: Added an "Access mode" property to grant, set, deny or revoke rights. Previously rights could only be granted.
  • Dark mode for documentation
  • "Hyperlink URL label" and "Hyperlink action label" form components: Added a new property category "Hyperlink label" to make font and link colors configurable
  • "Read text from file" action: Added a "Save as string array" property
  • "Stop a service" action: Added a "Minimum wait time in ms" property to make the timeout configurable
  • Find installed Microsoft, Azul Zulu and Temurin JREs on Windows
  • Screens, actions and form components that have a comment are now shown with a comment badge in the configuration tree
  • Show number of configured version-specific VM parameter entries in the "Java invocation" step of the launcher wizard
  • Added an optional dialog for editing launcher VM parameters and version-specific VM parameter entries in the "Java invocation" step of the launcher wizard
  • The icon compiler can now create ICNS icons with Retina images
  • Support for switching between light and dark mode on the fly in the IDE
  • API changes:
  • Added WinServices#stop with a timeout parameter
  • Added com.install4j.api.windows.WinFirewall for programmatically configuring Windows firewall rules
  • Added com.install4j.api.beaninfo.ActionBeanInfo#setWindowsOnly to tell install4j that an action will only run on Windows. The install4j IDE will take this into account when changing properties of the "Request privileges" action based on the value set with ActionBeanInfo#setFullPrivilegesRequired.
  • Bugs fixed:
  • Replace text in XML files" action: With Java 10+, there were additional empty lines after element nodes
  • Launcher configuration: "Additional content for .desktop file" and "Options for service launchers" were not included in the project report
  • In the Java search sequence, the newest matching JRE in the registry was not always used
  • Adoptium was not the default JDK provider for new projects
  • Fixed a memory leak when running custom installer applications in a new process multiple times
  • Code editor had wrong cursor offsets in multi-monitor setups where some monitors have integer scale factors
  • Per-user MSI uninstaller did not work correctly without an already installed per-machine MSI that was created with install4j
  • MSI files did not work without a configured publisher entry

New in install4j 9.0.7 (Jul 26, 2022)

  • New features:
  • Elliptic curve keys for code signing are now supported
  • Bugs fixed:
  • Hyperlink form components: Dark mode was not supported
  • "Create a file association" action did not work on Linux with elevated privileges when an icon was specified
  • "Create a file association" action: Fixed installed icons on Ubuntu 22.04
  • Live dark mode switch did not work for non-visible screens that were not form screens, like the "Create program group" screen
  • Use POSIX/PAX extensions in generated TAR files to allow larger Unix installers
  • Fixed problem with large group IDs in generated TAR files
  • Fixed PKCS11Exception: CKR_USER_NOT_LOGGED_IN during code signing
  • Fixed incomplete code signing with DLL and EXE files from JMODs for some JDK providers
  • The compiler variables sys.jreBundleVersion sys.jreBundleArch could not be used in the media file name
  • Updated zlib to 1.2.12 to address CVE-2018-25032

New in install4j 9.0.6 (Feb 9, 2022)

  • Bugs fixed:
  • Variables were not replaced for the "Initial key" property when setting a new wizard index and the "Step key" property when changing the wizard index step for a screen
  • A deprecation warning was printed in console mode with Java 17
  • AIX java 9+ jre bundles could not be created
  • JRE bundles for the latest Amazon Corretto releases could not be created

New in install4j 9.0.5 (Sep 13, 2021)

  • New features:
  • Added a JDK provider for Adoptium. This is now the default JDK provider.
  • Added an option to collect file association actions for macOS installer media files at compile-time on the "Executable info->macOS options" step of the launcher wizard. This is required on the ARM architecture where the Info.plist file cannot be modified after the installation. This will become the default behavior in install4j 9.
  • Bugs fixed:
  • Regression in 9.0.3: Leading or trailing spaces in the default launcher arguments produced empty arguments
  • Regression in 9.0: Blocking in-process launcher integrations did not set the Look and Feel anymore
  • Regression in 9.0: The "Insert variables" action in editors did not work in contexts where i18n messages are not supported
  • Regression in 9.0: If no JRE bundle and no maximum Java version was configured, the minimum Java version was incorrectly used as the maximum version
  • Regression in 9.0: Windows installers did not work with IBM 9+ JREs
  • Load a response file" and "Create a response file" actions: The variable selection in the edit dialog of properties for excluded variables inserted the replacement syntax instead of the variable names
  • Create a file association" action: Compiler variables were not supported in the "Icon file for macOS" property
  • Empty directories in the distribution tree with an uninstall policy "Never" were deleted by the uninstaller
  • Fixed a StackOverflowException in the communication with the elevated helper process

New in install4j 9.0.4 (Jul 9, 2021)

  • Bugs fixed:
  • DMGs could not be opened in the Finder on macOS 12 beta
  • Command line parameter parsing changes in 9.0.3 also applied to fixed parameters. This created problems with quoted Windows paths.
  • Jetbrains JDK provider failed to show any releases due to Bintray being unavailable
  • Fixed memory leak for in-process installer applications
  • Regression in 8.0: Public fields of beans in custom code without getters could no longer be deserialized
  • "Run executable or batch file" action: The action failed for batch files if the temporary directory contained a & character

New in install4j 9.0.3 (Jun 17, 2021)

  • New features:
  • Floating license customers can now request license keys for the web license server instead of using the on-premises license server
  • Command line parameters are now handled in the same way as by the default java launcher. This fixes cases of invalid parsing due to unbalanced quotes.
  • Text overrides for enum bean properties now also support the displayed texts of enum values and not only integer indices or enum constant names
  • Bugs fixed:
  • Regression in 9.0: Custom icons on disabled form components were no longer shown in gray
  • Regression in 9.0: Gradle and Maven plugins were compiled with -target 11
  • "License agreement" form component: The "User must scroll to bottom" property had no effect under some circumstances
  • "Dark mode switcher" component: Keyboard focus was not shown
  • Script edits were not saved for form components if the "Insert ID" dialog was invoked
  • JetBrains JRE provider did not show newest releases after Bintray was frozen
  • Fixed NPE for pre-created JRE bundles that do not contain a release file
  • Gracefully handle the removal of the SecurityManager class in Java 18
  • Dpkg --verify was broken for .deb Linux packages

New in install4j 9.0.2 (Apr 20, 2021)

  • New features:
  • The Windows task bar icon now shows compilation progress as well as installation progress in generated installers
  • Bugs fixed:
  • Regression in 9.0: Low-resolution images were painted too small on HighDPI displays
  • Regression in 9.0.1: file:// URLs were not handled correctly anymore by the HTTP actions
  • Regression in 9.0.1: Fixed problems with server authentication in the HTTP actions on Windows
  • macOS: Notarization was perfomed in dry run
  • macOS: JRE bundle generation with universal binaries was broken for Zulu 8u282+
  • macOS: Notarization was broken for recent JetBrains Runtime JDKs
  • Fixed incompatibility with RPM 4.16.1.3

New in install4j 9.0.1 (Mar 18, 2021)

  • New features:
  • Reworked proxy handling to be more reliable and use native connections on Windows
  • Support for encrypted and authenticated communication with the floating license server
  • Support for remote checkout of a license from the floating license server
  • Bugs fixed:
  • macOS: Code signing did not set Team ID, this could be checked by anti-virus software
  • macOS: JRE bundle creation with "latest" as the minor version did not work for universal binaries
  • Warnings for overwritten files in the distribution tree were printed even if the source files were the same
  • Removed dependency of the FlatLaf look and feel on java.logging
  • Code signing: Globalsign timestamp server URL did not work anymore. This was used as a fallback if the Digicert timestamp server URL did not work.

New in install4j 9.0 (Feb 19, 2021)

  • New features:
  • Cross-platform Look & Feel with dark mode
  • Auto-detection of dark mode and automatic switching between light and dark mode
  • Added a "Dark mode switcher" form component that can also be used in styles
  • Support for IntelliJ UI themes
  • Added support for custom look & feels with look and feel handlers in custom code
  • Added Amazon Corretto and Azul Zulu JDK providers
  • Universal binaries architecture selection in the "Installation options" step of the macOS media wizards. Launchers then work with both x64 and aarch64 (Apple Silicon) architectures.
  • Universal JRE bundle generation on macOS. If the Universal binaries architecture is selected, the generated JRE bundle will include universal binaries for both x64 and aarch64 if the selected JDK release contains those architectures.
  • JRE bundling is now the default for new projects. The default JDK is set to the latest AdoptOpenJDK release in the LTS series at the time of the install4j release.
  • The Java project version is now primarily taken from the selected JDK. Minimum and maximum versions can be overridden in the "Search sequence" step.
  • Added support for using the latest JDK release in a selected major release with the syntax 11/latest or by selecting the major release folder node in the JDK release dialog
  • Added a "Show all modules" button on the JRE bundles step to inspect all modules provided by the selected JDK. The "Show included modules" buttons continues to show only those modules that will be included in the JRE bundle.
  • Use the selected JDK for the script editor and script compilation with automatic configuration of the Javadoc URL
  • Introduced sharing IDs for shared JREs to limit the scope of sharing. In this context the installation directories for shared JREs have changed.
  • Show a warning count at the end of the build with a hint on how to disable selected warnings
  • In verbose mode, show warning suppression hints after each warning with hyperlinks to add the corresponding compiler variables
  • Added a --fail-on-warning command line option for the compiler as well as corresponding properties for Gradle, Maven, and Ant tasks
  • Script compilation warnings are now printed during the build
  • Added a Maven plugin with the same functionality as the Gradle plugin
  • The "hello" sample project now has a Maven POM that shows how to work with the Maven plugin
  • Configurable setup application for macOS single bundle archives
  • Configurable post-installation and pre-uninstallation applications for Linux RPM and DEB archives
  • Request privileges" action: Added support for Linux
  • Search for IDs, names, property values and comments in the Screens & Actions view, form component dialogs and styles
  • The file mode of additional top-level files in DMGs on the "Installer options->DMG files and options" step in the macOS media wizards can now be overridden
  • Added an "Extracted archive" entry type for additional top-level files in DMGs on the "Installer options->DMG files and options" step in the macOS media wizards
  • Gradle plugin: Added a CreateBundle task to pre-create JRE bundles from installed JREs
  • Separate JDK providers for AdoptOpenJDK with HotSpot and OpenJ9
  • MacOS code signing: Added a field for directories that should be excluded for macOS code signing, such as pre-signed application bundles
  • Added an option to preserve internal symlinks for non-Windows media files on the Files->File Options step
  • Request privileges" action: Implemented encrypted communication between the installer application and its elevated helper process
  • Install a service action": Added the "Restart after milliseconds", "Maximum number of restarts" and "Reset failure count after seconds" properties to control the restart behaviour of execution failures. These are child properties of the "Restart on Failure" property
  • Optional display of alerts in unattended mode with progress dialog. This new mode can be activated with the "Show alerts" property for installer applications or the -alerts command line parameter.
  • The Unix default directory mode is now used for manual directory entries in the distribution tree and can be overridden when editing a manual directory entry
  • Custom installer applications: Added a "Create executable" property to prevent the creation of executables. In this case, the custom installer application can only be launched through the ApplicationLauncher API and launcher integrations.
  • Write timestamps to the build log after build has finished and to the installation log before the installer exits.
  • Installation type" screen: Descriptions of installation type descriptions can now be shown in console mode
  • When a file that is already present in the distribution tree is overwritten by another entry, a warning is printed at build time
  • Using ~ for the home directory is now supported for launcher redirection files
  • Install4j config files, JRE caches and pre-created JRE bundles are now stored in platform specific directories
  • The custom base directory for installer media files now supports installer variables, making it easier to install into locations like ${installer:sys.localAppdataDir}.
  • Check project errors when saving, offering an option to save anyway
  • JDBC actions: Added a "Log warnings" property
  • Register Add/Remove item": Show installation size in "Apps & Features"
  • API changes:
  • The callback in ApplicationLauncher.launchApplication/launchApplicationInProcess can now override Callback#createProgressListener to receive all progress information
  • Added com.install4j.api.UiUtil to help with the look and feel, for example to find out if the desktop or the installer application is in dark mode
  • Added com.install4j.api.laf.LookAndFeelEnhancer to help with custom UI creation. The singleton instance is available from UiUtil.getLookAndFeelEnhancer().
  • Added com.install4j.api.laf.LookAndFeelHandler to integrate custom look and feels
  • Added com.install4j.api.windows.SpecialFolder#LOCAL_APPDATA_LOW/PROGRAM_FILES/PROGRAM_FILES_COMMON
  • Added com.install4j.api.Util#isArchive to check whether the installation is an archive media file
  • Added FormComponentBeanInfo#setHideVisibilityScript to hide the visibility script configuration for form components that manage their own visibility
  • Added com.install4j.api.contextProgressInterface#isUnattendedProgressDialog and ProgressInterface#isAlertsShown to detect the unattended mode with progress dialog and whether alerts are shown or not in that mode
  • Com.install4j.api.windows.WinRegistry could not read or write QWORD values
  • Bugs fixed:
  • Install files" action: Removed "Update bundled JRE" property. Deselecting this property had the potential to create problems during updates, especially if the minimum Java version number changed
  • HTTP request" action: The installer variables configured with the "Variable name for response code" and "Variable name for response headers" properties were not set if the HTTP request failed.
  • Execute launcher" action: The launcher was always executed without elevation, even if the "Action elevation type" was set to elevate privileges.
  • Ant task: disableNotarization attribute did not work
  • The --add-modules option of the createbundle application did not support comma-separated lists of modules as claimed by the documentation
  • New frames were not opened on the same monitor as the last active frame
  • Installer applications now set the system property jdk.lang.Process.allowAmbiguousCommands=false to avoid cmd.exe injections. In unattended mode as well as in console mode, installers already behaved this way in previous versions.
  • Pressing Ctrl+C did not work correctly when questions were asked while running an action
  • Fail if the timestamp server returns an HTTP error code
  • Unix launchers could fail when they were started repeatedly in quick succession

New in install4j 8.0.11 (Feb 12, 2021)

  • Bugs fixed:
  • "Modify ZIP file action": The action did not preserve the ZIP entry compression method on recent versions of macOS
  • "Check box" and "Single radio button" form components: Fixed stackoverflow when selecting coupled form components
  • The JRE Version of pre-created bundles was not detected correctly. This could lead to warnings during the build and wrong DPI awareness settings for Windows launchers if a 1.8 JRE was bundled.
  • Some PKCS12 files could not be read if no unlimited strength cryptography was present in the JRE
  • If -Dinstall4j.langugage was passed to an installer to manually set the language, the initial progress dialog ignored that parameter and used the auto-detected language
  • Recent OpenJ9 JVMs did not work on macOS with launchers generated by install4j
  • Windows: Removed the default VM parameter -Dsun.java2d.noddraw=true for installer applications because it caused problems when used in remote desktop connections

New in install4j 8.0.10 (Jan 7, 2021)

  • New features:
  • The install4j GUI and compiler now run natively on ARM macOS (Apple M1)
  • Code signing: Added support for AES256 encrypted PKCS12 key files
  • JetBrains JDK provider: macos-aarch64 platform can now be used and notarized
  • Bugs fixed:
  • Fixed notarization for Zulu Java 11 macos-aarch64 builds
  • Older Java 11 and 8 releases were not shown for the AdoptOpenJDK JDK provider
  • JetBrains JDK provider: Releases were not sorted correctly in the selection dialog
  • Regression in 8.0.9: Under some circumstances, scripts and multi-line strings were not saved after closing the editor.
  • Calling ApplicationInfo.getInstallerVariable() always returned variables for the first project it was used on

New in install4j 8.0.9 (Nov 26, 2020)

  • New features:
  • Support for ARM macOS (Apple M1). The desired architecture (x64 or arm64) can be chosen in the media wizard.
  • Added a "Custom fragment for Info.plist" property for installer applications
  • API changes:
  • Added FormEnvironment#scrollComponentToVisible(FormComponent) to scroll the form panel to the specified form component
  • Bugs fixed:
  • "Installation type" screen and "Installation components selector" form component: If descriptions were expanded initially, the layout of the description could be broken
  • "Default execution mode" property of installer applications: Compiler variables were not replaced.
  • "Create program group" action: Modified settings could get lost when saving while the program group entries tab was visible
  • "Install a service" action: On Unix, if systemd is not used and the link in /etc/init.d could not be created, the action did not fail
  • "Console handler" form component: When hitting CTRL-D, instead of cancelling during a terminal prompt, an exception was printed and the installer application continued
  • "Require installer privileges" action: Wrong failure message was displayed in the uninstaller (Regression in 8.0.8)
  • Fixed layout of form components that are made visible and are not within the displayed viewport
  • Dissolving a bean group did not mark the project as modified
  • Changing a variable in the dialog for pre-defined installer variables did not mark the project as modified
  • Regression: Changes in coupled form components would no longer be saved
  • When using the dialog to insert a form component ID, the saved form components instead of the current form components were used
  • When cancelling installer applications with CTRL-C in console mode while input was read from the console, execution continued for a short time in some cases
  • In generated install4j launchers, runtime messages were always in English and not in the auto-detected locale
  • When the installer icon was customized and no cross-platform images or ICNS file was specified, the fallback to the default macOS icon was announced in a warning, but the build failed subsequently
  • In the Japanese translation, the product name install4j was translated by mistake
  • "Choose" button in file chooser was not translated anymore
  • Specifying relative path names to createbundle did not work

New in install4j 8.0.8 (Aug 1, 2020)

  • New features:
  • "Modify an environment variable on Windows" action: Added a "Remove" option.
  • The mouse navigation buttons now work in the view selector to navigate to previously selected views.
  • API changes:
  • Added methods getException() and getLog() to InstallerActionEvent providing the exception for abnormal termination and the logging output of an action
  • Bugs fixed:
  • Regression in 8.0.4: Startup error dialog in launchers did not work anymore, instead the launcher would hang when an error in the main class was detected
  • Liberica JDK provider did not download full JDKs with JavaFX for recent releases
  • MSI UAC dialog now shows the application name instead of a generated MSI file name
  • The JAR file resource/i4jruntime-dev-additional.jar was missing from the distribution
  • Pre-created bundles caused an exception during build under some circumstances
  • Fixed a memory leak when running in-process installer applications multiple times
  • When pasting actions into action lists, the "Can be executed multiple times" and "Failure strategy" properties were not reset to the fixed values that are required in action lists
  • Pre-signed JRE bundles that contain the CodeResources hashes file in binary form could not be notarized. This affects Oracle 8u261+.
  • Exclusion of symlinks in the distribution tree did not work correctly because the target was excluded as well
  • Symlinks that point to a target within an "include directory entry" in the distribution tree were duplicated as separate files. Define the compiler variable sys.ext.dirEntryFollowAllSymlinks=true to restore the previous behavior.

New in install4j 8.0.7 (May 27, 2020)

  • Liberica JDK provider: New releases were not listed anymore
  • Regression in 8.0.6: Custom localization files in .properties format could not override system messages anymore
  • When using compiler variables, the "Java version" step could showed a message "The minimum version must be lower than the maximum version" in some cases
  • "Delete files and directories" action: Rollback was not supported for symbolic links to directories
  • "Delete files and directories" action: Mode and modification time were not restored for directories on Unix
  • MacOS: Notarization now scans JAR and ZIP files for binaries recursively
  • Linux: The uninstaller could change the mode of directories that were not removed

New in install4j 8.0.6 (May 5, 2020)

  • New features:
  • "Delete files and directories" action: Support rollback for symbolic links
  • API changes:
  • API: Added Context#cancel and Context#runWithSuspendedActions to cancel the installer application programmatically and ask the user a question while the currently running actions are suspended
  • Bugs fixed:
  • Regression in install4j 8.0: An empty JRE search sequence was reverted to the default after opening the project again
  • "Show URL" action: The action failed if the scheme was empty or contained spaces
  • Eliminate warnings during build about Java 14 and 15 class file version numbers
  • AdoptOpenJDK provider: The deprecated v2 API has become unstable and recent major version were sometimes missing. By using the new AdoptOpenJDK v3 API this problem is fixed.
  • The install4j runtime development artifact did not include i18n messages, so some API calls failed when called from the IDE
  • The UI froze during the build if a variable replacement error occurred during code signing
  • The JRE Bundle wizard did not work for Java 14 because the jdk.pack module is now removed

New in install4j 8.0.5 (Mar 16, 2020)

  • New features:
  • In development environments, the API runtime dependency now automatically provides the native libraries that are required by some API calls
  • In development environments, the .install4j runtime directory can now be specified with the system property -Dinstall4j.runtimeDir. This allows all API calls to work, including those that require access to the config file, such as Variables.getCompilerVariable(...).
  • Multiple timestamp signing services are now tried in the case of a failure. The default is now DigiCert with a fallback to GlobalSign. This can be changed on a per-project basis as explained in the documentation.
  • Bugs fixed:
  • "Download file" action: If the digest file was created with an external tool that produces upper case letters, the check would fail
  • "Execute SQL script" action: Regexp delimiters and compound delimiters with a line break like ";n" did not work
  • "Check for running processes" action: Prevent closing the process dialog with the window close button
  • "Set the owner of files and directories" action: Leading and trailing spaces in the "owner" property were not trimmed and lead to an unhelpful error message
  • The native log files of Windows installers was not deleted
  • Fixed deadlock during auto-save or while saving the project when the floating license server connection was lost
  • Fixed memory leak when running in-process installer applications multiple times
  • When using the filter text field in the certificate selection dialogs, the wrong certificate was selected
  • The check whether modules are used by launchers was not made for merged projects, so a non-modular runtime library could be generated leading to a runtime failure in a merged launcher
  • Text mode overrides for bean properties did not work for elevated actions
  • Installers could throw an LzmaException for large data files
  • Arguments in .vmoptions files were not trimmed on macOS
  • API: If a scheduled version has already been installed manually, return false for UpdateChecker.isUpdateScheduled()
  • Windows: The -manual command line option for selecting a JRE did not work as expected when the direct JRE download options was selected for the media file
  • Windows: Could not use absolute locations for the Windows JRE search sequence when the build was not performed on a Windows machine
  • Windows: PKCS11 code signing for multiple Windows media files could fail

New in install4j 8.0.4 (Jan 9, 2020)

  • Bugs fixed:
  • Regression in 8.0.2: Overriding the font for the UI did not work anymore
  • Regression in install4j 8.0.3: Java 8 JRE bundles created by install4j 7 did not work anymore
  • AdoptOpenJDK bundle generation did not work anymore for recent JDK releases
  • Checksums were not updated after macOS notarization info was stapled to media files
  • User-visible error messages in unattended mode were only written to the console and not to the log file
  • JetBrains JREs were considered as beta releases
  • Generated macOS and Unix launchers did not work with JDKs that only included the java.base module
  • Argument files (@<file>) were not supported for launchers

New in install4j 8.0.3 (Dec 20, 2019)

  • New features:
  • Notarization on macOS and the associated Apple ID can now be configured on the "General settings->Code signing" step. The notarization option in the "Build" step was removed.
  • Added a "Provider short name" configuration option on the "General settings->Code signing" step to select the team for the notarization call if the credentials are associated with multiple teams
  • Correctly handle Java 14+ where Pack200 compression has been removed
  • Support for JDK releases that target only selected platforms. When linking a JRE bundle and the current platform is not found in an overridden JDK release of a media file, the compiler now checks the project configuration for the JDK release.
  • Added a "Convert spaces to underscores" option for the media file name pattern on the "General Settings->Media File Options" step
  • "Upload file" action: Added an "Upload method" property that can switch the HTTP request method between POST and PUT
  • Bugs fixed:
  • Regression in 8.0: "Write properties to file" action: Deselecting the "Replace installer variables" property had no effect.
  • "Log file viewer" form component: Relative files were not resolved with respect to the installation directory
  • "Log file viewer" form component: Write-protected log files could not be displayed
  • "File associations selector" form component: In Unix media files, no file association actions were shown. As a consequence the "File associations" screen was always hidden.
  • Additional entries for desktop and service files were not saved
  • macOS notarization did not work with folder archives that included a JRE bundle
  • Checksums were not updated after macOS notarization info was stapled to media files
  • A custom application ID could lead to an bundle identifier that was invalid for macOS notarization
  • Fixed JRE bundle creation for AdoptOpenJDK 9.x releases
  • The JRE bundle creation wizard did not work for Amazon Corretto 8
  • Only use packages from the java.base module for the core functionality for generated launchers
  • Fixed a problem when unpacking JAR files packed with Pack200 on embedded Linux systems with BusyBox
  • Fixed compatibility issues with systemd on Ubuntu LTS releases
  • When an undefined installer variable with an elvis operator was used in a bean property, it was always resolved to the fallback at startup.
  • Properties of type java.io.File that had an initial non-null value were not serialized
  • Fixed out of memory problems when building large MSI files

New in install4j 8.0.2 (Sep 23, 2019)

  • New features:
  • "Create a file association" action: The "File extension" property now accepts a comma-separated list of file extensions
  • When setting -Dinstall4j.logTimestamps=true, each message in the log file is prepended with a time stamp
  • Bugs fixed:
  • Regression in 8.0: The back button was not visible if a screen had the "Safe back button" mode enabled and a previous screen that could not be reached with the back button had actions that could be executed multiple times
  • Regression in 8.0: Tabbed panes in form screens could no longer be added
  • Regression in 8.0: When setting an alternative log file, some content from the top of the log file was truncated
  • AdoptOpenJDK provider did not work for Java 13
  • JDK provider JAR files for custom JDK providers were not present in the "resource" directory of the install4j installation
  • The VM passthrough parameters prefixed with -J were not added after the .vmoptions file so they would not override values in the .vmoptions file
  • The value of the compiler variable sys.time could vary during the build
  • If redirection files for launchers were specified with subdirectories, the relative paths could have the wrong path separator
  • Component selection tree: If the changeability of a component folder changed because of the state of its child nodes, the check box was not updated until the mouse was moved over it
  • Text form components: The "Key validation expression" and the "Key listener script" did not log exceptions
  • Windows launchers: The -Xss VM parameter was not used for the main thread
  • macOS: An additional entitlements file did not work when media files were compiled on Windows

New in install4j 8.0.1 (Jul 19, 2019)

  • Bugs fixed:
  • Regression in 8.0: Screens in merged projects could not have the same ID as screens in the main project anymore
  • JRE bundle creation failed if the temporary directory was not on the same file system as the user home directory
  • Compiler variables in JDK release text field were replaced with their value when the project was saved
  • JetBrains Runtime Java 8 bundles did not work
  • "Show all modules" button showed empty list for non-modular JDKs
  • File associations for install4j project files did not work on macOS
  • The about dialog for the install4j IDE on macOS was broken
  • On macOS the IDE would quit without asking if the project should be saved if CMD-Q was pressed
  • Fixed problems with keyboard navigation in lists under macOS
  • Using archives in class and resource paths with a wildcard in the file name did not work if the path was absolute
  • Console mode: If the executable for a launched process did not exist, a stack traces was printed
  • Console mode: With nested component folders, the user selection could be wrongly extended to include all components in a folder
  • Values of disabled properties were not readable when selected

New in install4j 8.0 (Jun 28, 2019)

  • New features:
  • Support for notarization on macOS
  • Support for PKCS#11 hardware tokens and the Windows keystore for code-signing on Windows
  • MSI wrapper for Windows installers
  • New on-demand JRE bundle bundle creation with automatic download from the OpenJDK providers AdoptOpenJDK, Liberica and JetBrains Runtime
  • Cross-platform linking of Java 9+ JRE bundles with the modules requirements of all modular launchers together with additional configurable requirements and external JMODs
  • SPI for writing new JDK providers that can be used by the JRE bundle creation
  • Cross-platform support for registering URL handlers
  • Added a cross-platform "Register a URL handler" action. This allows you to start a launcher from a link in a web browser and facilitates migrations from Java Web Start to install4j.
  • File associations and URL handlers for macOS archives
  • File associations for Linux/Unix desktop environments
  • Improved support for Linux .desktop files
  • Linux/Unix: Task bar items of AWT/Swing applications now show the icon from the .desktop file. install4j now generates unique main class wrappers for Linux/Unix media files, so the WMClass property of AWT windows is unique.
  • "Create start menu entry" and "Add a desktop link" action: Additional entries for the created .desktop file can now be specified.
  • Linux/Unix: Additional content for the .desktop service file can be configured on the "Executable info->Unix options" step of the launcher wizard. This is important for archives and also applies to the "Create program group" action.
  • Explicit systemd support
  • "Install a service" action: If systemd is detected on Linux/Unix, a .service file is written. Additional content for the systemd service file can be specified on the action.
  • systemd support for RPM and DEB archives: Additional content for the systemd service file can be configured on the "Executable info->Unix options" step of the launcher wizard.
  • Many new features for compiler variables
  • Added an "Overrides" tab to the compiler variable definition where overrides for all media files can be configured in one place for a single variable
  • Compiler variables from merged projects are now shown in the compiler variable selector
  • Compile-time environment variables are now available from the compiler variables chooser dialog
  • Added "Insert file" and "Insert directory" path menu items in the variable chooser popup for compiler variables and other appropriate text fields
  • Compiler variable syntax ${compiler:file("<path>")} to insert contents of text files
  • Added compiler variables "sys.mediaFileId", "sys.mediaFileName", "sys.install4jVersion", "sys.jreBundleArch" and "sys.jreBundleVersion"
  • Added the installer variables "sys.date", "sys.time", and "sys.timestamp" containing the start time of the installer application. The format is the same as for the corresponding compiler variables containing the build time.
  • Improved configuration of installer variables
  • Non-text properties in configuration of screens, actions and form components now have "Switch to text mode" action in the context menu where installer variables can be used.
  • Default values for missing variable values in the variable text field syntax of the type ${installer:variableValue?:defaultValue}
  • Improved live binding of installer variables
  • "Html or text display" form component: The component can now show changing content of an installer variable
  • "Html or text display" form component: Added a "Caret position after update" property
  • "Run executable or batch file" action: Added "Update variable after each line" child properties for the variable redirection setting
  • If the same text is logged repeatedly, only output it once together with the number of times it has been logged.
  • Live installer variable text binding on "Label" and "Key-value pair" form components
  • Live installer variable text binding for the window title of custom installer applications
  • Live installer variable text binding for the "Help text" property of form components
  • New form components
  • Added a "Text file editor" form component
  • Added a "Log file viewer" form component
  • Improved log file handling for the installer
  • Improved alternative log file mechanism: With the VM parameter -Dinstall4j.log=<file> a log file is written at the specified absolute or relative path, and is not deleted or moved to the installation directory. Installer variables can be used in the path.
  • Configurable error log file for Windows installers with the new "Log file for stderr" property of the installer
  • New documentation that has been rewritten from the ground up
  • Documentation is now also available as an eBook in epub and Kindle formats
  • Context-sensitive help relating to UI elements is now available directly in the UI
  • New light and dark look and feels based on IntelliJ IDEA with HighDPI support for Windows and Linux
  • Less verbose and more human-readable project file format that does not write default settings
  • Support version ranges in version-specific VM options for launchers
  • File installation failures in unattended mode are no longer ignored unless the -nofilefailures command line option is set
  • "Download file" and "Install files" actions: Check SHA-256 instead of MD5 checksums. SHA-256 checksums are written to the file sha256sums in the media file output directory. The old md5sums file is written as well.
  • API changes:
  • Added UpdateChecker.isVersionLessThanOrEqual and UpdateChecker.isVersionGreaterThan to cover the use cases of checking whether a version falls into a range and whether an upgrade is available
  • Added Util#moveLogFile
  • Added ApplicationInfo#getCompilerVariable(String) and ApplicationInfo#getInstallerVariable(String)
  • Added Install4JPropertyDescriptor#setEmptyMessage to show an in-place explanations for significant empty property values
  • Added Install4JPropertyDescriptor#setSuggestedValues to provide auto-completion for text properties
  • In properties with an array type, installer variables with collection values are expanded as separate array elements. Previously this was only implemented if the installer variables had array values. In the API, this new behavior affects the AbstractBean.replaceVariables() methods with array parameters.
  • FormEnvironment#getId(FormComponent) now returns the display ID instead of the automatic ID
  • Bugs fixed:
  • "Read text file" action: Relative paths were not supported
  • "Write text to file action": A trailing line feed was always written
  • "Redirection" step of the launcher wizard: Launcher runtime variables were not offered in the variable chooser for the redirection files
  • Response files could override the persisted result of the "Request privileges" action so that the "Require admin privileges" action in the uninstaller and in installer applications assumed the wrong state contained in the response file
  • Do not print title of form screens in console mode if a console screen change handler is set.
  • Launching executables on Windows no longer involved an intermediate batch file in the %TEMP% directory which could lead to problems with anti-virus software
  • For OSGI applications, the method to hide the splash screen could not work due to classloader issues
  • Linux/Unix launchers: Command lines are now considerably shorter, because "Scan directory" entries in the class path are now implemented with the wildcard expansion of the standard Java launcher
  • Executing launchers in a macOS folder archive with a packed JRE directly from the DMG failed silently
  • macOS: Argument files (@<file>) were not supported for launchers
  • IDs of ActionList properties were not migrated when a bean was copied and pasted. This affected the "JDBC container" and the "Modify ZIP file" actions as well as the "Button" and "Hyperlink action label" form components
  • If a screen class could not be loaded, the bean selector became unusable for all beans
  • Accessibility helpers on macOS could slow down mouse interaction with installers so that they became nearly unusable
  • Version-specific VM parameters were not included in project report
  • Windows launchers: If the best Java installation from the registry cannot be loaded, continue with the next possibility from the registry
  • Message boxes did not show the installer icon in the task bar if no other window was shown
  • Password dialog was always shown on the primary screen in multi-monitor setups

New in install4j 7.0.12 (Jun 25, 2019)

  • Bugs fixed:
  • "Single radio button" form component: In console mode, the selection script for a button was called twice if the button was not initially selected
  • Since install4j 7.0.10, a security fix prevented launchers from running on unpatched Windows 7 installations. This has been fixed for Java 9+ and recent Java 8 versions.
  • File installation options of files in the distribution tree that were also added on the "Installer->Custom Code & Resources" step were ignored
  • The dialog for showing running processes did not have the install4j window icon
  • Fixed NPE when a custom installer application was started in-process from a modular application
  • Linux/Unix: When a service script was executed with the "start" parameter, the single instance check was not performed
  • Background update downloader: Downloaded media files of previously successful updates could not be deleted if the API was used in a particular way. Now they are deleted by the "Schedule update installation" action.
  • macOS: When using JavaFX and an automatic launcher integration that checks for visible windows, the AWT was initialized even if the update downloader was started as an external process which could lead to a deadlock for recent Java versions
  • macOS: The installer variable sys.preferredJre could hold the wrong path
  • macOS: Command line launchers in archives could not find bundled Java 9+ JREs
  • Windows: Native install4j runtime files were not overwritten when an older installation was installed on top of a newer installation

New in install4j 7.0.11 (Apr 15, 2019)

  • New features:
  • Added "Accept all SLL certificates" property to the "Install files" and the "Download and install component" action
  • Bugs fixed:
  • Fixed various exceptions when running installers with Java 12
  • "Modify text file action": Search values whose encoded bytes contained values larger than 127 were not found
  • Property modification actions discarded comments at the end of property files
  • Dialogs in the install4j runtime including alert dialogs did not center correctly in multi-monitor setups
  • Linux: Fixed exceptions in command line compiler on headless systems related to the Gnome accessibility bridge
  • macOS: Modular applications could not be started by the generated launchers

New in install4j 7.0.10 (Mar 14, 2019)

  • New features:
  • Windows launchers now support OpenJ9 JVMs
  • Added the compiler variables sys.mediaFileSeparator and sys.mediaPathlistSeparator containing separators specific to the target platform of the current media file
  • "Update alert" form component: Added an "Initially selected choice" property
  • API changes:
  • Added Context#gotoScreen(Screen, boolean, boolean) for navigating to a screen while optionally checking the condition of the target screen and executing actions, similar to Context#goForward(int, boolean, boolean)
  • Added InstallerActionEvent#getActionId() returning the ID of the action that triggered the event
  • Added Context#getId(Action) and Context#getId(Screen)
  • Added Context#isGui()
  • JVMSelector#setPreferredJVM now also works in custom installer applications
  • JVMSelector#getJVMLocations could not handle JRE locations ending with "jre" on macOS, so passing System.getProperty("java.home") as an additional location did not work
  • JVMSelector#getJVMLocations now also considers the JRE set with the environment variable INSTALL4J_JAVA_HOME
  • Bugs fixed:
  • Security: Prevent DLL hijacking for Windows installers with Java 11+ on Windows 8.1 and earlier
  • Regression in 7.0.9: When using merged projects, overriding a compiler variable in the main project with another compiler variable threw an exception
  • Regression in 7.0.9: Compiler variables in styles could be replaced with their values if the preview functionality was used for a screen and the style was subsequently edited
  • "Download file" action: Installer variables were not replaced in the "Optional md5sums URL" property
  • "Windows user selector" form component: Show a more specific error message when a Windows user cannot be created because the user name is invalid
  • "File associations selector" form component: The displayed file associations depend on which launchers are contained in the the selected installation components. Going back to the installation components screen and changing the installation components would not update the list of displayed file associations.
  • File and directory chooser form components: In console mode, if the initial value was set to an installer variable with an empty value, the suggested value was not empty but the working directory
  • Form screens: If the "Screen can be reached" property was set to "Only with Back button", the screen was not shown when the user used the back button on the next screen
  • Windows: Invoking the uninstaller directly from a mapped drive did not work correctly
  • Windows: Fixed problems with Java 11+ and DLL loading when other JREs are in the PATH environment variable
  • Windows: Java 11+ 32-bit installers did not work for users with different long and short path of their home directory
  • Windows: Installers now try to write temporary files to %ProgramData%install4jtemp if the user-specific temporary directory is not usable
  • Linux/Unix: Made the workaround for running installers on systems where no fonts are installed more reliable and also cover custom installer applications as well as the the uninstaller

New in install4j 7.0.9 (Jan 9, 2019)

  • New features:
  • Spinner form components: Added a "Value change script"
  • Layout groups: Added a "Border title" property
  • "Modify ZIP file" action: The ZIP method of existing files is now preserved. A "ZIP method for new files" property was added.
  • "Create a ZIP file" action: Added a "ZIP method" property
  • Bugs fixed:
  • Regression in 7.0.8: Default icon for installers was not used anymore on macOS
  • Regression in 7.0.8: Migrated projects with updaters that were not saved in the UI threw an NPE during compilation
  • Regression in 7.0.5: Installer did not work in the Turkish locale
  • Regression in 6.0: When using compiler variables in executable names, they were expanded in the file selection trees for installation components
  • The -help command line option did not work for installers on headless systems
  • Fixed an IllegalAccessError when using static script methods
  • Using the -splash command line option for unattended mode or a "Progress interface creation script" property caused an exception on headless machines
  • MacOS: Versions of recent openJDK installations were not always compared correctly in the search sequence
  • File modification actions: If ".." was used in a path, the action could fail when intermediate directories did not exist
  • Passing unsupported values for the messageType parameter in the message display methods of com.install4j.api.Util could produce an NPE
  • Added a workaround for an InternalError when a bundled JRE could not find fonts on Linux
  • RPM archives now include SHA-1 and SHA-256 digests to avoid warnings on recent Linux distributions
  • If the environment variable _JAVA_OPTIONS was set, the version check for Java 9+ did not work on Windows
  • Some actions without rollback functionality still wrote to the log during rollback and could trigger a rollback dialog even if otherwise unnecessary
  • Compiler variables in linked installer elements that existed only in the merged project were not replaced
  • Compiler variables from merged projects were not available from Context#getCompilerVariable at runtime

New in install4j 7.0.8 (Oct 16, 2018)

  • New features:
  • Automation tasks on macOS have been re-implemented natively to avoid authorization dialogs on macOS 10.14+
  • The password dialog displayed by the "Request privileges" action on macOS now shows the full name of the project instead of "install4 wants to make changes"
  • -J-splash:none can be passed to launchers to disable the splash screen on Windows
  • Environment variables are now supported for the custom installation base directory that is configurable in the media wizard
  • Standard icons in i4jruntime.jar are now replaceable with a custom code JAR that contains image files with the same paths
  • Bugs fixed:
  • Regression in 7.0.7: Installers with bundled JREs required that the output streams were consumed
  • Regression in 7.0: The "Next" button was visible in the "Update message" screen of the updater templates
  • Launching an install4j executable with a splash screen from another executable created by install4j did not work with Java 11
  • User-visible error messages in unattended mode were only written to the console and not to the log file
  • Java 10+ JDKs could not be selected for the code editor
  • The proxy dialog was shown when a URL with the file protocol could not be opened by a download action
  • The "Base URL for installers" option on the "Installer->Auto-Update Options" step now disallows URLs that do not have a trailing slash because the last path component would be ignored in that case
  • On macOS, an explicit update check could throw an NPE under some circumstances
  • Deselecting the checkbox "Add icon to launcher" on the "Icon" step of the launcher wizard had no effect for macOS launchers
  • Form styles were not always cloned at runtime which could lead to wrongly disabled navigation buttons in the installer

New in install4j 7.0.7 (Aug 27, 2018)

  • New features:
  • Unix custom script properties for all installer applications, the existing custom script screen in the Unix installer media file wizard now overrides this setting
  • Support for running the install4j IDE and its command line tools with Java 10 and Java 11
  • Bugs fixed:
  • Regression in 7.0: Properties with property converters were displayed with their toString() values by their renderers
  • Regression in 7.0: Console mode did not work anymore in cygwin's default mintty console
  • Regression in 7.0: Alt-Left and Alt-Right keyboard shortcuts for the Next and Back buttons did not work anymore
  • Regression in 7.0: Keyboard shortcuts for control button components also worked if the component was disabled or invisible
  • "Http request" action: response body was not saved to variable for mime type application/json
  • Migrate the image anchor "Center" for banner images in install4j 6.x and earlier to "West", because "Center" sets the background for the whole screen in install4j 7.0+.
  • When deleting elements from an installer application, links into other projects could mistakenly be detected as broken links that were then deleted as well
  • JRE downloader did not ask for a proxy if the connection failed
  • Resource files from the "Installer->Custom Code & Resources" step were added to the classpath for the script dialog and could break the code analysis engine under certain circumstances
  • macOS folder media files: If a GUI launcher was in a non-default file set, the "Add a desktop link" and "Add an executable to the dock" actions did not work
  • macOS: Volumes could not be ejected when no code-signing was used. Launchers are now adhoc-signed to avoid tccd from locking the executable.

New in install4j 7.0.6 (Jun 11, 2018)

  • New features:
  • Support for stricter time-stamping validation for code signatures on macOS 10.14. This fixes the message that the app is damaged and should be moved to the trash.
  • Automatic scaling of splash screen with HiDPI resolutions on Windows
  • Bugs fixed:
  • Under certain circumstances, an update installer started with UpdateChecker.executeScheduledUpdate was terminated prematurely on Linux/Unix
  • "Replacement script for language code" property of the installer: The selected language was used in the installer but not reflected in the return value of context.getLanguageId() or the sys.languageId installer variable.
  • Fixed a compilation error when using custom code in styles and style overrides where used

New in install4j 7.0.5 (May 12, 2018)

  • New features:
  • Support OpenJDK installations when creating JRE bundles
  • API changes:
  • Added UnixFileSystem#getShell and UnixFileSystem#findExecutableInPath
  • Bugs fixed:
  • Regression in 7.0: Changing text as well as enabled, visible or focus state of control buttons via the WizardContext in pre-activation scripts of a screen threw an exception
  • Regression in 7.0: The argument -help for the installer in GUI mode showed a message with HTML tags
  • Regression in 6.1: "Replacement script for language code" of the installer did not work anymore, throwing a ClassNotFoundException
  • Overridden styles were not used if the base style was used directly as well
  • Scripts in styles and their form components did not work in the uninstaller because a parameter of type InstallerContext was expected. Now a parameter of type Context is expected.
  • Images from merged styles were not displayed in the preview dialog unless the merged project was in the same directory as the main project
  • If a style from a missing merged project was used for a screen, the property panel was broken
  • Compiler variable overrides in the media file wizard were not propagated to merged projects
  • Styles were not resolved correctly when adding new installer applications or pasting screens from other projects
  • When including a merged project that merged extra files sets, the compilation of archive media files failed
  • The --release arguments had no effect for merged projects
  • Merged launchers were not supported for macOS single bundle media files
  • Fixed the exception that was thrown when an installer event listener is added in another listener
  • Fixed hanging UI when editing form components
  • •"File chooser" form component: The select button in the file chooser displayed an English text in all locales
  • •"Installation type" screen: In console mode, the variable "sys.installationTypeId" was not set
  • On Debian-based Linux distributions, the installer is now started in the default terminal emulator instead of in an xterm
  • The insets of all buttons in the installer were too small with the GTK look and feel
  • The directory chooser showed an ugly focus border for the selected element with the GTK look and feel
  • Windows: All actions that recursively operated on directories followed symbolic links
  • Pre-defined installer variables in installer and uninstaller of merged projects were not present at runtime
  • The "Failure strategy" property "Return to parent screen" added a navigation step to the screen history
  • If an i18n message with arguments was overridden by a message without arguments, an exception was thrown
  • In the preview dialog for screens, installer, compiler and form variables in an i18n message could lead to an exception
  • On Windows, stderr was written to error.log in the uninstaller. If that file was writable, its existence would block the success of the uninstallation.
  • Updating a bundled Java 9+ JVM with the update downloader did not work because lib/modules was locked
  • Chmod expressions with multiple subjects were rejected
  • The installer did not work when started from certain non-platform encoding paths
  • The message that is shown when the removal of a previous program was not completed was always shown in English
  • Control characters were expanded when editing custom localization files with a ".properties" extension
  • Not all redirects were processed by HTTP downloads
  • Progress bars were just one pixel high on Windows 2016
  • Fixed the invalid signature error when .DS_Store files were included in a single bundle archive
  • Under certain circumstances, an update installer that was started via a call to UpdateChecker.executeScheduledUpdate was terminated prematurely on Linux/Unix

New in install4j 7.0.4 Build 7118 (Jan 31, 2018)

  • New features:
  • The install4j IDE and compiler can now run with Java 9
  • Java 9 JREs and JDKs can now be used for code-completion and compiling scripts
  • Form screens: Added a "Screen can be reached" property that allows the screen not be shown when the user reaches the screen with either the Back or the Next button. This is analogous to the isHiddenForPrevious() and isHiddenForNext() methods that are available in the custom screen API.
  • Added the ability to specify dependencies for RPM archives on the "Installer options" step of the media wizard
  • Added the VM option -Dinstall4j.helperDebugPort=nnnnn for debugging the elevated helper process
  • Added a compiler variable "sys.timestamp" that contains the Unix epoch of the build time
  • For non-OSGI SWT applications, the splash screen is now hidden automatically when the first window is shown
  • API changes:
  • Added com.install4j.api.windows.WindowInfo with methods to get the top level windows, detect tablet mode and wait for a maximizable window on Windows
  • Added com.install4j.api.formComponents.FormEnvironment#isInitialized to check if the form panel has been fully constructed
  • JVMSelector#setPreferredJVM did not work in the installer if a "Request privileges" action had been previously executed
  • Added com.install4j.api.beaninfo.ActionListPropertyDescriptor#setConfigurableElevationType to suppress the "Action elevation type property" for actions in action lists
  • Added com.install4j.api.update.UpdateDescriptorEntry#getMd5Sum. MD5 sums are now written to updates.xml, if MD5 sums calculation is enabled for the project.
  • Added the constructor com.install4j.api.beaninfo.ScriptParameter(String, ParameterizedType) to support script parameters with generic types, like List<String>
  • Bugs fixed:
  • Regression in 7.0: The selection script in "Radio button group" and "Single radio button" form components was called while the form panel was being constructed
  • Regression in 7.0: When an action with a confirmation checkbox was added to the "Installation" screen, the checkbox was added to the same screen instead of the "Additional confirmation screen"
  • Regression in 7.0: "Update alert" form component: In console mode, the variable "sys.confirmedUpdateInstallation" was set to true even if the question to update the existing installation was answered with no
  • Regression in 7.0: Setting -Dinstall4j.clearProxyCache=true produced an NPE
  • Custom watermarks for the installer and installer applications were not migrated from install4j 6.x projects
  • Compiler variable entries in the distribution tree could not be overridden externally
  • Code completion in the static code section did not show other static fields and methods
  • Calling HyperlinkLabel.setPassiveColor did not change the color of existing labels
  • Classes produced by the Kotlin compiler can now be compressed with Pack200
  • The main class selector in the launcher wizard did not search JAR files that were in file sets other than the default file set
  • Unix scripts did not work if the "which" command is not installed. This is the default case for some Linux distributions.
  • The message in option dialogs for file overwrite confirmation and other instances was incorrectly split into title and message body
  • i18n messages were shown as replaced in form component properties while the preview dialog was being displayed
  • The wizard index could not be updated for the same screen, only for screen changes. Calling WizardContext#setWizardIndexKey and WizardContext#setWizardIndex in actions or form component event handlers now has the intended effect.
  • When using a large number of custom code JAR files together with Pack200 compression, unpacking of some JAR files could fail
  • "Program group" selector form component: Fixed an exception when shown on non-Windows platforms
  • "JDBC container action": The action does not work in elevated mode, so elevation has been disabled, also for contained actions
  • "Fall back to console mode on Unix" property for installer did not work under some circumstances
  • macOS: For signing, only the Developer ID Application certificate is now accepted, for other certificates the build will fail. Gatekeeper does not accept third-party certificates, while it is technically possible to use them, it makes no sense and nearly always an error. Should you really want to continue using other certificates, set the compiler variable "sys.ext.macosAcceptAllCerts" to "true".
  • macOS: The "Add VM options" and "Modify classpath" actions did not work for included command line executables in single bundle archives

New in install4j 7.0.3 Build 7072 (Oct 6, 2017)

  • Bugs fixed:
  • Regression in 7.0: License screen did not display license text in console mode
  • Regression in 6.1: Order of update descriptor entries in updates.xml was random instead of the configured order in the "Media files" step
  • Installers did not work when they were located in a path containing certain Romanian diacritics
  • It was not possible to use a literal variable string like {0} in i18n messages, now you can escape it like '{'0'}'
  • When creating JRE bundles on macOS, the Java 9 tar distributions can now be used

New in install4j 7.0.2 Build 7058 (Sep 19, 2017)

  • New features:
  • "File associations" form component: Added a "Position of selection buttons" and a "Fill vertical" property
  • API changes:
  • Util#isWindows8() did not return true for Windows 8.1
  • Regression in 7.0: Util.getParentWindows() could return windows that were not suitable as dialog parents
  • Bugs fixed:
  • Regression in 7.0: Tabbed panes in forms did not work anymore
  • Regression in 7.0: Multi-language installer terminated when a different language was selected on Linux
  • Regression in 7.0: Service status detection did not work reliably on Linux and macOS
  • Regression in 6.1: Order of update descriptor entries in updates.xml was random instead of the configured order in the "Media files" step.
  • "Uninstallation success" screen: When migrating from a pre-7.0 version, all form components for this screen were lost
  • Automatic execution of background update at launcher start did not work when there was no installer application integration
  • Unix installers: Under some circumstances, Pack200-compressed JAR files could not be unpacked
  • Migration of projects with unknown screen classes threw an exception
  • Under some circumstances, using a floating license server would create an evaluation warning at runtime

New in install4j 7.0.1 Build 7043 (Jul 20, 2017)

  • API changes:
  • Added com.install4j.api.context.WizardContext#setWindowTitle to set the title of the application window even if the window is not yet shown, supports live binding of installer variables
  • Bugs fixed:
  • Regression in 7.0: Pack200 compression did not work with Java 7
  • Regression in 7.0: The "Update Alert" form component set the "sys.confirmedUpdateInstallation" variable also for unattended installations
  • Regression in 7.0: Properties that could contain variables with string arrays to build a list of variable length were not replaced correctly
  • Class files compiled for Java 9 could not be compressed with Pack200 compression
  • Pack200 compression could produce class files that were incompatible with the configured Java minimum version
  • Installer applications: The obsolete property "Add install4j watermark to installer screens" was still shown in 7.0, but had no effect
  • In the the installation.log file, property names of actions were printed in an unstable order, now they are sorted alphabetically
  • There was a fixed 5 pixel gap at the top of the screen content, so it was not possible to make the screen content fill the entire window
  • macOS: Preview dialog for forms had an 11 pixel empty border at the bottom
  • macOS: When selecting the "Windows console executable" property for the uninstaller or for installer applications, Unix console scripts were generated

New in install4j 7.0 Build 7030 (Jul 10, 2017)

  • New features:
  • Support for running with Java 9. Only the "java.desktop" module is required for installers.
  • Launchers can define a Java 9 module path in addition the the class path
  • Support for using and creating Java 9 JRE bundles
  • Support for the new multi-resolution features in Java 9 for Windows and Linux, including multi-resolution splash screen support
  • In the "Windows manifest options" of the launcher wizard, the new default "Java 9+" makes launchers DPI aware if Java 9+ is used as a minimum version
  • Background auto-update functionality
  • Flexible styling for installers
  • Added a "File associations selector" form component
  • Added an "Installation components selector" form component
  • Added a "License agreement" form component
  • Added a "PDF display" form component
  • Added a "Program group selector" form component
  • Added an "Update alert" form component
  • Added a form variable system for coordinating between form components or its enclosing screen
  • "Button" and "Hyperlink action label" form components: Script properties of actions contained in the action list now receive a formEnvironment parameter
  • All form components can now export named sets of properties to the screen configuration to make them more easily discoverable
  • Layout groups: Added "Background color", "Foreground color", "Image file" and "Border sides" properties
  • Label and text components: The "Font" property now allows setting a derived font that just changes the style or the relative size of the font
  • Separator component: Added a "Show enabled text" property
  • "HTML display": Added "Variable name" property with the same functionality as the "Variable name" property on the pre-7.0 "Display information" screen
  • "Directory chooser" form component: Added "Border title", "Standard directory" and "Only accept writable directories" properties like for the pre-7.0 "Directory selection" screen
  • "Directory chooser" and "File chooser" form components: When the bound variable changes, the selection is updated accordingly
  • "Progress display" form component: Added "Initial status message" and "Initial detail message" properties
  • Added "Horizontal anchor" and "Vertical anchor" properties to form screens that are shown if "Fill horizontally" or "Fill vertically" are not shown respectively
  • When double-clicking a form screen or a style, show the form component dialog
  • Live text binding on labels and text component for text with unresolved variables
  • Form templates instead of fixed customizable screens
  • Form functionality in standard screens
  • Native file chooser and alert dialogs on Windows and macOS
  • Single instance mode for Linux/Unix launchers
  • Suggest user-specific installation directory on Windows and macOS if the installer is run without "Request privileges" action
  • "Request privileges" action: Added a "Fall back to user specific installation directory" property in order to set a user-specific installation directory if the installation directory is not writable after the action has run
  • macOS: Added support for environment variable classpath entries
  • macOS: Show installer in front even if a Gatekeeper dialog window was shown
  • macOS: Implemented the "Execute previous uninstall" action for single bundle installers
  • macOS: The gradle plugin now also correctly handles the installation directory /Applications/install4j.app in addition to /Applications/install4j.app/Contents/Resources/app
  • Unix installers now run on macOS as well, macOS JRE bundles can be used for Unix installers
  • "Stop a service" action: Implemented rollback on Windows, macOS and on systems with systemd
  • "Install a service" action: Added a "Delayed Auto Start" property in the Windows section
  • Added a "Extract a DMG file on macOS" action
  • Added an "Extract a TAR file" action
  • The "Rollback barrier" property of actions and screens now has an "Exit code" child property that can be used to set the exit code if the installer application terminates at that point due to an activated rollback barrier
  • Improved the start mode for installer applications that are automatically started via a launcher integration: For services, unattended mode is used, on headless machines, console mode is used unless there is no associated console
  • API changes:
  • Added com.install4j.api.formcomponents.FormEnvironment#getFormComponents(Class) and #getFirstFormComponent(Class)
  • Added com.install4j.api.launcher.ApplicationLauncher#isNewArchiveInstallation() for determining if a newly extracted archive is used for the first time
  • Added com.install4i.api.Util#isWindows2016()
  • Added com.install4j.api.windows.service.WinServices, an API for querying and modifying Windows services
  • Added many classes in the com.install4j.api.styles package for programatically developing styles
  • Added com.install4j.api.beaninfo.ScriptBeaninfo#setDefaultPreActivationScript and #setDefaultPostActivationScript
  • Added com.install4j.api.beaninfo.ActionListPropertyDescriptor#setExtraScriptParameters for supplying fixed parameters to all scripts in the contained actions
  • com.install4j.api.beans.AbstractBean#executeActionListSync and #executeActionListAsync now have trailing vararg parameters for fixed script arguments
  • Added com.install4j.api.update.UpdateChecker#isUpdateScheduled and #executeScheduledUpdate to support background updaters
  • Added com.install4j.api.update.UpdateDescriptorEntry#isSingleBundle and #isDownloaded
  • Added com.install4j.api.context.WizardContext#setWindowSize to set the size of the window either before it is shown or while it is shown
  • Added com.install4j.api.beans.VisualContainerBean as common parent for screens and styles with a new #getAnchor method
  • Bugs fixed:
  • Regression in 6.1: "Installation directory chooser" form component: Property "Validate application ID" was named "Check if directory is writable" and property "Check if directory is writable" was not configurable but always selected
  • Regression in 6.1: Windows installer did not included shrunk and packed i4jruntime.jar
  • Proxy handling did not work for actions that performed HTTP downloads and whose "Action elevation type" property was set to "Elevate to maximum available privileges"
  • Properties of type "Anchor" without value restrictions did not show icons anymore (since install4j 6.0)
  • macOS: Do not use the AppleScript scripting engine in the JRE anymore, which could lead to runtime errors because of broken installations
  • "Bundled JRE" step of the media wizard: The "Start download without user confirmation" option did not work as expected if "Disable JRE bundling" was selected as a build option
  • i18n messages were shown as replaced in form component properties while the preview dialog was displayed
  • FormComponent.formDeactivated() was not called in GUI mode for any form components
  • Scrollable forms could shrinks to zero width if there was not enough space for the preferred width of the contained components
  • Calling screen change methods like context.goForward(...) from anywhere but the validation script had no effect in console and unattended modes
  • Custom bean development: Exceptions from missing properties in BeanInfos were not printed
  • "Add VM options" action: The VM parameters "-agentlib:", "-agentpath:" and "-javaagent:" could not be specifies multiple times
  • "Create program group" action: The action did not work with the default property values if the "Create program group" screen was not present
  • "Radio button group" and "Single radio button" form components: The "Selection script" was not executed if the radio button was selected with the arrow keys
  • "Request privileges" action: For debug and test installers, the action could not start the elevated helper process on macOS

New in install4j 6.1.6 Build 6457 (Jun 22, 2017)

  • New features:
  • Windows: Create file associations for the current user if no elevated privileges are available
  • API changes:
  • Added Util#loadNativeFromResources for loading a native library from the resource directory with the script classloader
  • Bugs fixed:
  • "Install files" action: The response file .install4j/response.varfile was not rolled back
  • "Uninstall previous installation" action: Custom code jars were not deleted under some circumstances
  • "Download file" action: Error handling properties were not used for the MD5 file download
  • "Execute SQL script" action: Remove semicolon line delimiter when executing statements
  • "Execute SQL script" action: Using a line break (n) as the delimiter did not work
  • "Execute SQL script" action: Multiple delimited statements per line did not work
  • "Uninstall previous installation" action: Keep the response file when uninstalling for an upgrade
  • Classpath wildcards did not work if an archive was located in a non-default file set
  • For archives where links were used in custom installer applications, the shrinking of the runtime library did not take the links into account, potentially breaking the custom installer application
  • File options: The "Keep original file modification times" did not work for JAR files packed with Pack200
  • Windows icons generated by cross-platform icon images did not include the 256x256 size required for showing large icons in the explorer
  • Windows launchers: Fixed an error detecting the Java version when GetShortPathName does not work
  • Windows uninstaller: prevent DLL loading from PATH

New in install4j 6.1.5 Build 6349 (Feb 23, 2017)

  • NEW FEATURES:
  • "Password field" component: Added property "Show icon to toggle password visibility"
  • "Create start menu entry" and "Add a desktop link" actions: Added an "Icon file" property in the "Unix" category that sets the icon for the generated desktop file
  • Updated ICEpdf to 6.2.1 for PDF actions
  • Windows services: Added a /restart command line option
  • BUGS FIXED:
  • Regression in 6.1.4: It was no longer possible to use compiler variables in the executable directory for generated launchers
  • Regression in 6.1: Overriding Screen.hasDefaultInsets() to return false did not remove all horizontal insets anymore
  • "Add a desktop action": Links to launchers on Mac OS X did not work without appending .app to the file name.
  • "Extract a ZIP file" and "Modify a ZIP file" actions threw an exception if they were used in the uninstaller
  • macOS: Launchers did not correctly check patch version of newer 1.8 JRE installations
  • macOS installers: Dynamic JRE downloads from non-TLS URLs did not work anymore
  • macOS: JRE bundle creation wizard only worked for JDKs and not for JREs
  • Unix launchers: Spaces in environment variable values were not supported for JRE search sequence
  • Windows launchers: If a JRE could not be loaded, more than one error message was shown in sequence
  • Windows services: Command line arguments were not passed correctly when starting a service from the command line with the /run option
  • Windows: Detect and reject privilege elevation when users in the obsolete power users group elevate with their own account
  • Windows: Add-on installer updated the file .install4j/i4jinst.dll
  • If a non-existing compiler variable was used for an icon customization, the icon customization dialog could not be opened again.
  • The context class loader of the startup notification thread was the bootstrap class loader instead of the system class loader
  • Unix desktop files always called the executable by prefixing with /bin/sh which does not work for non-shell script executables
  • Fixed context class loader problems for custom screens (e.g. when using Log4j)
  • Startup failure in headless mode did not produce an exit code of 1
  • With the "Keep original file modification times" option, time zone differences between the compile locale and the runtime locale were added to the modification time
  • com.install4j.api.windows.WinFileSystem#createShellLink only worked once

New in install4j 6.1.4 Build 6320 (Dec 6, 2016)

  • NEW FEATURES:
  • Added a "File name encoding" property for all ZIP file extraction actions
  • "Modify text files with regular expressions" action: XPath expressions that end in "/text()" can now also be used for matching empty nodes
  • Ctrl-Shift-L shows log file in Explorer/Finder
  • API CHANGES:
  • Added Util#getLogFile
  • Util#showPath did not select file in the Finder on Mac OS X
  • BUGS FIXED:
  • OpenJDK installations were not found
  • Files->Define Distribution Tree: After changing the type of an existing entry, the wizard was broken
  • Archive media files without any installer applications: Do not distribute custom code and improve runtime shrinking
  • "Arguments" property of the uninstaller was not used.
  • Native libraries added under Custom code & Resources could be loaded via System.loadLibrary only in the installer, but not in custom installer applications and the uninstaller
  • Dialogs for multiple files, custom icons and scripts could hang if they were if invoked in certain ways
  • Comments for pre-defined installer variables that were of a type other than String were not written to the response file
  • Single apostrophes were doubled in unformatted messages
  • PDF extension JAR was 3 times as large as necessary
  • "I cannot find a suitable JRE bundle" link in the JRE download wizard was not working
  • Portuguese localization was broken
  • Linux package media files: Check for existence of /bin/systemctl in RPM and DEB scripts
  • Linux/Unix service launchers: A fixed VM parameter -Dinstall4j.daemonTimeout=nnn was not used when stopping a service
  • Linux/Unix service launchers: systemd reported circular dependencies for service scripts generated by install4j on some Linux distributions
  • Windows: Installers with elevated privileges could not be installed on mapped network drives
  • Linux/Unix installers: When launcher directory names started with "./", the Unix file options were not set at runtime

New in install4j 6.1.3 Build 6299 (Sep 19, 2016)

  • NEW FEATURES:
  • systemd support for services on Unix/Linux
  • Implemented auto-start for services in Linux package archives (RPM/DEB). This only works with systemd and can be disabled in the launcher wizard under Executable info->Unix options.
  • "Wait for HTTP server" action: Added a "Variable name for response code" property
  • Added the possibility to place a ".packoptions" file next to a jar file, with options for the Pack200 packer. Currently only -P und --pass-file= are supported.
  • BUGS FIXED:
  • "Show URL" action: The action did not fail if the browser could not be opened
  • "Display text" screen: For unresolved variables in the "Info text" property, an exception was thrown instead of showing an error message in the displayed text
  • "Display text" screen: Installer variables in the "Info text" property were not updated when the screen was activated
  • "Installation components" screen: In console mode, it was not possible to only install mandatory components. Now "X" is used to mark mandatory components and can be given as an answer
  • Windows: Fixed DLL injection prevention for the installer on Windows 7
  • Windows: After a failed elevation restart, all files in the installer directory could be deleted
  • Security enhancement: By default, the Windows and Unix installers do not read ".vmoptions" files anymore
  • Custom code could be deleted too early during the uninstallation
  • Actions lists did not work in unattended mode
  • When action lists were executed by form components, a screen navigation history entry was created, so that the back button of the screen required multiple clicks to to go to the previous screen
  • context.getWizardContext().setNextButtonEnabled(...) and .setPreviousButtonEnabled(...) as well as changing the enabled state of other form components on the same screen did not work from action lists in form components

New in install4j 6.1 Build 6225 (Feb 19, 2016)

  • New features:
  • Major compilation performance improvements
  • RTL support with 2 new languages: Arabic and Hebrew
  • Added a "Modify ZIP file" action
  • Added a JDBC container action
  • Configurable action lists for "Button" and "Hyperlink action label" form components
  • Added a "Compiler variable" class path entry that can add an externally passed list of archives to the class path. Added the compiler variables sys.fileSeparator and sys.pathlistSeparator.
  • Added a "Compiler variable" entry type for the distribution tree that can add an externally passed list of files.
  • Windows installers: When an error occurred while extracting the installer to the temporary directory, fallback strategies are now attempted
  • Windows installers: No extraction of DLLs into the temporary directory to reduce problems with anti-virus software
  • "Uninstall previous installation" action: Log files from multiple instances of this action are now saved as .install4j/uninstallPrevious.n.log.
  • "Uninstall previous installation" action: Added "Don't uninstall services" and "Installer variables" properties
  • HTTP actions: Added a "Network failure script" property that is executed when the URL connection cannot be established
  • "HTTP request" action: Support for custom request body when the request type is set to POST or PUT. For example, it's now possible to send JSON request bodies and not just form parameters.
  • Improved system proxy detection, support for Windows proxy auto-config (PAC)
  • Java version-specific VM parameters for launchers
  • The JRE search sequence is now implemented on Mac OS X
  • The "Suppress initial progress dialog" property for installers now also works on
  • API changes:
  • com.install4j.api.update.UpdateChecker#getUpdateDescriptor now has a version with an ErrorHandlingCallback argument that allows you to take corrective actions like applying proxy settings or canceling the connection before the built-in proxy dialog is shown
  • Added com.install4j.api.Util#isDirectoryWritable to check if a directory can be written to with the current privileges
  • Added com.install4j.api.macos.MacProcesses#areInstalledLaunchersRunning()
  • Added com.install4j.api.beans.ActionList
  • Added com.install4j.api.beaninfo.ActionListPropertyDescriptor
  • Added com.install4j.api.beaninfo.ActionValidator
  • Added com.install4j.api.beaninfo.Install4jPropertyDescriptor#setActionListHiddenKeys, #setActionListShownKeys and #setHiddenInActionLists
  • Added com.install4j.api.beaninfo.ActionBeanInfo#setActionListInitializer, #setActionValidator
  • Bugs fixed:
  • Run executable or batch file" action: Wide character output was not readable in stderr/stdout redirection
  • "Uninstall previous installation" action: The log file uninstallPrevious.log was not saved to the .install4j directory on Mac OS X
  • "Register Add/Remove item" action" and "Install files" action did not work when used in a merged project
  • "Horizontal separator" form component: Background had the wrong color on tabbed panes
  • "Reboot computer" action did not work for an uninstaller with a bundled JRE on

New in install4j 6.0.4 Build 6130 (Sep 3, 2015)

  • New features:
  • Text components: Added a "Key listener" script property that is executed each time a key is pressed. The "text" parameter contains the modified text unlike for the "Key validator" expression.
  • It is now possible to use installer variables with array values in the arguments for launchers. Empty array elements are omitted.
  • API changes:
  • Added a version of com.install4j.api.windows.WinFileSystem#createShellLink with a parameter of type "ShowCommand" that allows you to open a link with maximized or minimized window state
  • Bugs fixed:
  • "Single radio button" form component: If all radio buttons in a group were disabled, an exception was thrown in console mode
  • "Single radio button" form component: In console mode, the selection script of the first radio button in the group was executed and not the one of the selected radio button
  • "Load a response file" action: Non-string variables were not registered automatically as response file variables again and the "Overwrite strategy" did not work for them
  • "Label" form component: & characters followed by a non-space character were not shown
  • "Execute SQL script" action: Non-standard statement delimiters did not work
  • Installation directory selector: Several settings were not respected in console mode
  • PDF action and screen produced a file named error.log next to the installer
  • Unix service launchers: Not all possible arguments were reported in the "usage" message
  • Unix service launchers: More robust implementation for stopping the service
  • Unix launchers: Use exec where possible to replace the shell script process with the java process
  • Unix launchers: JRE search sequence entries that start with $ or ~ were interpreted as relative files
  • Windows launchers: The current directory was appended to the end of the class path
  • Mac OS X: Running process check did not work for single bundle installer
  • Mac OS X: Installers did not pump stdin
  • Mac OS X: Console and unattended mode were not set to headless for the Oracle JRE
  • i18n: Single apostrophes were doubled in formatted messages
  • Adding imports to the static members script marked the same imports in all other scripts as unused and broke auto-import and test compilation
  • For wildcard classpath entries of type "archive", the shortest available match is now used

New in install4j 6.0.3 Build 6091 (May 22, 2015)

  • New features:
  • The "Downloadable components" step in the media wizard is now also available for archive media files
  • The "Downloadable components" step in the media wizard has a new option to statically include all downloadable installation components, which is selected by default for archive media files
  • Bugs fixed:
  • "Run executable or batch file" action: On Mac OS X, installer variables were not replaced in the "Specific environment variables" property
  • "Selection change script" property of list form components: The "selectedIndex" parameter had an unspecified type
  • "Display license agreement" screen: In console mode, "No" was the preselected answer. For multi-page agreements that could lead to an easy termination of the installer. Now no answer is preselected.
  • "Add an executable to the dock" action did not work on Mac OS X 10.10
  • The install4j API did not work with the eclipse "jar in jar" class loader
  • Default Unix directory mode was not always used if the directory mode was not overridden
  • Posix permissions for backed up files were not restored in the case of a rollback
  • Invoking the go... methods in the context object did not work reliably in screen validation scripts
  • ApplicationRegistry.getApplicationInfoById did not return all installations of the other bitness (32-bit/64-bit) on Windows
  • New compiler variables did not appear in the selection dialog until the project was saved
  • Windows: The installer could crash if a very large number of custom code files were included
  • Windows: When no JRE was found by the installer and then one was manually located, a subsequent language restart or elevation action failed
  • When console mode did not work due to a misconfigured DISPLAY environment variable, an unhelpful error message was displayed
  • When copying a launcher, the Unix options, Mac options and VM options were shared between the original and the copy until the project was reloaded
  • Fixed problem with AppleScript scripting engine throwing an NPE on some Mac OS X installations
  • The output directory for downloaded component files was reused for media files with the same base name but different suffixes, creating multiple issues
  • Append _32 or _64 to the shared JRE directory in the user home directory to avoid conflicts between 32-bit and 64-bit installers
  • In-process installer applications could add the current directory to the class path

New in install4j 6.0.2 Build 6071 (Mar 24, 2015)

  • New features:
  • Added a "properties" sample project that shows how to use the "Properties files" actions
  • "Read a properties file" action: Added the "Merge into existing variable" property
  • "Execute SQL script" action: Gzipped files are now automatically detected and uncompressed on the fly
  • Incremental test execution is now also available from the command line compiler with the command line option "--incremental"
  • If the install4j command line compiler does not use a bundled JRE, print Java version and home directory
  • Bugs fixed:
  • "Execute SQL script" action: If "Script source" is set to "File", the entire file was read into memory
  • "Download file" action: If the parent directory of the selected file did not exist, it was not created
  • "Installation location screen": The displayed required disk space did not include the safety margin added in the validation
  • "Single radio button" form component: Console mode did not work correctly if some radio buttons were invisible or disabled
  • Externally packaged files were still packaged even if the property was hidden, for example by a check box parent property
  • Wildcards in archive names did not work on the "Installer->Custom Code & Resources" step
  • RPM archives did not contains MD5 signatures
  • When a build was canceled, temporary files were not deleted
  • After running an installer application, a temporary file was not deleted
  • If import statements in static fields and methods were used, the code editor for all other scripts showed an error bar in the gutter
  • When calling JVMSelector.setPreferredJre, the installer variable sys.preferredJre was not updated
  • Windows launchers: Fixed crash for very large classpaths
  • Mac OS X: Do not write JRE bundles into the directory [app directory]/jres, but only into $HOME/.install4j6/jres
  • Mac OS X: Update installers could not be unmounted from the desktop under Mac OS X 10.10
  • Mac OS X: The "Start a service" action printed an error message in the log file even if the action was successful
  • Linux/Unix: The launcher variable launcher:sys.jvmHome was sometimes not correctly resolved
  • Linux/Unix: Print launcher name in daemon status messages instead of using "daemon". This is useful if several status commands are executed.
  • Linux/Unix: A logging message from the java.util.prefs subsystem could be printed at the beginning of the installer

New in install4j 6.0.1 Build 6049 (Jan 16, 2015)

  • New features:
  • When choosing actions, screens or form components, pressing the down or up keys in the text field now jumps to the filtered tree
  • Added example build files for gradle and ant in the "hello" sample project
  • API changes:
  • Added com.install4j.api.events.EventType#DIRECTORY_CREATED and com.install4j.api.events.InstallerDirectoryEvent to listen for directory creation events
  • Bugs fixed:
  • Regression in 6.0: Unix: The restart of the installer due to a different language selection could fail under certain circumstances
  • Regression in 6.0: com.install4j.api.update.UpdateChecker did not ask for proxy password anymore
  • Regression in 6.0: "Anchor" property of form component groups was not saved
  • Mac OS X: Using compiler variables in the executable name of installer applications produced an invalid name for the generated ICNS icon file
  • Mac OS X: "Add VM options" action did not work for folder installers when "Target file on Mac OS X" was set to "Next to application bundle"
  • Mac OS X: An initial progress window was shown if the installer was started in unattended mode
  • "HTTP request" action: Fixed NPE if content type is unknown
  • For installer applications that were launched in-process, JAR files in the custom code were not added to the class path
  • Temporary directory was not deleted if a DMG was compiled
  • Installers did not work with BusyBox on embedded Linux distributions
  • If installer variables were used in the installer VM parameters, the "Request privileges" action would fail
  • If all launcher integrations were removed during an update installation, the old launcher integrations would remain in place
  • When installing the command line launcher links, /usr/local/bin was not created if it did not already exist

New in install4j 6.0 Build 6030 (Nov 11, 2014)

  • New features:
  • Added a gradle plugin
  • Added properties file actions: "Read a properties file", "Remove keys from properties file" and "Write properties to file"
  • Added JDBC actions: "Check JDBC connection", "Execute SQL query" and "Execute SQL script"
  • Added XML modification actions: "Insert XML fragment into XML files" and "Remove nodes from XML files"
  • Added HTTP and network actions: "HTTP request", "Upload file" and "Wait for Socket"
  • The new "Test installer" tool bar button just recompiles scripts, screens and actions and updates an existing media file for a fast edit-compile-test loop.
  • Support for very large installers: 4GB on Windows, no limitations on Mac OS X and Unix and on all platforms with external media files
  • Ability to write compressed DMGs, Mac OS X archives are now written as DMG by default
  • The DMG volume name and the installer name in the DMG are now configurable in the media wizard
  • Ability to add additional top-level files into DMGs making it possible to style the Finder window
  • I18N for launcher names on Mac OS X by using installer variables in launcher names
  • Installer applications: Added properties to specify a different executable name for Mac OS X. Uninstaller name on Mac OS X is not hard-coded anymore.
  • Possibility to configure a different application bundle name for Mac OS X on the "Mac OS X options" step of the launcher wizard
  • Command line and service launchers are now generated for Mac OS X single bundle media file types as well
  • Debug log for Mac OS X launchers can be created by specifying the environment variable INSTALL4J_LOG=yes
  • ICNS icon for Mac OS X launchers is now generated from cross-platform images if no ICNS icon is specified
  • Retina icons in installers, image properties also support retina resolution
  • JRE bundle creation wizard and command line executable on Mac OS X, with the option to create unpacked JRE bundles.
  • "Check for running processes" action now works on Mac OS X as well
  • Updater templates have been adjusted to support archive media file types on Mac OS X
  • Many UI fixes for Mac OS X
  • "Reboot computer" action and com.install4j.api.context.Context#triggerReboot now work on Mac OS X as well
  • The installer variables "sys.appDataDir", "sys.localAppdataDir", "sys.docsDir", "sys.fontsDir" and "sys.programsDir" are now also implemented on Mac OS X
  • Util#showPath now mounts and opens DMG files on Mac OS X
  • Support for comments on variable definitions in response files, configurable in the IDE and via the API.
  • Installer variable configuration: Added a "Response file" tab to configure response file properties.
  • When loading a response file, all variables are now registered as response file variables. For the "Load a response file" action, a "Register variables for response file" property has been added to make it possible to revert to the previous behavior of not registering any variables as response file variables.
  • "Load a response file" action: Added an "Overwrite strategy" property that allows you to select in what cases existing variable definitions should be overridden. New is the option for not overwriting the variable definitions that were passed on the command line.
  • Response files are now sorted alphabetically
  • Added a "Modify response file" action.
  • "Create a response file" action: Added a "Variable selection mode" property to either exclude or include response file variables
  • Java editor: Add stubs for abstract methods when completing an interface or abstract class
  • Java editor: Optional auto-import during code completion
  • Added a script that contains static fields and methods for all scripts, configurable under "Installer->Custom Code & Resources"
  • Show line numbers of user input in compile errors and stack traces, lines outside user input in generated source are prefixed with "*"
  • install4j script classes are not in the default package anymore. This fixes problems with in-process installer applications and signed jar files that contain classes in the default package
  • Support DPI scaling for Windows launchers with a setting on the "Executable info->Windows manifest options step" of the launcher wizard
  • Added "/run" and "/run-redirect" parameter for windows services, "run" and "run-redirect" parameters for Unix services to start a service in command line mode from a terminal
  • Windows launchers no longer poll the file system for the internal single instance and splash screen communications
  • Splash screen API now works for the Java splash screen as well
  • Use the Java splash screen on Mac OS X and Unix instead of the fallback implementation necessary before Java 6
  • Optimized JRE search sequence for Unix launchers
  • "Download file" and "Check for update" action: Added "Connect timeout", "Read timeout", "Accept all SSL certificates" and "Request headers" properties
  • "Wait for HTTP server" action: Now supports HTTPS. The URL configuration is now a single string, eliminating the common problem of a variable port.
  • "Installation location" screen, "Installation directory chooser" form component and "Installation components" screen: Added a "Standard validation" property that allows you to switch off the default directory validation.
  • "Register Add/Remove item": Added an "Icon source" property. The installer icon is now used by default.
  • Native file choosers and alerts in the install4j IDE
  • New failure strategy for actions: "Return to parent screen"
  • Installer variable configuration: Added a check box for not writing variable values to the log file (same as Context#registerHidden)
  • Replacement for PDF action and screen based on ICEpdf
  • Added cross-platform installer variables "sys.desktopDir", "sys.docsDir" and "sys.downloadsDir"
  • Linux RPM media files: Added "operating system" and "architecture" settings
  • Required and free disk space are now displayed in GB if the size is large enough
  • Added a "Disable JRE bundling" build option, also available from the command line and the ant and gradle integrations
  • If an exception occurs while instantiating a custom screen, action or form component in the install4j IDE, show the stack trace in the configuration panel
  • Added a "Rollback on failure" property for all installer applications that makes rollback optional
  • The installer variable selector now shows on which platforms installer variables are defined if they are not defined for all platforms
  • There now is a global "Show IDs" tool bar buttons which toggles ID display in all views instead of multiple view-specific buttons
  • Scripts can now use Java 8 language features if the minimum Java version or the project is set to 1.8
  • API changes:
  • Added com.install4j.api.macos.MacProcesses
  • Added WinEnvVars#getFromRegistry to get environment variable values as set in the registry which is especially useful for retrieving the raw value for PATH
  • Added com.install4j.api.context.Context#registerResponseFileComment
  • Added com.install4j.api.beaninfo.FailureStrategy#RETURN_TO_SCREEN
  • Added com.install4j.api.beaninfo.ActionBeanInfo#setDefaultMultiExec
  • Bugs fixed:
  • Window menu was always empty on Mac OS X
  • Windows registry actions: Show an error at compile time if there is a leading backslash in the key name
  • Never access system preferences root if the installer is not running as root on Unix
  • If an out of bounds proxy port was specified on the command line, the resulting failure did not show the proxy dialog
  • In formatted i18n messages all apostrophes were removed
  • Sort order in directory chooser did not take localized names into account
  • It was not possible to use the context parameter in a RemoteCallable passed to Context#runElevated
  • The selected principal language could also be added as an additional language
  • FormComponent#checkCompleted is now only called for visible components. Invisible form components are not checked anymore when the user clicks on "Next".
  • "Run executable or batch file" action: Some special characters in the user name would cause the action to fail
  • Removed usage of a method that is removed in Java 9
  • A 64-bit installer should not suggest the previous installation directory of a 32-bit installation and vice-versa
  • Warnings were displayed during compilation if the launcher classpath contained JAR files that were compiled with target 1.8.

New in install4j 5.1.15 (Oct 24, 2014)

  • New features:
  • "Add VM options" and "Modify classpath" actions: Added a "Target file on Mac OS X" option property for selecting either the .vmoptions file inside the application bundle or the .vmoptions file next to the application bundle
  • Bugs fixed:
  • "Install files" action: After downloading installation components, the status message did not switch back to "Extracting files"

New in install4j 5.1.14 (Sep 2, 2014)

  • Regression in 5.1.13: Java 6 splash screen did not work under some circumstances
  • Regression in 5.1.13: Fixed "i4jinst.dll could not be loaded" on some Windows XP installations

New in install4j 5.1.13 (Sep 2, 2014)

  • New features:
  • install4j IDE and command line compiler can now run with Java 8
  • Bugs fixed:
  • "Text field with format mask" form component: An exception could be thrown when the form was displayed and the initial content was empty and invalid
  • File and directory chooser form components: "Initial browser directory" property was only evaluated at startup and not when the screen was initialized
  • Fixed exception during project report
  • If -c is passed to an installer in addition to -h, show the help on the terminal, even if an X-server is available
  • Unix/Linux installers: Removed warning message on the terminal when the installer name contains parentheses
  • "Write to a text file" action: Created files were not deleted during a rollback
  • Linux DEB archives: Fixed "bad quality" warning due to lintian bug on ubuntu
  • Fixed problems with non-default code page characters in class path
  • Mac OS X: Elevated "Run executable or batch file" action did not always run as root use

New in install4j 5.1.12 (Jun 9, 2014)

  • New features: "Combo box", "Drop-down list" and "List" form components: The "Selection change script" property now has a "selectedIndex" parameter in addition to the "selectedItem" parameter.
  • When creating a custom JRE bundle in install4j, signed JARs were packed as well. This caused an error at runtime.
  • Windows services: Fixed a problem where the service would not shut down
  • "Run executable or batch file" action: When using redirection, the "Show console window" property may not be selected

New in install4j 5.1.11 (Mar 20, 2014)

  • New features:
  • Java 8 JRE bundles. Older versions of install4j will not offer these and updated JRE bundles anymore.
  • "Load a response file" action: Added a "Overwrite already defined variables" property
  • Bugs fixed:
  • "Welcome" screen: "Alert for update" had no effect if the installation directory was changed in a script before the screen was shown
  • Fixed problems with non-default code page characters in installation directory
  • --disable-signing command line argument for install4jc was not recognized
  • Fixed a rare problem when invoking the uninstaller from the Windows control panel
  • The "sys.platform" compiler variable could not be used in "URL for updates.xml" text field on the "Installer->Auto-Update Options" step

New in install4j 5.1.10 (Feb 20, 2014)

  • Windows installers: Fixed problems with characters in the installation directory that are not in the default code page

New in install4j 5.1.9 (Jan 30, 2014)

  • Bugs fixed:
  • Regression in 5.1.8: Installed JREs could not be found on Windows anymore under some circumstances
  • Unix services: After terminating a service with -SIGKILL, the unix daemon did not handle the status and stop command correctly

New in install4j 5.1.8 (Jan 14, 2014)

  • Bugs fixed:
  • Critical: Unix installers could delete the working directory if a CDPATH environment variable was defined and did not include the current directory
  • Wide character support in Windows launchers. This solves problems with characters from outside the default code page in user home directory names
  • Code signing: Compilation did not abort when counter signing failed
  • If the system property "install4j.noLoggingFix" is set, do not initialize the logging subsystem of the JRE for launchers
  • "Directory chooser" and "File chooser" form components: If the file or directory name was empty, there was a space character in the text field
  • "Installation type" screen: Component folder selections were ignored in in the installer
  • "Change cancel button state" action: Fixed NPE in unattended mode
  • "Directory chooser" form component: Fixed NPE when pressing enter

New in install4j 5.1.7 (Nov 11, 2013)

  • New features:
  • Launchers: expand launcher variables and environment variables in the configured working directory of a launcher
  • Added the HTTP header "X-Client-Application: install4j" for all HTTP request made by install4j
  • "Install a service" action: Added a "Windows Custom Display Name" property for setting a different display name than the name of the launcher
  • Bugs fixed:
  • Spaces in the value of the -dir command line arguments to an installer were not trimmed
  • Add-on installers did not certain files referenced by screens, actions and form components, such as icon images
  • Custom code was not on the classpath for elevated actions in the startup node of the uninstaller
  • Custom icon configuration for launchers and installer applications: If compiler variables were used in the file name, the size was shown as "unknown"
  • If a code signing certificate file did not exist, the compiler reported that the password was wrong
  • Form components with leading labels could not be hidden completely, they always took up some space
  • The tree in the directory selector scrolled when a directory was selected
  • Version numbers with number parts larger than Integer.MAX_VALUE could not be compared by install4j
  • Long file names in JRE bundles were not supported on some platforms
  • An in-process installer application that was canceled could not be called again
  • Fixed warning when description was not specified for DEB archives
  • Fixed formatting of DEB archive description
  • Fixed wrong height of progress bar on Windows 2012
  • Could not use Context#gotoScreen in startup node
  • Fixed a crash with the no_NO_NY locale
  • Launchers with an install4j splash screen showed the splash screen again when invoking an in-process installer application
  • Instances of InstallationComponentSetup could not be modified from elevated actions
  • "Wait for HTTP port" action did not replace installer variables
  • File chooser component: File filter was not selected by default, installer variables were not replaced for file filter name and extensions
  • The console screen change handler that can be configured for the entire installer application was not called for customizable screens
  • Custom code: Associated actions and screens could not be loaded if the bean was added on the Installer->Custom code & Resources tab
  • "Show URL" action: No error was displayed if an URL could not be shown

New in install4j 5.1.6 (Jun 21, 2013)

  • New features:
  • "Directory selection" screen and "Directory chooser" form component - Added a "Standard validation" property that can be used to switch of basic validation of the directory name
  • "Welcome" screen - If the update question is visible, show a tooltip icon that displays the installation directory
  • Debian media files - Added an "Architecture" option on the "Installation options" step of the media wizard
  • API changes:
  • API - added Util#isWindows2012
  • API - FormEnvironment#makeParentGroupVisible did not work if the form component was contained in nested layouts
  • Bugs fixed:
  • "Install a service" action - Spaces after commas in the comma-separated list of Windows dependencies were not supported
  • For scripts of form components in uninstaller screens, the editor assumed a context parameter of type InstallerContext instead of UninstallerContext
  • Fixed an NPE when installer variables were used in archive launchers
  • Increased window sizes of the "Running processes" window and the native installer splash dialog on Windows
  • Debug installer did not work if external installer data files were selected
  • Fixed an exception when Pack200 was used and no user scripts where present in the installer
  • Custom code was not added to the elevated helper process of the uninstaller
  • Running services could block unattended update installer
  • Fixed problems with old Xerces implementations in java extension directories
  • Config files could be garbled when opening and saving multiple config files on certain Linux systems
  • Updater templates - In console and GUI mode, the updater template did not adjust the installation directory to that the invoking installation. This could be a problem if there were multiple installations with the same application ID.
  • Mac OS X - Fixed exception when an application bundle directory was used as an external launcher
  • Mac OS X - Messages installer splash dialog (Java 7 only) were not displayed correctly in some languages
  • Mac OS X - Installed Oracle JRE was not found for recent JRE versions
  • Linux/Unix - Return 0 when stopping a non-running service
  • Linux/Unix - The directory lib/ext in bundled JREs was not used as an extension directory
  • Linux/Unix - Logging from the java.util.prefs subsystem was printed on the command line for installers running with Java 7

New in install4j 5.1.5 (Jan 16, 2013)

  • Bugs fixed:
  • "Create a Zip file" action: The action could not be run in elevated modeFixed an IllegalStateException for downloadsMac OS X: Fixed an AccessControlException that would occur for silent installers with a bundled Java 7 JREMac OS X: Only the first file association was installed (regression in 5.1)Windows code signing: No error was shown if the Windows certificate file did not contain the complete certificate chainCode samples in help were compressed to single linesFile selectors for distribution tree showed spurious check boxes when hovering with the mouse over the tree

New in install4j 5.1.4 (Dec 18, 2012)

  • New features:
  • Code signing: Windows executables are now hashed with SHA1 instead of MD5 which prevents problems with some anti-virus software
  • "Set the owner of files and directories": It is now possible to change only the group ownership by prefixing the "Owner" property with a colon
  • "Modify text files", "Modify text files with regular expressions" and "Replace text in XML files" action: The "Replacement" property now has a multi-line editor
  • API changes:
  • Added com.install4j.api.context.Context#getDefaultInstallationDirectory
  • Bugs fixed:
  • "Installation components" screen: The first click into checkbox trees had no effect if Java 7 was used
  • "Installation location" screen and "Installation directory selector" form component: Aligned required and available space on the right to facilitate comparison
  • Fixed a memory leak in the installer
  • vmParameter elements in the install4j ant task did not work
  • Moving backwards through screen loops was broken
  • Fixed Windows 8 certification problems
  • Fixed an NPE that could occur when file association were uninstalled
  • Fixed a problem when upgrading install4j that resulted in a NoSuchMethodError when compiling a project
  • Fixed a java.lang.UnsatisfiedLinkError on uninstallation with a bundled Java 7 when recursive file actions were used after the "uninstall files" action
  • Calls into com.install4j.api.ApplicationRegistry could fail if invoked from outside the installer
  • JRE bundle creation: If the packing operation failed, no detailed error message was shown
  • Fixed NPE in unattended mode that could occur when when form screens were contained in screen loops
  • Windows: Under some circumstances, installed applications were only registered in the the install4j application registry on a per-user basis and not system wide
  • Windows: Do not add the VM parameter -Dsun.locale.formatasdefault=true as default

New in install4j 5.1.3 (Sep 21, 2012)

  • Generated executables now pass Windows 8 certification
  • "Run executable or batch file" action: Added a "Wait for output streams" property below the "Wait for termination" property which can be deselected so that the action does not wait for child processes to terminate
  • Support for non-ASCII path names in tar files

New in install4j 5.1.2 (Jul 28, 2012)

  • New features:
  • Project compilation now produces a file "output.txt" that list all generated media files, their IDs, display names and platform types
  • "File chooser" and "Directory chooser" form components: Added a "Initial browser directory" property
  • API changes:
  • Install4JPropertyDescriptor.CONTEXT_NO_INSTALLER_VARIABLES now also works for properties of type java.io.File
  • In addition to .utf8 files, .properties files are now supported as extension localization files
  • Bugs fixed:
  • context.getInstallationComponents() could not be called from an elevated action (regression in 5.1)
  • Moving back and forth through through screen groups could cause the installer to fail (regression in 5.1)
  • "Install files" action: Fixed exception when "delay if necessary" was used for elevated install files action (regression in 5.1)
  • "Hyperlink action label" action: variables in the hyperlink text were not replaced in console mode
  • "Hyperlink action label" form component: Show label text in console mode if defined
  • "Install files" action: If "Show file names" is deselected, the unpacking progress for packed JAR files was still shown which did not make any sense to the user
  • "Leading label" form component: If only an icon and no text was configured, the icon was not shown
  • "Start a service" action on Mac OS X: Removed printing of an uncritical exception
  • "Single radio button" form component: In console mode, the installer could hang under some circumstances
  • Mac OS X code signing: Automatically add Apple certificates if .p12 file contains no chain. The "certificate export" functionality is no longer necessary and has been removed.
  • Mac OS X code signing: Fail during build if an unsuitable certificate is provided
  • Mac OS X: com.install4j.api.JVMSelector did not return the real home directory of the JRE bundle
  • Mac OS X: Mark all launchers as high resolution capable for retina displays
  • Linux/Unix: Fixed problem where file modes could not be changed during update installations
  • Linux/Unix: com.install4j.api.unix.UnixFileSystem.setMode did not work under some circumstances
  • Updaters would throw an NPE in the "Finish" step if the downloaded media file was an archive
  • Custom installer applications: external files (such as icons) in were not loaded
  • Custom installer applications: An empty working directory lead to an error during build
  • Progress operations would not work if a screen with a progress interface was executed through a link
  • Compiler variables could not be used in custom localization files
  • Linking to screen groups in the same installer application was broken
  • In console mode, when cancelling an installer, the subsequent prompt on the terminal could be indented
  • Using links in custom installer applications that were contributed from merged projects did not work
  • The ID of the uninstaller launcher at runtime was not "uninstaller", but a generated and non-configurable ID
  • Do not add custom code jar files to the class path more than once in the installer
  • Cached proxy information was never used if the auto-detected browser config was wrong
  • Unbalanced quotes for arguments were not handled correctly by launchers

New in install4j 5.1.1 Build 5452 (Jul 8, 2012)

  • New features:
  • Mac OS X launchers: On the Executable info->Mac OS X options step of the launcher wizard, you can now specify a custom bundle identifier
  • "Read value from XML file" action: Added a "Variable name for node" property to save the org.w3c.dom.Node value of the match
  • Support for compiler variables in pre-defined installer variables of type string and string array
  • Bugs fixed:
  • Several command line options were broken (regression in 5.1)
  • Javadoc formatting of the API documentation was broken (regression in 5.1)
  • Generated installers did not work on OS X 10.5 (regression in 5.1)
  • Windows code signing corrupted various 64-bit executables
  • Run executable action could not be elevated
  • When setting a wizard index for a particular screen, it could not be changed again when showing the screen for a second time
  • The installer variable "sys.installationDir" was not written to the response file if the "Installation location" screen was not present in the project

New in install4j 5.1 Build 5435 (Jun 18, 2012)

  • New features:
  • New privileges architecture where the installer GUI always runs in unelevated mode and actions are elevated on demand, depending on the new "Action elevation type" property of installer applications, screens, groups and actions
  • "Run executable or batch file" action: "Timeout" property that can be set if "Wait for termination" is selected. If the timeout is exceeded, the process is killed.
  • "Run executable or batch file" action: Added a "Use rollback executable" property to optionally specify an executable that is invoked in the case of a rollback
  • "Run executable or batch file" action: In addition to file redirection, the action now supports stderr and stdout redirection to installer variables or to the log file and stdin redirection from a string
  • Added a "Require installer privileges" action that is now used in the "Startup" node of uninstallers for new projects by default
  • "Add a desktop link" and "Create start menu entry" actions: Added a "Run as administrator" property
  • "Directory chooser" form component and "Directory selection" screen: Added an "Allow empty input" property to disable validation if no directory is selected
  • Added a "Leading label" form component with no central component
  • "Label" form component: Added an "Add empty leading label" property
  • Define distribution tree: In the wizard for adding and editing single files, the file names can now be edited
  • Launcher wizard: Added the "Executable Info->Mac OS X options" step where an additional fragment for the Info.plist file can be entered
  • Loop index for screen and action groups: Loop index variable in loop expression, configurable start index and increment, optional loop index installer variable
  • Log execution times of all actions
  • Added "Count nodes in XML file" action
  • Much faster LZMA compression during build
  • Faster installation of large files
  • Better implementation of Util.showPath on Linux that uses the default file manager if possible
  • API changes:
  • Added com.install4j.api.beaninfo.ActionBeanInfo#setUninstallerStartupAction
  • Added InstallerContext#installDirectory(File, UninstallMode) to create empty directories that will be removed by the uninstaller.
  • Added com.install4j.api.events.InstallerActionEvent
  • Bugs fixed:
  • Multiple directory choosers on the same form screen did not work correctly
  • "Display text" screen: Installer variables were not replaced in title, subtitle and info text properties
  • Mac OS X: Generated launchers did not work in installation directories with parentheses
  • Customizable forms: Pressing CTRL-End would move the form contents for scrollable forms that were not large enough to show a scroll bar
  • Project file contents were not stable when saving under some circumstances
  • Windows: When removing a service dependency, the change was not propagated to the installation during an update
  • "Run executable or batch file" action: If "Wait for termination" is selected, the redirection streams might not have been fully read after the process had finished
  • Windows launchers: Remove temporary files if no JRE can be found
  • Screens: "Background image" property for wizard index did not have a variable selector
  • Compiler variables in external launchers were not replaced during compile-time
  • New projects were opened in the background
  • Fixed exception when uninstalling file associations
  • Windows launchers: Temporary directory creation is now more robust
  • Fixed wrong behavior when going back in the screen history where screen loops were present
  • "Delete file or directory" action: The action could be unsuccessful under some circumstances
  • Fixed XML-related AbstractMethodError on Java 6

New in install4j 5.0.11 (Jun 18, 2012)

  • API changes:
  • Fixed NPE when an error message was show in com.install4j.launcher.ApplicationLauncher
  • Return null for special folder API when used on non-windows platforms instead of throwing an exception
  • Bugs fixed:
  • Fixed locale regressions in 5.0.10
  • Distribution file choosers were not shown if the install4j IDE was run with Java 7
  • "File version" property for uninstaller and and custom installer applications had no effect, the product version was always used for the Windows version resource
  • Unix installers were broken on some systems
  • Windows: If the user was changed during UAC, the program groups were not created for the original user
  • Installation directory chooser form component: Disabling the form component did not disable the chooser button

New in install4j 5.0.10 (Jun 18, 2012)

  • New features:
  • Added progress feedback for unpacking JAR files that were packed with Pack200 as a percentage number after the file name in the status line
  • Windows: The auto-detected language is now the "Display language" setting defined in the "Region and Language" Windows control panel, independently of the used JRE
  • Support Java 7 for the install4j IDE and the command line compiler (launchers and installers have already supported Java 7 before)
  • API changes:
  • Added ProgressInterface#setSecondaryPercentCompleted to add progress feedback for secondary tasks in the status line
  • UpdateChecker.getUpdateDescriptor threw an NPE instead of an IOException if the connection could not be made to the server
  • Bugs fixed:
  • "Directory chooser" and "File chooser" form components: The validation script was not executed when the user clicked on the Next button, so manual changes were not validated
  • "Installation type" screen: If custom IDs were defined for the installation types, the installer variable "sys.installationTypeId" was still set to the numeric ID of the selected installation type in console mode
  • "Write text to a file" action: Line separators of the runtime platform were not always used in the written file
  • "Installation directory chooser" component: A duplicate existing directory warning was displayed in console mode at the end of the form
  • "Installation directory chooser" form component: Validation was run even if the component was not visible or not enabled
  • "Download and install component" action: The action could only be added once to a project
  • All "Spinner" and "Text field with date format" form components: Value initialization was broken for response files
  • "Add Windows file rights" and "Add access rights for a key in the Windows registry" actions: Installer variables were not replaced in the "SID or account name" property
  • "Display progress" screen: Installer variables in the "Initial status message" property were evaluated at startup and not when the screen was activated
  • "Hyperlink URL label" form component: Installer variables in the displayed URL were nor replaced in console mode
  • "Add a desktop link" action: The specified icon had no effect for links to a .url file
  • ant task: If the "buildids" parameter was specified with an empty value, no media files were built
  • Creating a file association could throw an exception
  • A hidden installation component that was initially selected was not installed in console mode
  • Surrounding white space in answers to multiple choice questions in console mode was not ignored
  • Generated service launchers were not compatible under Red Hat Linux
  • Mac OS X: Packed custom code jars that are not in the distribution tree were not used for the uninstaller
  • Updater applications did not work if they were launched in the same process
  • Launchers on Mac OS X and Linux: Native library path entries containing environment variables to an absolute path did not work
  • The update descriptor file could contain duplicate elements for the principal language if it was also added as an additional language
  • Mac OS X: A preference store bug in Mac OS X 10.7 broke the detection of previous installations
  • Some operations in SWT applications could be slow due an application manifest entry
  • Automatic launcher integration did not work in MAC OS X single bundle media files
  • Single instance mode for launchers was broken if there were spaces in the name of the executable
  • Updaters that were started by launcher integration in the same process at startup did not switch to the native look and feel
  • Language auto-detection did not work in unattended mode
  • Fixed a Debian package warning
  • Linux/Unix installers: If the environment variable GREP_OPTIONS was defined, the installer could break
  • Closing the language selection dialog with the window close button could leave the installer hanging
  • "Bundled JRE" step in the media wizard: A change in the 32-bit/64-bit selection in the previous step was not considered for the choice of bundled JREs

New in install4j 5.0.9 (Jun 18, 2012)

  • New features:
  • Installer applications: Added a "Progress interface creation script" property to customize the display of progress information for unattended installations
  • Installer: Added a "Replacement script for language code" property. This can be used to change the auto-detected language or to implement custom auto-detection of the language that should be used.
  • Installer applications: Added a "Help customizer" for modifying the displayed help on the available command line arguments
  • "Set a variable" action: Added a "Register for response file" property
  • Added a "Hide help button" option on the "Description" tab of the installation component property sheet
  • Added a launcher variable "sys.tempDir"
  • Added a compiler variable "sys.time"
  • API changes:
  • Added com.install4j.api.context.UnattendedProgressInterface and com.install4j.api.context.DefaultUnattendedProgressInterface for the "Progress interface creation script" property of installer applications
  • Added Context#getVersion() to get the version of the installed application
  • Added Context#getMediaFileId() to get the media file ID of the installer
  • Added Context#getExtraCommandLineArguments() to get command line arguments that were not processed by the installer
  • Added FormEnvironment#reinitializeFormComponents() to re-run the initialization of all form components
  • Variables#getInstallerVariable(String) and Variables.getInstallerVariables() do not throw IOException anymore. If the automatically created response file cannot be read (as is the case for archives), system variables are still available from these methods
  • Calling UpdateChecker.getUpdateDescriptor with ApplicationDisplayMode.GUI would throw an NPE if the proxy dialog had to be displayed
  • Script properties could not have array return types
  • Bugs fixed:
  • Prevent PCA mitigation ("This program might not have installed correctly”) for Windows 7
  • Fixed exception when running an installer with certain layouts with Java 1.5
  • "Help text" tool tip labels in customizable forms were focusable
  • Text form components on tabbed panes: If validation failed with an error message, the parent tab of the text form component was not shown
  • Encoding in displayed HTML files was not detected correctly
  • "HTML display" form component and screens showing HTML text: For direct entry, installer variables were not replaced in the HTML
  • "Installation components" screen: Fixed flickering when toggling the help buttons in the tree
  • "Installation components" screen: Only show tree lines if the the component tree has component folders
  • "Create program group" action: On Unix, the default value of the "Directory for links" property did not use the user input from the "Create program group" screen
  • For a wizard index that was defined in the IDE, installer variables were not replaced in the keys and step names
  • Fixed NPE when writing a response file with a string array variable value containing a null value in one of the array elements
  • Util.showOptionDialog did not show default value in console mode and numeric keys were displayed. This was inconsistent with questions from form components. Keys are now taken from the first letters of the supplied options and can be set explicitly by prefixing the letters with '&'.
  • Links to screens or actions in merged projects could fail at runtime under some circumstances
  • For certain network errors, downloads would not time out and hang the installer
  • If no initial text was set for the status and version lines in the splash screen configuration of a launcher, subsequent updates via the API has no effect on Unix and Mac OS X
  • Generated .vmoptions files were not preserved by the "Uninstall previous installation" action
  • Installer variables could no longer be used when overriding system messages (regression in 5.0.8)
  • System installer variables were not available for archives
  • PDF screen and actions did not work anymore
  • Using installer variables with numeric values as arguments to i18n keys in expressions like ${i18n:myMessage(${installer:myNumericValue})} did not work
  • For launchers in archives, installer variables in system properties and arguments were not replaced with "null" if no response file was available. This was inconsistent with the behavior of launchers in regular installers
  • The error output of install4j command line tools was redirected to a file and not displayed on the terminal (regression in 5.0.8)
  • If an error occurred during script compilations, lots of warnings regarding serialVersionUIDs were printed as well (regression in 5.0.8).
  • Media wizard: In the "Exclude components" screen, if a folder was excluded, the component tree was not displayed the next time that the project was loaded
  • Media wizard: When pack200 compression was activated, file exclusions did not work for JAR files that were also used in custom code
  • The "createbundle" command line tool did not work in headless mode
  • File exclusions for directory entries in the distribution tree were not saved when "Add to subdirectory" was selected for the entry
  • Windows registry: Strings stored without null termination were not read correctly
  • Windows service shutdown did not work correctly when user code redirected System.in
  • Windows user creation failed under certain circumstances
  • Mac OS X: An unnecessary test file remained when the installer process was elevated
  • Mac OS X: It was not possible to use very long installer names
  • Mac OS X: No text field was shown for certain file chooser dialogs in the install4j IDE
  • Unix: Installers and launchers did not work if the $HOME directory was not writable
  • Unix: Several actions would fail to operate on files whose names contained a dollar sign

New in install4j 5.0.8 Build 5311 (Apr 14, 2011)

  • New features:
  • "Install files" action and "Download and install component" actions: In console mode, file names are now shown on the same line to avoid a long scrolling list of file names
  • In console mode, HTML tags are now removed in all text output. Multi-line messages use an HTML to plain text conversion that conserves line breaks, lists and similar layout tags.
  • "Create program group" action: Windows program group entries now have an additional "Run as administrator" option
  • API changes:
  • ProgressInterface#setDetailMessage: In console mode, repeated invocation of this method overwrites the current line. This prevents a long scrolling list of temporary information.
  • Added Screen#hasDefaultButtons() for hiding the navigation bar at the bottom of the screen
  • Context#isUpdateInstallation was not updated when the installation directory was changed by the "Installation location" screen in console mode
  • Added WinFileSystem#createStartMenuEntry method with an additional runAsAdministrator parameter
  • Bugs fixed:
  • Regression in 5.0.7: File selection for installation components was not saved
  • Regression in 5.0.7: Using installer variables in custom localization files did not work as expected anymore, all variables were replaced at startup instead of at the time of usage
  • In console mode, "Downloading ..." was displayed even if no component data files were actually downloaded
  • "Multi-line HTML label" form component: In console mode, blank lines were printed before and after the text
  • "Fix line feeds" action: The file property was lost when reading a project saved by install4j 4.x
  • "Uninstall previous installation" action: An already installed JRE bundle was deleted, which could cause problems
  • It was not possible to insert i18n messages which contained installer or compiler variables by using the variable selector
  • Windows launchers: Error messages about invalid environment variables in the search sequence contained an unresolved variable
  • "Fix line feeds" action: In console mode, exceptions were printed if a file or directory did not exist
  • "Directory selector" and "File selector" components: In console mode, if the bound variable was defined before the screen was shown, the selector did not show the defined value as the default value
  • Updater templates did not force unattended update installers to use the current installation directory which could be a problem if multiple installations of the same product existed.

New in install4j 5.0.7 Build 5284 (Mar 22, 2011)

  • New features:
  • Windows installer: Language auto-detection is now also implemented in the native initial progress dialog. If the user language is configured for the installer, it will be used with a fallback to the principal language.
  • Windows launchers: Make executable name available for JVM discovery, for example in VisualVM
  • Support for .properties files in the editor for custom localization files (ISO-8859-1 encoding and java.util.Properties-style escaping)
  • Improved version comparison for auto-updates. Sequences like 2.0 beta 2 -> 2.0 rc 1 -> 2.0 are now compared correctly
  • "Uninstall previous" action: The log file of the uninstaller is now written to .install4j/uninstallPrevious.log
  • API changes:
  • Added com.install4j.api.screens.Screen#hasDefaultInsets which makes it possible to develop custom screens that take up all available space
  • com.install4j.api.context.Context#runElevated(...) and #runUnelevated(...) were broken
  • UpdateChecker#getUpdateDescriptor did not ask for proxy information if a connection was refused
  • AbstractBean#replaceVariables methods did not replace installer and compiler variables when called during the initialization phase of a bean
  • InstallerContext.isUpdateInstallation() returned true for any installation if it was called for the first time after the "Install Files" action had already run
  • Bugs fixed:
  • "Vertical spacer" form component: No space was added in console mode
  • "Welcome" screen: Form components with a horizontal size that exceeded the available space broke the layout
  • "Windows user selector" form component: Any SIDs already contained in the bound variable were not displayed in the user selector and discarded on "Next". This prevented the pre-definition of SIDs with response files.
  • "Run executable or batch file action": Redirection files were not closed immediately after a successful execution
  • "Welcome" screen: Form components were not displayed in console mode
  • "Finish" screen: No message was printed in console mode
  • "Hyperlink label" form component: Nothing was printed in console mode
  • "Create program group" action: The "Display icon" property of URL links did not have any effect in modern Windows versions
  • Windows: Fixed UnsatisfiedLinkError during some installations
  • Windows launchers: In the fixed VM parameters for launchers and installers, a "\n" was replaced with a newline character
  • Windows: When running processes were detected in console mode, an exception was thrown
  • Windows: When starting an installer with the -h argument, a corruption warning was shown for the next start
  • Windows services: Do not report an error for service uninstallation when the service is already marked for deletion
  • Windows services: Do not report an error when stopping a non-active service
  • Windows services: The /status command line argument did not work under some circumstances
  • Some classes from the install4j API could not be used in scripts, because the compiler did not find them
  • Hosts name exceptions in browser proxy configuration were not respected for downloads in install4j
  • Proxy information for downloads was not always applied immediately when changed in the browser
  • Proxy information in the browser was used even if the proxy was disabled in the browser
  • Proxy dialog was not shown in unattended mode with progress dialog
  • The variable "sys.programGroupDir" was not available if the "Create program group" screen was not displayed
  • Excluding file sets in the media wizard from merged projects caused an NPE in installer
  • vmoptions files: "-include-options" command did not work correctly with relative files
  • If the "Do not delete temporary directory" build option was selected, generated script sources were still deleted
  • At runtime, missing keys in custom localization files did not fall back to the principal language
  • Prevent multiple error dialogs if auto-saving does not succeed
  • Quick search in list of bound installer variables did not work
  • HTML tags were shown for some messages in console mode
  • Some file modification actions printed exceptions in console mode
  • Hiding an installation component had no effect in console mode
  • The language selection in console mode was not presented in the user language, but always in the principal language
  • Non-error messages were printed to stderr instead of stdout in unattended mode

New in install4j 5.0.6 Build 5219 (Dec 21, 2010)

  • New features:
  • "Install a service" action: Added a "Windows arguments" property for arguments that are passed to the main class
  • "Write text to a file" action: Added a "Log text" property for preventing the replaced text to be written to the installation.log file
  • "Run executable or batch file" action: In the redirection properties, /dev/stdout, /dev/stderr and /dev/stdin connect to the default streams of the installer application
  • "Check for running processes on Windows" action: For relative files in the "Additional executables" property, only the names of the executables are used for comparison. This enables checking for executables with an unknown location.
  • Installer applications: Added a "Disable console mode on Windows" property
  • Use a better file choose dialog in the install4j IDE on Mac OS X (from the Quaqua Look and Feel)
  • API changes:
  • Added Context#unregisterResponseFileVariable(String) to reverse the effect of Context#registerResponseFileVariable(String)
  • Added WinUser#getUserName(String sid) to get the unqualified user name
  • Added Win32UserInfo#getUserProfileDirectory(String sid, String password)
  • Added WinFileSystem#getDriveType() to check for removable drives
  • Bugs fixed:
  • "Run executable or batch file" action: On Windows, use less quotes for arguments to avoid issues with programs that do not expect quoted arguments
  • "Run executable or batch file" action: If the .exe extension was missing, the executable was not launched on Windows under certain circumstances
  • "Run executable or batch file" action: In the installation log file, the values of the redirection files properties were reported without variable replacements
  • "Run executable or batch file" action: If a redirection file was set to an installer variable, and that variable contained the empty string, the execution failed
  • "Run executable or batch file" action: On Windows, AutoRun commands defined in the registry were not ignored
  • "Request privileges" action: On Windows, the action did not work with normal users when UAC was disabled
  • "Install Files" action: Files were extracted before the user was asked whether an existing file should be overwritten. For large files, this would waste time for the user.
  • "Uninstall Files" action: The file classes.jsa of a bundled JRE was not deleted for server VMs
  • "Uninstall files" action: In certain cases, shared files were not uninstalled as expected
  • "Read a key from the Java preference store" action: The property "Preference root" could not be changed in the install4j IDE
  • "Installation components" screen: If multiple hidden installation components were on the same level in the component tree, only the first one was actually hidden.
  • "Delete files and directories" action: The action resulted in an error if a file did not exist, which conflicts with the behavior in install4j 4.x. Now the action returns with success even if the file that is to be deleted could not be found.
  • "Set a variable" action: Exceptions were not reported in the installation.log file
  • Add-on installers installed their own install4j runtime, which could lead to broken uninstallers if runtime library shrinking was enabled
  • Regression in 5.0.5: project reports were not opened immediately in browser
  • It was not possible to exclude the uninstaller in the "Customize project defaults->Exclude installer elements" step of the media wizard
  • Fixed a FileNotFoundException when JAR files were used in the custom code and multiple media files were built
  • Windows: The silent installer did not automatically download a dynamic JRE bundle when the direct downloading option was selected on the "Bundled JRE" step of the media wizard
  • Windows: When msvcrt71.dll was not present in windows\system32, a bundled jre was used, and a launcher was started after installation, the installer always asked for a reboot
  • The "Global exclude" pattern under Files->File Options was not saved to the project file
  • When changing between different project windows, the file chooser could show the wrong distribution tree under some circumstances
  • Fixed a rare string corruption problems with installer settings that were saved to the Windows registry
  • Public JREs on HP-UX were not found
  • Using links in the same installer application led to ClassCastExceptions at runtime under certain circumstances
  • The "preserve" option of the command line compiler was not available on the ant task
  • If a download URL was specified on the "Bundled JRE" step of the media wizard, it was used even if the "Don't bundle" a JRE option was selected
  • The -wait command line option did not work with unattended mode on Windows. Unattended updaters were mainly affected by this bug.
  • Form components: The tool tip help label from the "Help text" property was not shown under some circumstances
  • Unix launchers: Using installer variables for redirection files broke the launcher script
  • Choosing the "According to update schedule registry" mode on the "Launcher integration" tab of installer applications did not work
  • Windows: Services were uninstalled when the service path was changed during an update
  • A rollback could leave the file .install4j\response.varfile in the installation directory
  • Partially downloaded files were not deleted
  • Compiler variables could not be overridden for merged projects from the command line or the ant task
  • AIX: Exceptions were printed when an installer was executed
  • Do not write the default chkconfig info to unix daemon scripts if the custom script for the launcher already contains a chkconfig header

New in install4j 5.0.5 Build 5151 (Oct 23, 2010)

  • New features:
  • Installer applications: Added new execution mode "Unattended mode with progress dialog" and child property "Title for progress dialog". This is the same functionality that is available from the command line with the -splash [title] arguments.
  • System installer variables such as "sys.userHome" are now available for launchers, e.g. in redirection file names and the in com.install4j.api.launcher.Variables class
  • The build options in the Build step of the IDE are now persistent
  • Bugs fixed:
  • Under some circumstances, the proxy dialog was not displayed and an exception was thrown instead
  • Installer variables could not be used for redirection files of generated launchers
  • Installer variables were not resolved when executing a launcher from the installer, because the response file was not yet written
  • Update detection did not work for Mac OS X single bundle installers
  • Custom code entries with spaces in the path could not be found by script compiler
  • If -Dinstall4j.keepLog=true was passed to the installer, the temporary log file was not preserved if the installation was successful
  • Windows launchers: Service arguments embedded in the registered binary path did not work correctly
  • unpack200 failed on some Windows machines
  • Fixed NPE with launcher integration
  • Generated vmoptions files were not included when launcher was selected directly in the component selection
  • Custom code jars were not copied to the final destination when selected directly in the component selection
  • -Dinstall4j.debug=true was not set in debug scripts, so stack traces were not printed to stderr
  • installer variables: In properties with array values (like the arguments of a "Run executable" action), empty array values resulting from empty installer variables were not pruned from the resulting array
  • Unix launchers: Installer variables in fixed VM parameters and arguments were always replaced with empty strings
  • If there was a fatal error while writing the update descriptor, the build process in the install4j IDE would hang
  • Unix installers: Since JRE 1.6.0_17, the workaround for hiding annoying messages from the java.util.prefs subsystem did not work anymore