Targeting 64-Bit Operating Systems

InstallShield 2015

Microsoft designed 64-bit versions of Windows to allow existing 32-bit applications to continue to work seamlessly. They also designed 64-bit versions of Windows in such a way to allow a recompiled version of the same code to work seamlessly as a 64-bit application. To provide this support, 64-bit versions of Windows isolate the 32-bit and 64-bit from each other in two main ways: their files are stored in separate locations (Program Files vs. Program Files (x86); System32 vs. SysWow64), and their registry keys are separated (HKLM\Software vs. HKLM\Software\Wow6432Node).

In some cases, such as installation, what is normally a beneficial separation becomes a challenge. Typically installations are 32-bit applications themselves (in order to run on 32-bit machines), and accessing 64-bit locations to install a 64-bit application is more complex than a standard file copy or registry write. Each project type that is available in InstallShield handles this complexity in different ways.

Windows Installer–based installations disallow access to 64-bit locations except when the installation targets only 64-bit systems; however, they support running 64-bit DLL code whenever running on a 64-bit system. Note that some target systems—such as Windows Server Core systems—may not have 32-bit Windows-on-Windows (WOW64) support. InstallShield lets you create pure 64-bit installations that work on those systems. For more information, see Targeting 64-Bit Operating Systems with Basic MSI and InstallScript MSI Installations.

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. For additional details, see Targeting 64-Bit Operating Systems with InstallScript Installations.

Suite/Advanced UI and Advanced UI installations enable you to reference either 32-bit or 64-bit locations, and they can launch 32-bit or 64-bit installations, depending on the target system. However, all extension DLL code in a Suite/Advanced UI or Advanced UI project must be 32 bit. To learn more, see Targeting 64-Bit Operating Systems with Suite/Advanced UI and Advanced UI Installations.