Ingo Kegel
banner
ingokegel.bsky.social
Ingo Kegel
@ingokegel.bsky.social
Building JProfiler & install4j at ej-technologies. Java expert since the early days. Deep dives into profiling, performance, and build tools.
6/ Evaluate install4j 12 for 90 days at www.ej-technologies.com/install4j/d...

We're here for you if you have any questions while trying it out! 🙌
November 14, 2025 at 1:56 PM
5/ ✔️The action now supports starting the launcher immediately.
November 14, 2025 at 1:56 PM
4/ ✔️ The action now supports setting arguments for the executable.
November 14, 2025 at 1:56 PM
3/ ✔️On macOS, the action now uses LaunchAgents instead of LoginItems.

This provides a better user experience without questions due to automation security restrictions.
November 14, 2025 at 1:56 PM
2/ ✔️ The action now also works on Linux, using systemd user services.
November 14, 2025 at 1:56 PM
10/ Evaluate install4j 12 for 90 days at www.ej-technologies.com/install4j/d...

We're here for you if you have any questions while trying it out! 🙌
November 13, 2025 at 2:03 PM
9/ In addition, MacServiceManagement contains methods for checking the status and unregistering launch agents and launch daemons, opening System Settings in the "Login Items" section, and registering the main bundle itself as a login item.
November 13, 2025 at 2:03 PM
8/ Registrations are simple method calls that use the identifiers that you configured for the launch daemon or the launch agent:

MacServiceManagement.registerLaunchAgent("com.mycorp.sync.plist");
MacServiceManagement.registerLaunchDaemon("com.mycorp.protocolserver.plist");
November 13, 2025 at 2:03 PM
7/ install4j will generate the required files in Contents/Library/LaunchAgents and Contents/Library/LaunchDaemons, but they will not automatically be registered. You need to add logic to your app to alert the user and then register them. This will trigger an OS confirmation.
November 13, 2025 at 2:03 PM
6/ Both launch agents and daemons need an identifier. Launch agents additionally support arguments. Because they can show a UI by default, you can choose to hide them from the Dock when they only perform background operations.
November 13, 2025 at 2:03 PM
5/ In install4j, a "launch agent" corresponds to a "startup executable" and a "launch daemon" corresponds to a "service". We've named them with Apple's terminology because you need to read the Apple documentation to understand what is happening in the background to use this feature.
November 13, 2025 at 2:03 PM
4/ Single-bundle archives now have an additional "Agents and Daemons" step in the media wizard, where you can statically define "launch agents" and "launch daemons".
November 13, 2025 at 2:03 PM
3/ The Apple Service Management framework allows you to manage launch agents and launch daemons in such a way that they are tied to the lifecycle of the single-bundle archive. However, this requires some extra work.
November 13, 2025 at 2:03 PM
2/ "Install a service" and "Add a startup executable" actions do work for single bundle archives. Unfortunately, when the user deletes the app bundle, their registrations will not be deleted along with the app bundle and that causes problems.
November 13, 2025 at 2:03 PM
7/ Evaluate install4j 12 for 90 days at www.ej-technologies.com/install4j/d...

We're here for you if you have any questions while trying it out! 🙌
November 12, 2025 at 1:58 PM
6/ In addition, the PKCS #11 session is now kept alive to speed up code signing.

Finally, the environment variable DYLD_LIBRARY_PATH can now be set on macOS for the install4j command line compiler to load PKCS #11 libraries.
November 12, 2025 at 1:58 PM
5/ By default, install4j tries to use the certificate with the maximum validity if you do not select a specific certificate from the keystore. With the new mode, only the private key is loaded from the keystore and install4j tries to find a private key that matches the certificate.
November 12, 2025 at 1:58 PM
4/ In incomplete or non-standard setups, code signing can fail when the compiler cannot find the certificate or the full certificate chain. To handle these cases, install4j now offers an optional separate PKCS #11 certificate file entry, both for Windows and macOS code signing.
November 12, 2025 at 1:58 PM
3/ When using PKCS #11, usually both certificate and private key are contained in the keystore. In install4j 12, matching of private keys and certificates has been improved considerably, leading to fewer code signing errors.
November 12, 2025 at 1:58 PM
2/ In the Windows code signing step, it is now possible to specify patterns for additional binaries that should be signed by install4j. Previously, only binaries generated by install4j would be signed.
November 12, 2025 at 1:58 PM
10/ Evaluate install4j 12 for 90 days at www.ej-technologies.com/install4j/d...

We're here for you if you have any questions while trying it out! 🙌
November 11, 2025 at 2:01 PM
9/ With these new building blocks you can implement different and more complex scenarios for determining the installation directory. 💪
November 11, 2025 at 2:01 PM