## install4j features |
previous |  | next

install4j comes in two editions, the Professional Edition and the Enterprise Edition. To check the differences between the two editions please see the edition comparison. Features that are available in the enterprise edition only are marked as such in the the following list.

install4j offers the following features:

- construction of a distribution tree
  install4j's GUI allows you to
  - freely define your distribution tree
    In each directory of the distribution tree you can include the contents of entire directories or single files from arbitrary directories on your disk. The definition view and the results view give you full control over the files that will be distributed by your installers.
  - handle platform-specific differences
    install4j offers convenient include/exclude mechanisms that let you tailor your distributions in a platform specific manner.
  - define file rights for Unix, Linux and Mac OS X
    For each element of the distribution tree, you can define custom access rights for installation on Unix-like platforms.
  - define a fine-grained uninstallation policy
    For each element of the distribution tree, you can determine whether you want the uninstaller to remove it or not.
  - define the overwrite policy
    For each element of the distribution tree, you can set a different overwrite police that determines what install4j will do when it has to overwrite files during an installation.
  - define installation components
    You can define groups of files and directories that constitute separate installation components. You can offer the user to select only certain components for installation.
- compilation of native launchers
  install4j launchers have the following features:
  - Customized JRE/JDK detection
    The executable can detect appropriate Java JREs and JDKs on the target system. You can also distribute your own JRE on demand (see below). The search sequence, error handling and supported JRE/JDK versions are fully customizable.
  - Flexible classpath construction
    The classpath for your Java application can be fully customized to scan directories for JAR files, include specific directories and archives as well as insert environment variables. Customizable error handling allows you to interrupt the startup sequence with a specific error message instead of obscure `NoClassDefFound` exceptions later on.
  - GUI, console applications
    install4j lets you compile GUI applications or console applications with an associated terminal window.
  - Service launchers (enterprise edition only)
    Services (or daemons) are fully supported by install4j (enterprise edition only). For services, install4j generates service executables on Windows, startup items on Mac OS X and start/stop scripts on Unix/Linux platforms.
  - Custom working directory
    If required you can adjust the working directory to a specific directory relative to the executable. This is especially helpful for console applications which can be invoked from arbitrary directories. This way, you don't need to define fragile environment variables like `MYAPP_HOME`.
  - VM parameters file
    For every executable, you can create a user editable VM parameters file. In this way, users can adjust VM properties like the maximum heap size.
  - Enforce single instance only on Windows
    On Windows, you can optionally enforce that only a single instance of your application is running. The launcher API allows you to receive notification or further startups together with any command line parameters.
  - Windows version info resource
    install4j can generate a version info resource entry in Windows executable. This version info is displayed for example in the property dialog of the Windows explorer. If you wish to obtain the "Designed for Windows" logo, this is an important requirement.
  - Splash screen
    For GUI applications, a splash screen gives the users of your application an optimum feedback about application startup. Textual status information about application startup and version information can be freely placed on the splash screen. From within your Java code, this status information can be easily updated with one simple call. With install4j's "auto-off" mode activated, the splash screen is hidden, as soon as your application displays a window.
  - Redirection of stderr and stdout
    The standard output and error streams can be redirected to customized files. This gives you access to valuable information like an exception stack trace on stderr that would otherwise be lost for a Java GUI application.
  - Startup failure detection
    No more flashing terminal windows and GUI applications that hang without displaying anything. install4j executables can monitor a stderr output file and display a dialog with helpful information to inform about startup failures.
  - Custom icon
    Install4j uses two image files to create the icon for your launcher. install4j creates Windows icons that are optimized for Windows XP and also have optimal display properties on older versions of Windows. You can also specify your own Windows icon file.
  - Custom process name and taskbar grouping on Windows XP
    On Microsoft Windows, install4j launches your Java application in such a way, that the install4j executable and not `java.exe` or `javaw.exe` will appear in the task manager. In Windows XP, the task bar grouping will display the name of your executable and the associated icon, instead of the non-descript terminal icon and the string "javaw".
  - Application bundle on Mac OS X
    On Mac OS X, install4j executables are part of a proper application bundle. You can specify a Mac icon for your application.
  - Window manager integration for KDE/Gnome
    install4j generates a `.desktop` file that allows your users to easily place a shortcut on their desktops and desktop menus.
- creation of installers
  install4j can produce the following installers:
  - GUI installers on Windows, Linux, Mac OS X and Unix
    install4j generates professional-looking installer that handle directory selection, service installation, programm group selection, start menu entries, quick launch icons, file associations and much more. Uninstallers for your application are generated as well. The look of the installers is customizable (enterprise edition only).
  - Linux RPM files
    An RPM file lets your Java application be part of the most widely used package management system used on Redhat, SuSe, Mandrake and many other distributions.
  - Full Mac OS X support
    The GUI installer installs your application as a proper application bundle on Mac OS X. Also available is a folder-type installation, that supports application bundles for each launcher.
  - Unix Archives
    As a fallback for arbitrary Unix platforms, gzipped TAR archives can be created that contain your application.
- custom screens and custom actions
  install4j's GUI installers can be customized with
  - custom actions
    If your installation has to perform tasks that are not covered by install4j's standard features, you can always create a pre-installation and a post-installation custom action to add your own installation code to the installer.
  - custom screens (enterprise edition only)
    Especially for server installations, freely layouted custom screens in the installation wizard are a need-to-have. With custom screens, you can query your users for business domain-specific installation parameters. Even a complex screen flow can be realized with install4j's custom screens.

  When developing custom actions and custom screens, you can use the installer API. It enables you to interact with the installation process and offers rich services for accessing the Windows API.

- JRE bundling and on-demand download of JREs
  With install4j, you can
  - dynamically bundle a JRE
    In this way the size of the installer is not increased by the inclusion of a JRE. On the target system, if no suitable JRE can be found, the user is prompted whether to download the JRE bundle from your site.
  - statically bundle a JRE
    When defining a media file in install4j, you just select a JRE for bundling and it will be distributed by the installer and used by all the generated launchers. The JRE download wizard in install4j makes it very easy to download suitable JRE bundles from ej-technologies' JRE server.
- Handling of updates
  install4j actively handles updates of your installations. It can suggest previous installation locations, run the uninstaller before installation, stop and restart deployed services and detect running instances of an application. With install4j, you can also create "add-on" installers that make it very easy to distribute patches for your installations.
- User variables
  Most text fields in install4j support user variables. With user variables you can override and internationalize settings for each media file as well as change settings from the command line or ant task.