Setup stubs

The "Setup stub" is the actual installer that is included in the installation package. It is called Setup.exe when installed on the target system, but in reality it is one of the SetupXX.exe programs that are included with Tarma Installer. Which Setup stubs are included in the installation package and which one is used during installation depends on the build platforms (see Platforms... in the Build Configuration attributes topic) and the target system.

All Setup variations are capable of installing all types of applications (whether 32-bit or 64-bit), but some variations perform better than others on a given platform. However, even the 32-bit Setup variations are aware of all 64-bit issues and will install 64-bit applications correctly, including the self-registration of 64-bit DLLs. Conversely, the 64-bit Setup variation can also fully install 32-bit applications (as well as 64-bit applications).

Tarma Installer includes the following Setup.exe variations:

SetupXX.exe Type Runs on Installs Description
Setup32a.exe x86 ANSI All 32-bit systems and all 64-bit systems All types of applications

Generic Win32 Setup program. It implements an installer that runs on Windows 9x (95, 98, Me) and Windows NT (NT4, 2000, XP, 2003, Vista, 2008, 32-bit, x64, and IA64) systems and contains all functionality required for those systems.

It will also detect WoW64 situations (i.e., when it runs as a 32-bit application on a 64-bit system) and handle those correctly, both for the 32-bit and the 64-bit portions of the installation, if any.

This Setup program uses ANSI text processing internally and can only handle languages that use the current ANSI code page on the target system.

Setup32u.exe x86 Unicode 32-bit Windows NT4, 2000, and later, and all 64-bit systems All types of applications

32-bit Windows NT-specific installer. It implements all NT-specific functionality (in addition to the common Win32 functions), but does not run on Windows 9x-based systems, because it uses Windows functions that are not implemented on Windows 9x systems.

It will also detect WoW64 situations (i.e., when it runs as a 32-bit application on a 64-bit system) and handle those correctly, both for the 32-bit and the 64-bit portions of the installation, if any.

This Setup program uses Unicode text processing internally and can handle all languages that are installed on the target system.

Note: This Setup program is also used for IA64-only Windows NT platforms, because no IA64-specific version is available.

SetupX64u.exe x64 Unicode All x64 systems (but not IA64 systems) All types of applications

x64 Windows NT-specific installer. It implements all NT-specific functionality but only runs on x64 Windows NT systems. It can install both 32-bit and 64-bit applications on these systems.

This Setup program uses Unicode text processing internally and can handle all languages that are installed on the target system.

The selection of the Setup stubs takes place based on the Setup stub and Platforms... options (see the Build Configuration attributes topic). The Setup stub strategies are used as follows:

Setup stub strategy Stub size* Description
Generic Win32 80 KB

Always uses the 32-bit ANSI Setup32a.exe stub, regardless of the build platforms.

This option is useful if you want to ensure that your installation package always uses an ANSI-based installer, for example if you are using an extension DLL and only want to provide its 32-bit ANSI version.

Smallest size 80 KB

Uses the smallest single SetupXX.exe variation that supports all build platforms.

This usually means the 32-bit ANSI version (Setup32a.exe), unless the Windows 9x platforms are excluded. In that case, the 32-bit Unicode Setup32u.exe is always chosen, because it is the smallest of the NT-based installers.

Regular 80-105 KB

Uses only 32-bit Setup programs, but includes both ANSI and Unicode versions if required.

This option is a good compromise between size and performance: it will provide Unicode text processing on Windows platforms that support it, but without increasing the size of the distribution package by more than 40 KB.

Best performance 80-185 KB

Includes all SetupXX.exe variations that are required for the various target platforms, but no more. For example, if the Windows 9x versions are not included in the build Platforms, then Setup32a.exe is not included either.

This option ensures that your installer uses the most appropriate installer for each target platform, including Unicode text processing on NT-based platforms and x64-specific installers on x64-based platforms, at the expense of a slightly bigger installation package.

In practice the additional overhead is small because all included Setup stubs are compressed together. A single stub is approximately 80 KB compressed; the two x86 stubs together are 115 KB, and all three stubs compressed together are 200 KB (because the x64 stub doesn't compress very well with the x86 stubs). These sizes are typically very small compared to the remainder of the installation package.

*Approximate compressed size of all included Setup stubs. An additional 20 KB is required for the pre-Setup loader.

The actual Setup stubs that are used are shown in the following table of build platforms versus Setup stub strategies:

Included build platforms
Setup stub strategy
9x
NT/32
NT/x64
NT/IA64
Generic Win32
Smallest size
Regular
Best performance
x       Setup32a Setup32a Setup32a Setup32a
x x     Setup32a Setup32a Setup32a + Setup32u Setup32a + Setup32u
x x x   Setup32a Setup32a Setup32a + Setup32u Setup32a + Setup32u + SetupX64
x x   x Setup32a Setup32a Setup32a + Setup32u Setup32a + Setup32u
x x x x Setup32a Setup32a Setup32a + Setup32u Setup32a + Setup32u + SetupX64
x   x   Setup32a Setup32a Setup32a + Setup32u Setup32a + SetupX64
x   x x Setup32a Setup32a Setup32a + Setup32u Setup32a + Setup32u + SetupX64
x     x Setup32a Setup32a Setup32a + Setup32u Setup32a + Setup32u
  x     Setup32a Setup32u Setup32u Setup32u
  x x   Setup32a Setup32u Setup32u Setup32u + SetupX64
  x   x Setup32a Setup32u Setup32u Setup32u
  x x x Setup32a Setup32u Setup32u Setup32u + SetupX64
    x   Setup32a Setup32u Setup32u SetupX64
    x x Setup32a Setup32u Setup32u Setup32u + SetupX64
      x Setup32a Setup32u Setup32u Setup32u

Related topics

Build Configuration attributes