Build Configuration attributes

A Build Configuration defines the parameters for a Tarma Installer installation package. Among other things, it allows you to specify the name for the package, the language, and the product icon for use in the package. (The actual contents of the installer are determined by the other project pages.)

Attributes

This pane contains the following attributes and options.

Attribute Description
Config name

Enter the name for the build configuration. This is also the name of the folder in which the installer package will be created; its full path is <ProjectFolder>\Project name\Config name, which is available through the BuildFolder variable. The value of the Config name field is available through the BuildName variable; you can use the values of these variables as <BuildFolder> and <BuildName> in any build actions.

Note: If you select Per language for the Languages attribute (below), then the configuration name is modified internally during the build process. Each language's installation package is stored in a separate folder called Config name-langID, where langID is the 4-digit hexadecimal language identifier for the build language. The BuildFolder and BuildName variables reflect this.

Installer name

Enter the name of the installation package; for a Tarma Installer package, this should have an .exe extension. The installation package will be created as <ProjectFolder>\Project name\Config name\Installer name and its full path is available through the BuildTarget variable. You can use the value of this variable as <BuildTarget> in any build actions.

Tip: To retrieve portions of the installer's file name, you can use expressions such as <$fbase(<BuildTarget>)> and <$fname(<BuildTarget>)>.

Custom icon

Check this box to use a custom icon as the product icon for the installation package; clear it to use the default Tarma icon. If you check this box, you can select the desired icon file by clicking on ... (browse). To revert to the default icon, click X.

The custom or default icon is used for the installation package and when your product is registered for the Add/Remove Programs control panel applet.

Password

Check this box to protect the installation package with a password, and either enter the desired password or click Generate to generate a pseudo-random password. If the installer is protected with a password, the entire package except for the Setup.exe program itself is encrypted and can only be opened after the correct password is entered during installation.

Note: The password protects the installation of your product (including subsequent Modify or Repair runs), but not the removal. Anyone with access to the target system can run the uninstaller.

Note: If you select the Packaging: Plain file tree option, then only the package consisting of the installer and its database (and any files explicitly included in the compressed archive) is protected by the password. Any files that are distributed uncompressed in the file and folders tree are accessible without special means.

Generate Click this button to generate a pseudo-random password for the installation package. This opens the Generate password dialog box that allows you to specify the strength of the password. The resulting password uses the uppercase letters A-Z (except for I and O to avoid confusion with the digits 0 and 1), plus the digits 2-9.
Mask password entry Check this box to mask password entry in the installer; clear it to allow the user (and any bystanders) to see the password as it's being typed.
Default args

Enter the default command line arguments for the installer. Any arguments that you enter here are stored in the installation package and will be used as if they were command line arguments when the installation package is started.

During installation, the installer parses its command line arguments in the following order:

  1. Anything that you enter in Default args;
  2. Any piggy-backed command line arguments;
  3. Any arguments entered on the actual command line that started the installer.

Because of the way the installer processes its command line arguments, later arguments may override earlier ones. As a result, the Default args may be overridden by the piggy-backed arguments, and they both may be overridden by arguments on the actual command line. This enables you, for example, to configure the installer for silent mode by default (by setting Default args to /q), but still allow the user to run it interactively by specifying /q0 on the command line.

Note 1: You must use "quotes" in the Default args field just as you would on a normal command line to enclose arguments that contain spaces. Unquoted spaces are used as separators between arguments.

Note 2: If the Default args field contains symbolic references such as <ProgramFilesFolder>, then you must enclose them in `backticks` to prevent expansion at build time. For example, this:

/q "INSTALLDIR=<ProgramFilesFolder>\MyApp"

...will be expanded when the installer is built, which is probably not what you intend because it resolves <ProgramFilesFolder> on your own development system instead of on the target system. Instead, use extra `backticks` like so:

/q "INSTALLDIR=`<ProgramFilesFolder>\MyApp`"

This will pass the string <ProgramFilesFolder>\MyApp literally to the installer, which in turn will resolve it at installation time as intended. (Obviously, if you have any symbolic references that must be resolved at build time such as build-time variables like <BuildDate>, then you should not use the backticks.)

Note 3: The Default args and piggy-backed command line arguments are only present in the installation package and are used when the original installation package starts. During subsequent Modify or Repair runs or the removal of your product, they are not present and not used.

