Developing and Building Installations on 32-Bit vs. 64-Bit Systems

InstallShield 2020 Express Edition

InstallShield is a 32-bit application that runs on both 32-bit and 64-bit systems. In some cases, InstallShield behaves differently, depending on whether you are using it on a 32-bit system or a 64-bit system; you may also encounter differences depending on which operating system you are using. The following sections explain these differences.

Note that like InstallShield, the command-line build (ISCmdBld.exe)is also a 32-bit application. Therefore, the same platform-specific differences occur for this tool.

Adding System Files to Your Project

When you are using InstallShield on a 64-bit system and you want to add to your project a system file whose source location is the 64-bit System folder (System32) on your development machine, it is not possible to drag the file from one of the source computer panes at the top of the Files view to the appropriate location in one of the destination computer panes.

To add a 64-bit System32 file on your development machine to your InstallShield project, you can browse to the Sysnative folder on your machine and then select the appropriate file for your project. To learn more, see Adding Files from Your 64-Bit Source Machine’s 64-Bit System32 Folder.

Viewing Both the 32- and 64-Bit Areas of the Source Machine’s Registry on 64-Bit Development Systems

If you are using InstallShield on a 64-bit development system, the Registry view in InstallShield displays both the 32-bit and 64-bit areas of your machine’s registry:

HKEY_LOCAL_MACHINE\Software
HKEY_LOCAL_MACHINE\Software\Wow6432Node

This support enables you to drag and drop entries from those source areas to the appropriate areas in the destination pane of this view when you are configuring registry data changes for your project.

Note that if you want your installation to install registry data to a 64-bit area of the registry on 64-bit target systems without having it redirected to a 32-bit area, you must place the registry data in the HKEY_LOCAL_MACHINE\SOFTWARE (64-Bit) node in the destination pane in the Registry view. Simply dragging 64-bit data from the source panes in the Registry view to a non-64-bit location in one of the destination panes of the view does not mark the component as 64 bit. For more information, see Challenges of Supporting Both 32-Bit and 64-Bit Target Operating Systems.

Scanning 64-Bit Files for Dependencies

If you use the dependency scanners in InstallShield to help you identify dependencies that you may need to add to your project, these scanners can check 64-bit files in your project for dependencies only if you are using InstallShield on a 64-bit operating system.

If you are using InstallShield on a 32-bit system, the dependency scanners in InstallShield cannot check 64-bit files in your project for dependencies. To add 64-bit dependencies to a project on a 32-bit system, consider manually adding the required files and merge modules to your project.

To learn about scanning files for dependencies, see Identifying Application Dependencies.

Using 64-Bit .NET Installer Classes and COM Interop

If you are using InstallShield on a 64-bit version of Windows, the .NET tab on the Options dialog box—which is displayed when you click Options on the Tools menu in InstallShield—lets you specify different paths for the 32-bit and 64-bit locations of the Regasm.exe and InstallUtilLib.dll files that are included with the .NET Framework. InstallShield uses the paths that you specify at build time for releases that include .NET installer classes and COM interop.

If you are building from the command line with ISCmdBld.exe on a 64-bit version of Windows, and you use the existing -t parameter to specify the path of the 32-bit version of the .NET Framework, ISCmdBld.exe uses the 64-bit location of Regasm.exe and InstallUtilLib.dll for 64-bit .NET installer classes and COM interop.

If you are building through MSBuild or Team Foundation Server (TFS) and you use the existing DotNetUtilPath parameter on the InstallShield task to specify the path of the 32-bit version of the .NET Framework, the build uses the 64-bit location of Regasm.exe and InstallUtilLib.dll for 64-bit .NET installer cases and COM interop.

Note that if you are using InstallShield on a 32-bit operating system, the setting for the 64-bit location is disabled, and only 32-bit support for .NET installer cases and COM interop is available. This support also applies to building from the command line with ISCmdBld.exe, and building through MSBuild or TFS.

To learn more, see:

.NET Tab (on the Options dialog box)
IsCmdBld.exe
Microsoft Build Engine (MSBuild)

See Also