Custom code is configured on the "Installer->Custom Code & Resources" step.
Entries in the custom code are used for
specifying additional libraries that can be used in scripts and expressions of screens, actions and form components.
Before you start to develop a new action, have a look at the available actions and screens. If it is just a few lines of code, you can use the "Run script" action to enter them directly into install4j. If you would like to collect user input, most use cases can be solved with a form screen.
An alternative way of adding your beans to the install4j is packaging them as an extension. In that case, you can select them directly from the standard registry dialogs instead of having to go through the "Search in custom code" menu entries when adding beans to the installer.
including resource files into the installer. Resource files are arbitrary files like DLLs, external executables or
text files that have to be available before the "Install files" action has run.
All class files are packed into a single user.jar
file, archives and resource files are extracted
to the user
subdirectory in the working directory of the installer. You can access a resource file
named file.txt
with the following expression in custom code:
new File("user", "file.txt")
To specify resource files in text fields in the installer configuration, use the sys.resourceDir
installer variable:
${installer:sys.resourceDir}/file.txt
To load native libraries in custom code, do not use System.load(..)
, but rather Util.loadNativeFromResources(...)
to load the library in the same class loader that loads scripts. For example, if you have added a native
library jni.dll
to your custom code, you can load it in a "Run script" action by calling
Util.loadNativeFromResources("jni.dll");
The following types of custom code locations are available:
Class or resource files
For simple actions, screens or form components that do not depend on
other classes, it is easiest to insert their class files directly, especially
if you build your installer extensions together with your application. Anonymous inner
classes will be included automatically. If you select a resource file, for example an image,
it will be added to the top-level directory of the custom JAR file and will be
available via Class.getResourceAsStream()
.
Directories
With this type of entry you can add an entire directory. Make sure to select a classpath root directory, otherwise your classes cannot be loaded.
Scan Directories
Use this type of entry to add all JAR and ZIP files in a selected directory.
Archives
Use this type of entry to add a JAR file. Files that are present in both the custom code as well as the distribution tree will not be packaged twice. Files that are also present in the distribution tree can be freely added to your custom code, they will not increase the size of your installer. The compiler checks the source path of included files to determine if they are already present in the installer.