Build variables

Enter a list of variables to set when the configuration is being built. The list must consist of name=value pairs that are separated by semicolons, for example IncludeMe=1;IncludeYou=0. You can use build variables to embed configuration-specific variable values anywhere in the installer, or to use as part of build conditions in components or features.

The variables are set just before the configuration is built and removed immediately afterwards. Some important notes about the build variables:

  • If the name portion refers to an existing symbolic variable, that variable's value is replaced temporarily; it is restored once the configuration is built. Existing read-only variables are left unchanged.
  • If the name portion does not refer to an existing variable, a new variable is created for the duration of the configuration's build process and is removed afterwards.
  • The value portion is used to set the Value attribute of the symbolic variable; you cannot set the Value (NT) or the Value (x64) attributes here.
  • The value portion cannot be localized and will remove any localization in the name variable for the duration of the build.
  • By default, newly created build variables are saved in the installer's database. If this is not desired, you must explicitly create the name variable on the Symbolic Variables project page and set or clear its Public variable attribute as required.

Except as noted above, build variables behave as regular variables for the duration of the build process and in the installer. Among other things, this means that:

Download URL

Specify the URL to the download directory on your Internet server that will host the download files produced for the installer. This field is only used if you specified a download packaging option for the build configuration or one or more components.

The download URL must contain the protocol specifier; Tarma Installer supports the HTTP, HTTPS, FTP, and FILE protocols (see the description of the Download File action for details).

Note: It is your own responsibility to ensure that any download files are present in the indicated location on your server. This means that you must upload all files from the Downloads folder (see Output files) to the correct server location. Moreover, this must be done each time that you build the installer, because each build is assigned a unique package code and the installer will not accept download files from a different package, even if the contents would be identical.

We recommended that you create a separate directory for each installer on your server, because the filenames of the download packages are not unique across projects. For example, the main download archive is always called _TinMain.tiz and the per-component download archives use the name of the respective components, which are not necessarily unique either.

Languages

Select the desired language build mode from the drop-down list. The following choices are available:

Languages Description
Default only Builds the package only for the default project language as defined on the Installer Languages project page.
Per language Builds separate packages for each of the project languages defined on the Installer Languages project page or a subset thereof. To specify a subset, click ... to open the Select Installation Languages dialog box.
Multilingual Builds a single package that contains all of the project languages defined on the Installer Languages project page or a subset thereof. To specify a subset, click ... to open the Select Installation Languages dialog box. When the installation package is run, a dialog box is displayed that allows the user to select the desired installation language. If the installer is running in Quiet mode, no dialog box is displayed and this option behaves as Multilingual, auto.
Multilingual, auto Same as Multilingual, except that no dialog box is displayed during installation. Instead, the installer automatically selects the installation language based on the user's system language.

If you select Per language, each installation package is stored in a separate folder; see Config name above for details.

Regardless of the language build mode, an installation package will only contain the project contents that are relevant for the package's language. This affects the following:

  • If a component is marked for one or more languages, that component and the objects that it contains are only included in the package if the build languages are among the component's languages. (Components that are marked Install for all languages are always included.)
  • For any localizable attributes and localized strings, only the translations for the build languages are included in the package.
  • Dialog box translations are included only for the build languages.

For the Multilingual and Multilingual, auto options the installer performs runtime filtering of the available languages, as follows:

  1. Any languages that are not installed on the target system are suppressed. This ensures that only languages whose fonts, code pages, and keyboard mappings are present on the target system are available for selection.
  2. For ANSI-based installers only (see Setup stub, below), any languages that do not use the current ANSI code page are also suppressed. You can override this by specifying the /l Setup command line option, but this is not recommended because it may render large parts of the user interface text unreadable: any characters outside the current ANSI code page will appear as ? and other characters may be mapped to the wrong glyphs.

For the Multilingual, auto option, and for the Multilingual option when the installer runs in Quiet mode, the installer then determines the "best fit" language, using the following rules:

  1. If the user's system language is among the available installation languages, it is selected. For example, if the user's system language is set to French (France) and this is one of the available installation languages, it is selected.
  2. Else if the user's primary language ID matches the primary language ID of one of the available installation languages, it is selected. For example, if the user's system language is set to French (Canada) but only French (France) is available among the installation languages, the latter is selected. If there are multiple primary language ID matches, the first one is selected.
  3. Else if there is a default language (as set on the Installer Languages project page), it is selected.
  4. Else the first available language is selected.

