Targeting 64-Bit Operating Systems with InstallScript Installations

InstallShield 2012 Spring

Project: This information applies to InstallScript projects.

With a single InstallScript project, you can create one installation that installs to 32-bit locations on 32-bit systems, and to 64-bit and 32-bit locations as needed on 64-bit systems.

InstallScript installations are always 32-bit so they can run only 32-bit DLL code (or launch 32-bit or 64-bit .exe files). However, all InstallScript installations support accessing 64-bit locations through the 64-bit component setting, as well as through other methods.

Reading from and Writing to the 64-Bit System32 Folder

InstallScript includes the following system variables that let you choose between 32-bit and 64-bit System32 folders on target systems:

WINSYSDIR
WINSYSDIR64

Although the WINSYSDIR64 variable is set to the 64-bit Windows folder, 64-bit Windows includes functionality to automatically redirect 32-bit applications (such as the InstallScript engine) to the 32-bit System32 folder (SysWOW64). Therefore, if you are installing files or folders to WINSYSDIR64, you can disable file system redirection by placing the folders or files in a component that is marked as 64 bit. To specify that a component is 64 bit, select Yes for the component's 64-Bit Component setting. For more information about the 64-Bit Component setting, as well as additional component settings, see Component Settings.

As an alternative, you can use the constant WOW64FSREDIRECTION with the functions Disable and Enable to disable 64-bit Windows file system redirection while writing to or reading from the WINSYSDIR64 folder through your InstallScript code, and then re-enable it once the write or read is complete. Since some Windows functionality that could be used by the installation requires that redirection be enabled to work, Windows documentation recommends that you disable redirection only for as long as necessary.

Reading from and Writing to Other 64-Bit Destination Folders

InstallScript includes several addition system variables that let you choose between other 32-bit and 64-bit locations on target systems:

COMMONFILES
COMMONFILES64
FOLDER_APPLICATIONS
FOLDER_APPLICATIONS64
PROGRAMFILES
PROGRAMFILES64

Reading from and Writing to 64-Bit Registry Locations

The 64-bit version of Windows includes functionality that maps some 64-bit registry locations to 32-bit equivalents. For example, on a 64-bit version of Windows, HKEY_LOCAL_MACHINE\Software\Wow6432Node is the 32-bit equivalent of HKEY_LOCAL_MACHINE\Software.

If you want to install registry data to a 64-bit area of the registry without having it redirected to a 32-bit area, you can place the registry data in a component that is marked as 64 bit. To specify that a component is 64 bit, select Yes for the component's 64-Bit Component setting. For more information about the 64-Bit Component setting, as well as additional component settings, see Component Settings.

As an alternative, you can use the REGDB_OPTION_WOW64_64KEY option with the REGDB_OPTIONS variable to avoid registry redirection while editing the registry or reading from the registry through your InstallScript code, and then use the REGDB_OPTION_USE_DEFAULT_OPTIONS option with REGDB_OPTIONS to enable changes to the 32-bit area of the registry. Since some Windows functionality that could be used by the installation requires that redirection be enabled to work, Windows documentation recommends that you disable redirection only for as long as necessary.

Installing Self-Registering 64-Bit COM Servers

InstallShield supports 64-bit self-registration of COM servers. For the component that contains the self-registering DLL, .exe, .tlb, or .olb file, select Yes for the component's Self-Register setting.

Note that 32-bit self-registering files should not be installed to the 64-bit System32 folder, since file system redirection cannot be disabled for self-registration. Thus, if you have a 32-bit self-registering COM server that needs to be installed to the 32-bit System32 folder, ensure that No is selected for the 64-Bit Component setting of the component that contains the COM server.

About Add or Remove Programs Information

InstallScript installations do not support reading or writing Add or Remove Programs information in the 64-bit part of the registry. Therefore, InstallScript installations always install Add or Remove Programs information in the 32-bit part of the registry. In addition, the REGDB_OPTION_WOW64_64KEY option does not disable registry reflection for registry functions such as CreateInstallationInfo, MaintenanceStart, RegDBGetItem, RegDBSetItem, RegDBGetAppInfo, RegDBSetAppInfo, and RegGetUninstCmdLine.

See Also