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

InstallShield 2020

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), the Standalone Build, and the automation interface are also 32-bit applications. Therefore, the same platform-specific differences occur for these tools.

Loading the Automation Interface

The automation interface is a 32-bit interface; therefore, it must be loaded from a 32-bit process. If you are using the automation interface on a 64-bit machine, you may need to load the automation interface through a 32-bit executable file. Otherwise, you may encounter errors.

For more information, see Using the Automation Interface on a 64-Bit System.

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 and Folders 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 a component that is marked as 64 bit. Simply dragging 64-bit data from the source panes in the Registry view to a location in one of the destination panes of the view does not mark the component as 64 bit. For more information, see the following:

Targeting 64-Bit Operating Systems
Dragging and Dropping Registry Entries to Create Registry Keys

Extracting COM Data from 64-Bit COM Servers

If you want to extract COM data from a 64-bit COM server at design time or at build time, you must be using InstallShield on a 64-bit operating system. If you use InstallShield on a 32-bit system, 64-bit COM extraction is not available.

To learn about extracting COM data, see Extracting COM Registration Data at Build Time.

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.

Scanning 64-Bit .NET Assemblies for Dependencies and Properties

If you use InstallShield on a 64-bit version of Windows Vista or later or a 64-bit version of Windows Server 2008 or later, and you use one of the built-in methods for detecting dependencies, InstallShield can scan for 64-bit dependencies of the 64-bit .NET assemblies in your project.

These methods also scan for 32-bit dependencies of the 32-bit .NET assemblies in your project.

Note that if you use InstallShield on a 32-bit version of Windows, these built-in scans can check for only 32-bit dependencies of the 32-bit files in your project. If your project includes 64-bit files, you can manually add any dependencies to the project as needed.

To learn more, see the following:

Identifying Properties and Dependencies of .NET Assemblies
Scanning 64-Bit .NET Assemblies for 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