The language selection only takes place during installation; any subsequent runs of the same installer, for example as uninstaller, use the language that was selected during installation.

Setup stub

Select the desired Setup.exe stub from the drop-down list. The following choices are available:

Setup stub Description
Generic Win32 Always use Setup32a.exe, regardless of the build platforms.
Smallest size Use the smallest Setup stub that covers all build platforms.
Regular Use only 32-bit Setup stubs, but include both ANSI and Unicode versions if required.
Best performance Use separate ANSI, Unicode, and x64 Setup stubs as required.

See the topic Setup stubs for more details.

Packaging

Select the desired installer packaging from the drop-down list. The following choices are available:

Packaging Description
Compressed .exe The installer consists of a single self-extracting executable that contains all distribution files in compressed format. This is usually the most convenient distribution format.
Plain file tree The installer consists of an executable with the Setup stubs and installation database, plus a separate files and folders tree that contains the installation files in plain (i.e., uncompressed) format. This format is suitable for use on CD-ROMs and similar media if you want the files to be accessible before installation.
Loader + Archive The installer consists of an executable with the Setup stubs and installation database, plus a separate compressed archive with all installation files. The compressed archive may be split into multiple parts if you specify the Disk spanning option in the Build - Advanced dialog (accessible through the Advanced... button).
Loader + Download The installer consists of an executable with the Setup stubs and installation database, plus a number of separate compressed archives with all installation files. The compressed archives are meant to be downloaded from your server during installation; the Download URL field (see above) determines from where the installer will download the archives. There will be one download archive for each component, plus optionally another one for installation files that are not controlled by a component.

The Packaging option defines the overall default for the build configuration. You can override the default packaging options as follows:

  • For individual installation files to include most files in compressed format, except for a few key files that you want to be accessible in uncompressed form (or vice versa).
  • At the component level to determine which components will be downloaded during installation and which will be included in the main installation package.

See Installer packaging for more information about the possible packaging combinations. The section Output files contains a description of the layout of the plain file tree and the other parts of the installation package.

Treat warnings as errors

Check this box to treat any preflight warning messages as errors; clear it to treat them as mere warnings. If you check this option, any preflight warnings will terminate the build process; this will be flagged by an additional BLD:E0005 message.

Because preflight warnings indicate issues that might cause the installation to fail, you should attempt to build your installers without preflight warnings. This option helps you to enforce that.

Generate build manifest

Check this box to generate a build manifest during the build process; clear it to build without generating a manifest. The build manifest is an XML file that contains a detailed list of all files that were included in the installation package; it can be used as part of an audit trail for your product's release.

If generated, the build manifest is stored as <ProjectFolder>\Project name\<BuildName>.Manifest.<BuildDayNo>.xml, i.e., with the name of the build configuration (modified for per-language packages, if necessary) and the serial number of the day it was built.

Sign after build

Check this box to attach a digital signature (Authenticode) to the installation package; clear it to create an unsigned package. Using this option involves two prerequisites:

  1. You must obtain and configure the Microsoft SignCode tool in the Preferences - SignCode dialog box. You can open that dialog box by choosing Edit > Preferences from the main menu.
  2. You also need a Software Publishing Certificate (SPC), which you can create yourself using Microsoft's MakeCert tool or obtain from a Certificate Authority (CA) such as Verisign or Thawte. Certificates issued by a certificate authority have the advantage that they are countersigned by a trusted third-party, which allows the recipients of your installation package to verify your identity if they check the signature.

See Digital Signatures for background information about SignCode and digital signatures.

Note: If you select the Packaging: Plain file tree option, then only the package consisting of the installer and its database (and any files explicitly included in the compressed archive) is signed. Any files that are distributed uncompressed in the file and folders tree are excluded from the signature.

Platforms...

Click this button to open the Select Installation Platforms dialog box, which allows you to specify the Windows versions for the package.

The configuration's build platforms affect which project contents are included in the installation package. In particular, if a component is marked for some platforms but not for all, that component and its contents will only be included in the package if its platforms overlap with the configuration's build platforms. The build platforms also determine which Setup program is included in the installation package; see Setup stub above for details. Finally, the System Requirements are also intersected with the platforms that you specify, and the installer will refuse to install on any of the non-build platforms.

