public class ApplicationLauncher
extends java.lang.Object
In order to use this class, please include resource/i4jruntime.jar
from your
install4j installation into your class path. You do not need to distribute this file
along with your application, install4j will do this automatically for you.
Modifier and Type | Class and Description |
---|---|
static interface |
ApplicationLauncher.Callback
You can implement this interface to receive notifications when the installer application exits or needs to
shut down your application.
|
static class |
ApplicationLauncher.WindowMode
Window mode for starting the application in process.
|
Constructor and Description |
---|
ApplicationLauncher() |
Modifier and Type | Method and Description |
---|---|
static boolean |
isNewArchiveInstallation()
Determine if this is a new archive installation.
|
static void |
launchApplication(java.lang.String applicationId,
java.lang.String[] arguments,
boolean blocking,
ApplicationLauncher.Callback callback)
Launch an installer application that you have defined in the install4j IDE.
|
static void |
launchApplicationInProcess(java.lang.String applicationId,
java.lang.String[] arguments,
ApplicationLauncher.Callback callback,
ApplicationLauncher.WindowMode windowMode,
java.awt.Window parentWindow)
Launch an installer application that you have defined in the install4j IDE.
|
static boolean |
waitForInProcessApplication(long timeout,
java.util.concurrent.TimeUnit unit)
Causes the current thread to wait until the currently running in process
installer application has been finished.
|
public static void launchApplication(java.lang.String applicationId, java.lang.String[] arguments, boolean blocking, ApplicationLauncher.Callback callback) throws java.io.IOException
applicationId
- the ID of the installer application to be launched. You can show the IDs of all installer applications on the
"Installer->Screens &actions" tab with the "Show IDs" tool bar button.arguments
- the arguments you want to pass to the installer application. Can be null
if no arguments
should be passed. Arguments like -Dkey=value
will be passed as JVM parameters, just like when calling the installer
application from the command line.blocking
- if this call should block until the installer application exits.callback
- an optional call back for receiving notifications when the installer application exits or
when the installer application shuts down this JVM. Can be null
java.io.IOException
- if there was an error starting the installer applicationpublic static void launchApplicationInProcess(java.lang.String applicationId, java.lang.String[] arguments, ApplicationLauncher.Callback callback, ApplicationLauncher.WindowMode windowMode, java.awt.Window parentWindow)
The "Shutdown calling launcher" action has a different effect than usual: The whole process will be terminated when the installer application exits. Furthermore, the "Request privileges" action only works for elevating a helper process, not the main process.
When using JavaFX in your application on macOS, make sure to pass the system property
-Djavafx.embed.singleThread=true
to your launcher, otherwise the native event loops of JavaFX and the AWT may lead to a deadlock.
applicationId
- the ID of the installer application to be launched. You can show the IDs of all installer applications on the
"Installer->Screens &actions" tab with the "Show IDs" tool bar button.arguments
- the arguments you want to pass to the installer application. Can be null
if no arguments
should be passed. Arguments like -Dkey=value
will be passed as JVM parameters, just like when calling the installer
application from the command line.callback
- an optional call back for receiving notifications when the installer application exits or
when the installer application shuts down this JVM. Can be null
windowMode
- if the wizard should be shown in a dialog or in a frameparentWindow
- the parent window if the wizard should be shown in a dialog. Can be null
.java.lang.IllegalStateException
- if another in-process installer application is currently runningpublic static boolean waitForInProcessApplication(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
timeout
- the maximum time to waitunit
- the time unit of the timeout
argumenttrue
if the application has terminated or no installer application was running and false
if the waiting time elapsed before the count reached zerojava.lang.InterruptedException
- if the current thread is interrupted
while waitingpublic static boolean isNewArchiveInstallation()
The state is stored as a user setting, so the installation will appear as "new" again if a launcher is executed with a different user account. For initialization of global state, additional custom checks are necessary.
When an installer was used this method will always return false.