cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
redbox
Level 4

Installing x64 and x86 binaries on Vista (x64)

Our product includes two parts: a 64-bit program and a 32-bit program.

Conventionally, on Vista (x64), 64-bit application will be installed to \program files\, and 32-bit application will be installed to \program files (x86).

But I really don't want to split our product into two places that way. Can I install both of them into the \program files\ dir? Does Vista decide whether a program should be running on native x64 or WOW64 based on its location or the binaries/manifests?

Thanks!
Labels (1)
0 Kudos
(2) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Based on what my understanding, rather than any specific documentation to this effect, 64-bit Windows will run a given executable based on its contents; if it's a 32-bit executable, it will be run as a 32-bit process; if a 64-bit executable, it will be run as a 64-bit process. To help avoid various issues that can arise if a 32-bit process tries to load a 64-bit DLL or (64-bit tries to load a 32-bit DLL), there are some measures in place which try to keep these files separate.

These measures are fairly strong in some parts of the filesystem and registry - specifically the Windows\System32 and Windows\SysWOW64 folders and the Wow6432Nodes in the registry, but they're fairly weak in others. The Program Files and Program Files (x86) folders are weaker, as applications looking up the base folder will get different results, but can still access files in the other location with just the path.

That's all a long winded way of saying that Windows won't stop you from putting 32-bit files in the Program Files folder, or 64-bit ones in Program Files (x86), and they should run correctly, so long as they don't try to load the wrong kind of DLL. In Windows Installer, in order to target a 64-bit folder, the component must be marked 64-bit, the target must be a 64-bit folder, and the installer must be a 64-bit installer, which would result in some cognitive dissonance if you put a 32-bit file in a 64-bit component. In your case, 64-bit files in 64-bit components in 32-bit folders won't cause a problem, but may look incorrect sometime down the road (so make a note somewhere as to why).
0 Kudos
redbox
Level 4

Michael, Thanks a lot for your explanation!
0 Kudos