Tip: If you want to build separate installation packages for different Windows versions, for example one for Windows 95, 98 and Me, and another for Windows NT4, 2000, XP, 2003, Vista, 2008, and later, you can do so as follows:

  1. Create two Build Configurations (or create one first, set its options, then use Copy and Paste to create a duplicate).
  2. Set the Config name attribute of the first configuration to, for example, Install-9x and the second to Install-NT. It is important to choose a unique Config name for each configuration, or they will overwrite each other.
  3. In the first configuration, check the Windows 95, 98 and Me platforms and clear the rest; in the second configuration, clear Windows 95, 98 and Me and check the rest.

You can now build both versions of the installer from a single Tarma Installer project. Obviously, you can create further configurations as needed.

Advanced...

Click this button to open the Build - Advanced, Build - Diagnostics, Build - Actions, and Build - SignCode property sheets. These property sheets allow you to specify the level of detail during preflight checks, any external actions to execute before, during, and after the build process, and the global or per-configuration SignCode settings, respectively.

Output files

Each build configuration generates a number of files during the build in addition to the installer itself. Some of the files are only built if a certain option is set, others are always built but are automatically deleted at the end of the build process.

The files are placed in a special folder structure that keeps all distributable files of a configuration together and separate from other projects that you might have defined. In the following overview:

Project.tip                      - Your Tarma Installer project file
Project.log                      - The build log file is written in the same folder
Project\                         - A subfolder with the project's name is automatically created
    Config.Manifest.DayNo.xml    - Optional file: the build manifest for the configuration and build day
    Config\ or Config-xxxx\      - A subfolder with the configuration's name is automatically created (see note)
        Installer.exe            - Your installer
        Installer.dat            - Intermediate file: the installation database (do not distribute)
        Installer32.dll          - Intermediate file: the 32-bit installer resources (do not distribute)
        InstallerX64.dll         - Intermediate file: the x64 installer resources (do not distribute)
        Installer.txt            - Optional file: the TWU update file for the installer
        Installer.zap            - Optional file: the ZAP file for the installer
        Disk0001.tiz             - Optional file: installation archive for the first disk
        Disk0002.tiz             - Optional file: archive continuation for the second disk
        Disknnnn.tiz             - Optional files: further archive continuations for disks 3..n
        Downloads\               - Optional subfolder: contains all download archives
            *.tiz                - Compressed download files that must be placed on your server
        Target System\           - Optional subfolder: root of the uncompressed files and folders tree
            ...                  - Uncompressed files and folders are stored under Target System

Note: For multilingual installers, a single Config\ folder is created. For per-language installers, a separate Config-xxxx\ folder is created for each language, where xxxx is the 4-digit hexadecimal language code. In that case, per-language manifest files called Config-xxxx.Manifest.DayNo.xml are also created.

Plain file tree layout

Any uncompressed files are stored in the same folder structure as that in which they appear on the Files and Folders project page. The root of the uncompressed files tree is formed by a subfolder called Target System in the build configuration's output folder; this corresponds to the Target System root node on the Files and Folders project page. The other folders are created under the Target System subfolder. Only folders that contain uncompressed installation files will appear here.

The file and folder names used in the plain file tree are the same as their installation names. Because these installation names may be localized, the actual names in the plain file tree are also localized. This may cause problems if you are creating a multilingual installer as opposed to per-language installers:

In practice this is usually a non-issue, because most installation file names are not localized anyway. However, if your installer is distributed in several languages and you need to have the correct localized file and folder names in the plain file distribution, then we recommend that you select the Languages: Per language option in your build configuration.

Distribution files

When you distribute your installer, you must include the following files and folders in the same relative locations as they were created during the build. Do not distribute any of the files that are marked "Intermediate" in the overview above; they will be present in the installation package anyway and their exposure might compromise the integrity of your installer.

Disk 1 (or other non-disk medium)

Disks 2..n (only present if disk spanning is in effect)

Tip: If for some reason the span size that you specified is less than the actual disk size that you use, then you can place multiple DiskXXXX.tiz files on a disk, including the first one. However, you should assign the files to disks in ascending order to minimize the number of disk prompts for the customer.

Your Internet server (if any components are marked for downloading)

Related topics

Build Configurations, Installer packaging, Working with attribute panes