I've got an executable who's manifest says it depends on
Microsoft.VC90.CRT 9.0.21022.8
Microsoft.VC90.CRT 9.0.30729.1
On Windows 7, this executable runs with no problem. On Windows Server 2008 R2, this executable fails to run with the message:
The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.
This was unexpected - I thought Windows 7 and Windows Server 2008 R2 should be very similar regarding runtime availability. Both machines are pretty clean. The Windows 7 machine is a fresh installation with nothing on it. The Windows Server 2008 R2 machine only has some updates from Windows Update.
I checked the Windows 7 machine's WinSxS directory and found
Microsoft VC90.CRT 9.0.30729.4926
I checked the Windows Server 2008 R2 machine's WinSxS directory and found
Microsoft VC90.CRT 9.0.30729.4926
The runtime that is present is newer than what is specified in the manifest and yet the Windows Server 2008 R2 system fails to redirect to the newer runtime. Running sxstrace on Windows Server 2008 R2 shows:
INFO: Applying Binding Policy
INFO: No publisher policy found.
INFO: No binding policy redirect found.
Running sxstrace on Windows 7 gives:
INFO: Applying Binding Policy
INFO: Find publisher policy at C:\Windows\WinSxS\manifest\amd64...
INFO: Publisher Policy redirected assembly version.
INFO: Post policy assembly identity is...
Any ideas how this could be resolved besides installing the VS 2008 runtime and the VS 2008 SP1 runtime? I thought the whole idea of the assemblies was that it allowed the system to override the older runtimes and substitute the newer ones.