InstallAware for Windows Installer
 

Pre-Defined Compiler Variables

In addition to pre-defined variables, each InstallAware project also contains pre-defined compiler variables. These compiler variables are automatically initialized when you compile your setup based on your project settings, even if you have not explicity defined them. Explicitly defining a compiler variable will override the implicitly defined value. The full list of pre-defined compiler variables and the values they contain is displayed below:

  • BUILDMODE: CD if the deployment type is Uncompressed Directory Layout, SFX if the deployment type is Compressed Single Self-Installing EXE, WEB if the deployment type is Compressed Web-Based EXE, PATCH if a patch is being built.
  • BUILDTASKS: When unspecified, Compressed Web-Based EXE builds utilize all available CPU cores during the compression phase of the build process. When specified as a positive Integer, Compressed Web-Based EXE builds spawn only the specified number of simultaneous Web Media Block compression tasks, thus helping facilitate multiple simultaneous builds without CPU core contention.
  • CLOAK_DIALOG_LOADER: If unspecified, the setup loader dialog and associated splash bitmap are shown during the final initialization stage of the setup engine (the loading of dialog resources and the extraction of support files). If set to TRUE, this dialog and the splash bitmap (where specified) are suppressed. This may be useful when MIN_EXTRACT is set to AUTO or MANUAL with Compressed Single Self-Installing EXE and/or Compressed Web-Based EXE builds, as in this scenario, two similar setup loader dialogs (with the same splash bitmaps where applicable) would be shown in rapid succession. It may not be necessary for Uncompressed Directory Layout builds, as then the only available visible initialization dialog would be suppressed.
  • CODEPAGE: If unspecified, the recommended UTF-8 unicode value of 65001 is used. Other suggested values are 65000 for UTF-7 unicode and 1252 for the English codepage, or 0 for codepage neutral. Change this value if your setup installs or otherwise makes use of files with accented or non-ASCII locale-specific characters in their names. Ensure this codepage matches the codepage of your current host system to prevent data corruption in your MSI databases and to ensure the correct codepage is used on target systems, thus preventing issues with incorrectly interpreted file names leading to failures when finding files at install-time. Using Unicode codepages will ensure the broadest compatibility on modern Windows operating systems.
  • DISABLE_DRAGFIX: Initially unspecified. Unless set to TRUE, enables drag by outline for sheets of Acrylic or Glass windows on Windows 10 19H1 Update or later.
  • ENABLE_COMPOSER: Initially unspecified. Unless set to FALSE, enables the InstallAware Win32 GDI to DirectX Bridge in your user interface. Compatible with all dialog controls except RichEdit, HTMLViewer, TCheckListBox, TFileListBox, and TDirectoryListBox. You may replace these with Memo, TListBox, PTShellTree and PTShellList, or the InstallAware Win32 to DirectX Bridge will be automatically disabled for setup dialogs containing any incompatible controls regardless of the value of this compiler variable.
  • FORCE_DOUBLEBUFFER: If set to TRUE, the setup engine will force double buffering on all setup wizard dialog controls to minimize flicker. Also set the pre-defined variable $FX$ to FADE and the pre-defined variable $FXTIME$ to 1. Please note that double buffering is best handled internally and forcing it may not yield optimal results for your workflow - test before committing this value.
  • IADIR: Contains the full location of the InstallAware IDE, build module, or automation DLL folder (without a trailing slash), depending on the element executing the project build.
  • IAVER: Contains the version of InstallAware, beginning with the value 9.02 representing the first version of the product offering this compiler variable.
  • IGNOREMISSINGFILES: When set to TRUE, forces the InstallAware compiler to ignore missing files referenced by Install Files, Install Assembly, Install Service, and Install ODBC Driver commands during a build. Any other value results in the default behavior of the build failing when any given preceding command fails to include at least one file inside the setup package.
  • LANGUAGE: Represents the default language that the installation is built in. The default language is used to initialize the setup user interface in multi-lingual installations.
  • LOADOLDDATA: If set to TRUE, the setup engine will load feature definitions and other saved data (see the Load Feature Selections command for more details) from an older version of setup. Normally this data is loaded only in between the same versions of setup, when working on the same installed application version for a maintenance or uninstall operation. With any other value for this compiler variable, this normal behavior is preserved.
  • LOCALIZATION_PRECEDENCE: This compiler variable determines what language is used to display the strings in a localized setup. If set to INSTALL, setup will use the system default UI language of the operating system, also known as the "install language" on Windows Vista and later. If set to SYSTEM, setup will use the system UI language as set by an administrator in the Advanced tab of the regional and language options portion of the Control Panel on Windows Vista and later; while on earlier operating systems, due to operating system limitations, setup will use the system default UI language (the "install language") of the operating system instead, as if this compiler variable was set to INSTALL. If set to USER, setup will use the user UI language as set by the current user in the Language tab of the regional and language options portion of the Control Panel. If set to DEFAULT or any other value, including cases where this compiler variable is undefined, setup will use the default language as defined in the Project Settings dialog.
  • LOCMODE: Controls how localizations are applied at runtime. This compiler variable has impact on script localizations only, and has no effect on dialogs or shared strings:
    • If VARSONLY, the only localizations that are applied to a running setup are those for Localization Variable commands, even if other commands have been localized. This helps prevent incorrect and/or unintentional translations of other script commands from breaking a localized setup at runtime.
    • If NEWONLY, localizations for all commands are applied to a running setup, except commands which have not been localized yet and remain with older default strings, protecting elements which may have since been updated in the script. This helps prevent default values used in unlocalized commands from overwriting the newer values which may have since been changed in the script.
      • Note: For this option to have effect with old setups, add the file translations.Original from your translation export folder to your setup as a support file. New setups will automatically have this file.
    • If no value is specified, the default value of NEWONLY is assumed.
    • With any other value, all localizations are unconditionally applied.
  • LONGCOMPONENTS: If set to TRUE, the setup compiler will use long component names in MSI tables. This compiler variable is primarily intended for backwards compatibility with setups built with InstallAware versions prior to version 9. Especially when building patches against these older setups, you may want to use long component names to ensure maximum backwards compatibility.
  • MIN_EXTRACT: If set to AUTO or MANUAL, setup immediately starts executing the installation script, before extracting the full installation payload. This ensures that even setups built with a very large payload start executing instantly, with full control over the user interface and script flow (including custom error handling for out of disk space conditions, insufficient memory, or other failures through the $ABORTONERROR$ pre-defined variable) during the main extraction process. If set to any other value, setup starts executing the installation script only after the full installation payload has been successfully extracted, with only the splash bitmap and extraction progress bar visible during the entire process.
    • When set to AUTO, the setup engine automatically extracts the main installation payload immediately before access to source media is required. A non-modal progress dialog must be visible at this stage, or setup may appear to have hung while extraction is ongoing.
    • When set to MANUAL, the setup script must explicitly initiate extraction before actions which may require access to source media execute, or all such actions (and ultimately the setup itself) may fail. Please review the upgrade notes.
    • When set to DISABLED or any other value (including undefined), no specialized handling is required. The default value of this compiler variable is undefined on all legacy and new setups.
  • MSI_ALL: If set to TRUE, the setup compiler will build all setup layouts as MSI files instead of EXE files, with the exception of the Uncompressed Directory Layout layout, which already builds an MSI file. Even if the NO_MSI switch has been set to TRUE, this switch will apply.
  • NO_ERASE: If set to TRUE, the setup engine will not erase wizard dialog backgrounds. This setting is only safe (and recommended) for use with dialogs which are completely encased in one (or more) background image(s), as skipping erasure will then minimize flicker. Also set the pre-defined variable $FX$ to FADE and the pre-defined variable $FXTIME$ to 1.
  • NO_MSI: If set to TRUE, the setup compiler will skip MSI database generation as part of a build process, significantly speeding up the build. However, setups built without MSI databases will fail at runtime if the Windows Installer installation mode has been selected through the pre-defined variable $NATIVE_ENGINE$. Additionally, when the Native Engine is being used, the MSI file is still required to be built if the Remove Assemblies command is used in the setup script.
  • NODROP: If set to TRUE, the default Windows Installer ActionText table will not be dropped from the built MSI database.
  • NOEXE: If set to TRUE, the setup compiler will not attach the InstallAware runtime to the package created as part of a build process. The resultant output file will not run on its own, but may only be invoked by using the Run Light Mode Setup command from an MSIcode script. Combining multiple InstallAware built setups through the usage of this pre-defined compiler variable is recommended to save significant space duplication due to the InstallAware runtime being attached to each built setup otherwise.
  • NOHARDLINKS: If set to TRUE, and if the deployment type is Uncompressed Directory Layout, full file copy will not be performed on supported NTFS file systems, speeding up builds through the utilization of hard links to source files instead. Set to FALSE to perform full (but slower) file copy when building. All other build types use hard links at all times (on supported NTFS file systems) since they are compressed immediately after building and then the hard links are removed once the build (compression) is complete.
  • PCH: If set to TRUE, the setup compiler will skip rebuilding application runtimes, when pre-compiled application runtimes have been generated using the Pre-Compiled Runtimes tool. If FALSE or any other value, the setup compiler will rebuild application runtimes even if they have already been pre-compiled. This setting affects only setups built in Web Deploy mode.
  • PROJDIR: Contains the full location of the project folder for the project being built (without a trailing slash).
  • ROUNDING: Initially undefined. If set to FALSE, the setup engine will not round any setup wizard windows on Windows 11 and higher. If TRUE, the setup engine will always round all setup wizard windows on Windows 11 and higher. If SMALL, the setup engine will always round all setup wizard windows on Windows 11 and higher with a smaller rounding radius than typical. If undefined, the operating system decides whether any setup windows shall be rounded or not (and with what radius).
  • SHA256ONLY: If set to TRUE, disables SHA 1 code signing.
  • SIGN_ALL: If set to TRUE, code signs all .EXE, .DLL, .OCX, .SYS, .CPL, .DRV, and .SCR files being installed by setup using any of the following commands: Install Files, Install Service, Install Assembly, and Install ODBC Driver. Ignored unless code signing has been enabled in the Build Settings dialog for the setup package. If set to DEFAULT, code signing occurs only when the files do not already have an existing code signature. All other values disable automatic code signing.
  • SIGN_ALL_INPLACE: If set to TRUE, all files code signed when #SIGN_ALL# has been set to TRUE are signed in their immediate locations on disk. With any other value, files are copied to a temporary folder and signed in that temporary location to preserve the original state of files on disk.
  • SINGLEINSTANCE: Disallows running multiple instances of setups sharing the same Revision Code when set to TRUE.
  • SKIP_WEBLOCK_SIGN: Initially unspecified. If set to TRUE, disables code signing Web Media Block files with authenticode when code signing has been enabled for the setup project.
  • SWID: If specified and not empty, records the exact provided ISO/IEC 19770-2:2009 software identification (SWID) tag for your application. This compiler variable is automatically configured in the IDE Summary, UAC, and ISO design view.
  • SWID_ENTITLEMENT: Ignored unless #SWID# is defined and not empty. Corresponds to the Entitlement check-box in the IDE Summary, UAC, and ISO design view.
  • TARGETDIR: Resolves to the $TARGETDIR$ pre-defined variable at build time.
  • TFS_SERVER: Contains the Team Foundation Server URL of the project. Clearing this compiler variable will forcibly dissociate the project from source control.
  • TITLE: Set to the name of the product being installed, as set in the Product Name field of the project options dialog.

Please note that compiler variables are de-referenced in the script using the form #VARIABLE#.

Compiler variables may also be used with Compiler Variable If and related commands to conditionally compile the script at build time.

Also review the list of pre-defined variables.