I know that on 64bit Windows 32 bit applications go into C:\Program Files (x86)
by default, and 64-bit into C:\Program Files
.
But what if you have a more complex installation package including, say, one client component (32-bit) and one server component (64-bit) and possibly a few helper tools (32-bit). What should the default install path be in this case?
According to some articles, mixing bitness is discouraged by Microsoft and some installation frameworks:
- Single MSI to install correct 32 or 64 bit c# application
- http://jpassing.com/2009/10/09/mixing-32-and-64-bit-components-in-a-single-msi
I fail to see why mixing these should be such a big no-no, considering how well x64 platform runs x86 applications and even more so with managed code where the very same binaries can run in both modes. In my case, 75% of the accompanying libraries are shared between client and server and are completely identical, so it does not make sense to split them up.
So given this, which is the preferred install location for this mix of 32 and 64-bit applications? C:\Program Files (x86)
or C:\Program Files
? As I see it, the 64-bit location is preferrable. I see the Program Files (x86) directory as a legacy sandbox for old applications who were never designed for 64-bit applications in mind. In the case of a hybrid 32/64-bit application, 64-bit awareness exists and so there should be no legacy reasons to sandbox the 32-bit files away from the 64-bit ones. To me, the path without "(x86)" is also more visually appealing and indicates that it's a modern application - adapted for 64-bit operation (where necessary).
Does anybody know of other reasons for or against placing a 32/64-bit mix of executables into the 64-bit directory when installed as one application in the same installer package?
As far as I know, that only reason that it is discouraged is that very issue you mentioned, where would its default install path go? I am in agreement with you, if a default path was decided upon, then it would make it easier to synergies two bit types, and make more complex programs possible. Hope this helps! :)