Microsoft designed 64-bit versions of Windows to allow existing 32-bit applications to work seamlessly on 64-bit versions of Windows. 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.
In some cases, such as installation, what is normally a beneficial separation becomes a challenge. Typically, installers 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.
To provide support for allowing existing 32-bit applications to work on 64-bit versions of Windows, most 64-bit versions of Windows use 32-bit Windows-on-Windows (WOW64) emulation. This WOW64 emulation support isolates the 32-bit and 64-bit files from each other by storing their files in separate locations.
A 64-bit target system typically has two Program Files folders:
- Program Files, which is for 64-bit applications
- Program Files (x86), which is for 32-bit applications
A 64-bit target system typically has two Common Files folders (one in either Program Files folder):
- Program FilesCommon Files, which is for 64-bit applications
- Program Files (x86)Common Files, which is for 32-bit applications
A 64-bit target system also typically has two system folders:
- System32, which is for 64-bit libraries and executable files
- SysWOW64, which is for 32-bit libraries and executable files
Because of this structure, if an end user runs a 32-bit installer on a 64-bit version of Windows that uses WOW64 emulation, files that you may want to be installed to 64-bit file locations may be redirected to 32-bit file locations (such as Program Files x86). However, on 32-bit systems, those files are installed to Program Files.
The isolation of 32-bit and 64-bit data from each other on 64-bit systems also occurs in the registry. A 64-bit target system typically has two HKEY_LOCAL_MACHINESoftware keys:
- HKLMSoftware, which is for 64-bit applications
- HKLMSoftwareWow6432Node, which is for 32-bit applications
Because of this separation, if an end user runs a 32-bit installer on a 64-bit version of Windows that uses WOW64 emulation, registry data that you may want to be installed to 64-bit HKLMSoftware locations may be redirected to HKLMSoftwareWow6432Node. On 32-bit systems, such registry data are installed to HKLMSoftware.
As you manage 32-bit and 64-bit Windows-based locations, it’s important to be aware of this structure for file adjustments as needed. If you have tips to add, please share!
InstallShield® is the world’s leading Windows installation development solution. InstallShield is designed to enable development teams to be more agile, collaborative and flexible when building reliable InstallScript and Windows Installer MSI installations for desktop, server, Web, virtual and traditional applications. The software installer of choice for today’s sophisticated application producers, InstallShield is the only software installer that can directly convert MSIs to Microsoft App-V virtual packages. Get your free trial of InstallShield today or contact us for more information.
InstallAnywhere is the leading multiplatform development solution for application producers who need to deliver a professional and consistent cross installation experience for physical, virtual and cloud environments. From a single project file and build environment, InstallAnywhere creates reliable installations for on-premises platforms – Windows, Linux, Apple OS X, Solaris, AIX , HP-UX, and IBM iSeries – and enables you to take existing and new software products to a virtual and cloud infrastructure and build Docker containers. Get your free trial of InstallAnywhere or contact us for more information.