VMware InstallBuilder is a development tool for building cross-platform installers for desktop and server software. With InstallBuilder, you can quickly create dynamic, professional installers for Linux, Windows, Mac OS X, Solaris and other platforms from a single project file and build environment.
InstallBuilder is a modern, fully-featured, cross-platform installation tool. It is designed to simplify the deploymentof both desktop and server software, helping you reduce support costs related to installation and provide a positiveend-user experience.
This document provides an overview of InstallBuilder capabilities and architecture, as well as in-depth coverage of commoninstallation topics. A companion appendix provides detailed information on each one of the XML configuration options.
To fully understand the architecture and capabilities of InstallBuilder, it is useful to consider the previous generation ofcross-platform installers. These were built using the Java programming language. Java is a fine choice for multiplescenarios and indeed over half of your users use InstallBuilder to package Java-based applications. However, it has a set ofmajor drawbacks when the goal is to create setup programs. For example, it requires a Java runtime environment to be present in themachine, which increases the chances of something going wrong if one is not present or the one present is not a suitable version.Alternatively, if the user decides to bundle a JRE with the installer in order to avoid these potential problems, it will increasesignificantly the footprint of the installation. Java-based installers also require a self-extraction step, in which thefiles are first unpacked to disk before installation can begin. For large installers, this can be a time-consuming step andanother source of installation-related issues if the end-user runs out of disk space during this process. Finally, andalthough alternative toolkits like SWT finally emerged, Java GUI development has traditionally suffered from poorperformance and lack of a truly native look-and-feel. End-users react much more favorably to setup applications that are responsiveand provide a familiar native interface, even if the functionality is identical.
The above is not intended as a rant against Java-based installers, rather as an illustration of the challenges that a crossplatform installation tool faces. So, how does InstallBuilder address these issues? Installers generated withInstallBuilder are native applications that do not require any runtime to be present in the system to run. This means that the overhead theinstaller introduces is very small, typically around 2 to 3 Mb, versus the 15 Mb to 20 Mb that a bundled JRE requires. Inaddition to this, the installers do not perform a self-extraction step, meaning that they start up instantaneously, whereassome Java-based installers can take up to minutes to initialize for large installers. Installers created with InstallBuilder use theunderlying system libraries for displaying their GUI interfaces, so users get a native look and feel foreach platform the installers run on, such as Windows and Mac OS X. On Linux and other Unix platforms, there is not a singlestandard look and feel. In those cases, InstallBuilder provides a choice between the most common toolkits, Qt and GTK, aswell as a built-in fallback mode.
InstallBuilder 20 provides a host of new features, including:
InstallBuilder is a fully-featured tool capable of addressing multiple installation scenarios, from desktop games toengineering simulation tools to enterprise-level server software.
InstallBuilder provides support for all common (and not so common!) operating systems out there. If you want to know ifInstallBuilder supports a particular platform, please contact us - chances are that it does. InstallBuilder-generated installers will run on:
The command line builder tool will run on any of the supported platforms, allowing you to generate installers for any of the other supported platforms forthe InstallBuilder edition you are using. For example, if you are running InstallBuilder Professional on Linux, you will be able to generate installers for Windows, Linux and OS X. This is particularly useful for situations in which you need to build the installers as part of a continuous integration/daily build scenario.
The GUI installer design tool helps you to visually create installation projects. The GUI design tool runs on Linux x86/x64, OS X and Windows with a minimum of 800x600 screen resolution. Note that you can always edit XML projects directly or even alternate between using the GUI and editing the XML project file as needed.
InstallBuilder is distributed in multiple editions, with the primary differentiation being the supported platforms that you can create installers for. The link below provides a detailed comparison of the available editions:
InstallBuilder allows projects to be created and edited with an easy to use graphical editor tool. Adding new actions to the installation logic or files to pack is as easy as double-clicking the appropriate element and navigating through the organized dialogs. The GUI is only available on Linux x86/x64, Windows and OS X.
Once the GUI is launched, you will be welcomed with the screen displayed in Figure 1. From this main screen you can use the top menu entries to create a new project or open an existing one, launch the build process, check for an updated version of InstallBuilder, register your copy of the tool and open the documentation.
Figure 1. GUI welcome screen
Alternatively, you can use the shortcut buttons to perform the most common actions:
Figure 2. GUI Toolbar
Some of the toolbar buttons will be disabled depending on whether a project is loaded or not. Figure 2 also shows the notification youwill see when a new version is available. If the builder has access to the Internet and is configured to check for updates, it will automatically reportthese notifications for each new version released. The process can also be manually triggered using the Update
menu. Clicking on the blue arrow will openthe downloads page in a web browser.
Disabling checking for new versions of InstallBuilder |
---|
If you do not want the installer to check for updates on startup, you can edit the |
After loading or creating a new project, a new UI will appear, divided in different sections:
Figure 3. New project
The main project settings Vendor name
, Product Name
, Product Filename
and Version Number
are defined once and used multiple times when displaying information during the installation process; in the Add/Remove Program menu, the installer filename and so on. It is always possible to override these default values when necessary.
Enabling Save Relative Paths
will convert all of the absolute paths related to the build process (files to pack, images, readme…) to relative paths, using the location of the project file as the reference. This setting will be applied automatically and transparently when saving and loading the project so it will not be noticeable while working in the GUI. This particular setting is especially useful when sharing a project between developers or operating systems, as the location of the resources is not hardcoded, as explained in theWhen is it necessary to use the Save Relative Paths option? note. If the paths were already manually configured as relative, they will be preserved and resolved when building, also using the location of the project to absolutize them.
The License File
setting specifies a license file that will be displayed during installation. The end user will need to accept this license text before continuing with the installation process. If you do not provide a license file, the license acceptance screen will not be displayed to the end user.
You can also provide an alternate HTML License File
. This HTML-formatted license will be used if the front-end supports it (currently only the case for the Qt front-end). Otherwise the default license text specified in the License File
setting will be displayed.
You can also display multiple licenses in different languages or display them conditionally, as described in the Displaying a localized license and readme section.
Figure 4. Files screen
Shortcuts may also be added in this section.
Figure 5. Advanced screen
Figure 6. Customization screen
Figure 7. Packaging screen
The GUI is only available on Linux, Linux x64, Windows and OS X. The command line builder is available on all platforms. |
InstallBuilder project files are stored in XML format. This enables and simplifies source control integration, collaborative development and customizing projects both by hand and using external scripts.
Our XML is human friendly, and although the project can be fully managed through the GUI, advanced users can also directly edit the XML project using the built-in XML editor or their preferred text editor or IDE. The following is a complete example of what an InstallBuilder project looks like. This particular project does not package any files.
Most of the examples presented in this guide are provided as XML snippets, but you can achieve identical functionality using the GUI
If your XML editor supports it, you can use a RELAX NG schema for validation. It is included as InstallBuilder.rng
, inside the docs
directory of your installation.
For Atom you can use the linter-autocomplete-jing package. This package allows autocompletion of XML documents against RELAX NG.
Figure 8. Xml autocompletion in Atom
To set up the XML schema with Visual Studio Code you can use trang to convert the RNG file to the XSD format. Paragon for mac full. and using the XML Language Support extension you can add it to your settings.json in the following way:
The XML specification requires that specific characters are escaped. This is done automatically if entering the values through the GUI but if you are directly editing the XML code you must take it into account. The table below summarizes the most common characters and their escape sequence:
Table 1. Common XML escape sequences
Character | XML escaped sequence |
---|---|
& |
|
< |
|
Star wars galaxies for mac. > |
|
' |
|
' |
|
n | Twitter client for mac. |
Some of the values only need to be escaped if provided as part of an attribute value, not an element.
The snippet below adds some lines to an existing file, separating them using escaped line breaks (n):
It is also possible to escape a full block of code using the <![CDATA[ . ]]>
notation
The text inside the <![CDATA[ . ]]>
block will be interpreted literally, so you do not need to escape any character.