Today i want to take care of some very frequent traps regarding x86/x64.
Runtimes
The question is usually very simple: Which runtime architecture do i have to preinstall for my X86 Application on a Windows x64 Operating System?
For those who dont know what runtimes are ill give some examples:
- Microsoft Visual C++ 2008 Redistributable
- Microsoft SQL Server 2008 Native Client
- Microsoft Core XML Service 6
Short answer: Usually you must match the applications architecture not the operating system ones!
But the exception proves the rule. Lets examine: “Microsoft SQL Server 2008 Native Client”:
When you actually try to install the x86 runtime on a windows x64 it will simply block the installation.
But why? i think microsoft wants to stop those confusing situation by creating packages which simply match the OS Architecture. So people dont have to care about the applications architecture.
Because if you look inside the x64 MSI you will see the following:
As you can see the x64 Installer also contains the x86 version of the SQL Native Client.
ODBC Data Sources / Drivers
Another nightmare which leads to many inquires from our customers.
ODBC Data Sources & Drivers are seperate for each Architecture due to the Registry Redirection mechanism of “Windows on Windows64” (WOW64).
X86 Applications need x86 Data Sources / Drivers and x64 Applications need x64 Data Sources / Drivers.
In our opinion the biggest mistake microsoft has done is just to link to the x64 ODBC Administrator in the Control Panel despite the fact that the application landscape is still mostly x86.
To open you the x86 ODBC Administrator you must manually run:
C:WindowsSysWOW64odbcad32.exe
Those entries will be used for native x86 application. Bear that in mind.
Regards,
Fabio