install4j Portable Changelog

What's new in install4j Portable 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 Portable 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 Portable 10.0.5 (Feb 20, 2023)

  • New features:
  • "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.
  • 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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
  • macOS: The configured native library directories had no effect for command line launchers

New in install4j Portable 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 Portable 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 Portable 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 Portable 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
  • Linux/Unix installers: The configured Unix directory mode was not used for the installation directory
  • macOS: Fixed integer overflow for large DMG archives
  • macOS: If the "Run executable action" was passed a DMG as the executable, it did not execute the contained installer on macOS 11+ under some circumstances. This affected the execution of the background updater.
  • macOS: Drop-down lists in property tables would sometimes be placed in the top left corner of the screen

New in install4j Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 8.0.1 (Jul 19, 2019)

  • 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 Portable 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
  • 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
  • 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.
  • "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.
  • 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.
  • 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}
  • "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
  • Added a "Text file editor" form component
  • Added a "Log file viewer" form component
  • 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
  • Executing launchers in a macOS folder archive with a packed JRE directly from the DMG failed silently
  • 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 Portable 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 Portable 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

New in install4j Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 7.0.3 Build 7272 (Oct 6, 2017)

  • 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 Portable 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 Portable 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