sbt-install4j
September 2, 2022 ยท View on GitHub
SBT plugin for building installers with Install4J 
Usage
sbt-install4j is available for sbt-1.x.
project/plugins.sbt
Import sbt-install4j plugin to use install4j command.
addSbtPlugin("com.github.jpsacha" % "sbt-install4j" % "1.5.0")
build.sbt
Sample use, add following to your build.sbt:
exportJars := true
This will export dependent JARs that will be copied to the installer
enablePlugins(SBTInstall4J)
install4jProjectFile := "installer/example.install4j"
Available Tasks and Settings
SBT tasks provided by sbt-install4j plugin:
-
install4j: Task - Builds Install4J project. Simple usage from SBT REPLsbt> install4jIt will build project defined in by setting
install4jProjectFileIt can take optional arguments that are passed by to the Install4J compiler. Refer to
install4jcdocumentation in Install4J Help for list of supported command line options. You can print option summary from SBT REPL usingsbt> install4j --helpExample of only building
windowsmedia typesbt> install4j -m windows -
install4jCopyDependedJars: Task - Copies project dependencies to directoryinstall4jDependedJarsDir
SBT settings provided by sbt-install4j plugin:
-
install4jCopyDependedJarsExclusions: Seq[String] - List of regex expressions that match files that will be excluded from copying. -
install4jCopyDependedJarsEnabled: Boolean - iftruedependent jars will be copies, iffalsethey will be not. -
install4jcFile: File - Location of the install4j's command line compilerinstall4jc[.exe]. It can be found in thebindirectory of the install4j installation. Default can be set with environment variableINSTALL4JC_FILE.install4jcFile := file("C:/Program Files/install4j8/bin/install4jc.exe") -
install4jProjectFile: String - Relative path to the install4j project file that should be build. -
install4jDependedJarsDir: String - Location where dependent jars will be copied. -
install4jExtraOptions: Seq[String] - "Additional command line options passed to the compiler." -
install4jVerbose: Boolean - Enables verbose mode. -
install4jRelease: String - Override the application version. Version number components can be alphanumeric and should be separated by dots, dashes or underscores. -
install4jCompilerVariables: Map[String, String] - Override a compiler variable with a different value. In the map, thekeyis variable's name, thevalueis variable's value. -
install4jHomeDir: File - Deprecated. Install4J installation directory. It assumes that Install4J compiler is in subdirectorybin. Default can be set with environment variableINSTALL4J_HOME. This option is deprecated, use environment variableINSTALL4JC_FILEor settinginstall4jcFileinstead.
Determining location of Install4J compiler
The sbt-install4j executes Install4J compiler. It needs to know its location. It will attempts to determine location base on the OS used. On Windows it is assumed to be:
C:\Program Files\Install4J10\bin\intall4jc.exe
On Mac OS X:
/Applications/install4j.app/Contents/Resources/app/bin/install4jc
On Linux:
/opt/install4j10/bin/install4jc
If the Install4J is installed in a different location you can specify location of the compiler using the environment
variable INSTALL4JC_FILE, property INSTALL4JC_FILE, or SBT setting install4jcFile. For multi-platform builds it is
preferred to use the environment variable INSTALL4JC_FILE.
You can set the property variable when starting SBT using -D option, for instance:
$ sbt -DINSTALL4JC_FILE="C:/Program Files/install4j11/bin/install4jc.exe"
Example of a Complete Application
ScalaFX Ensemble is an example of an application that is making use of sbt-install4j top create an installer with Install4J
Tips & Tricks
Compiling against Install4J API
If you use Install4J API in your application and using version other than the default for sbt-install4j you will need to set environment variable INSTALL4J_HOME.
For instance, sbt-install4j uses Install4J 7 as default, but you have Install4J 9 installed, then set INSTALL4J_HOME the installation directory. On Windows that would typically be C:\Program Files\install4j10
Debugging
To see debugging information set SBT logging level to debug:
sbt> debug
Look in the log for lines prefixed with [debug] [sbt-install4j].
License
sbt-install4j is licensed under Apache 2.0 license.