Created a Setup file developed in c# in VS-2013, Dotnet4 framework and for 32bit Architecture. It is getting installed in windows 7 and windows 8 but not in Windows XP (SP3)
I'll attempt to document the basic problem. At issue is a DLL that gets embedded in the MSI that provides custom actions that the installer uses, like the CheckFx()
function that fails here. A helper function that checks the installed .NET Framework version. You'll find it back on your machine in C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\VSI\bin\dpca.dll.
Core problem is that this DLL is no longer compatible with XP. VS2012 was the first VS version that started changing the minimum required Windows version for executables. Something you can see by running Dumpbin.exe /headers dpca.dll
from the Visual Studio Command Prompt. The output, trimmed to fit:
Dump of file dpca.dll
PE signature found
File Type: DLL
...
OPTIONAL HEADER VALUES
10B magic # (PE32)
12.00 linker version
34200 size of code
8800 size of initialized data
0 size of uninitialized data
133E3 entry point (100133E3)
1000 base of code
36000 base of data
10000000 image base (10000000 to 1003FFFF)
1000 section alignment
200 file alignment
6.00 operating system version // <=== here
10.00 image version
6.00 subsystem version // <=== here
0 Win32 version
... etc
Note the marked version numbers, 6.00 is the Windows version of Vista. XP belongs to the previous generation, major version 5. Inevitably the custom action fails, the DLL cannot be loaded on XP.
Working around this problem is technically possible, you need to replace dpca.dll with an older version, one that can still work on XP. You need access to an earlier version of VS, 2010 or less. The topic of this Q+A.
Otherwise yet another reminder that XP truly is over and done with. Pass the support cost on to your clients and they tend to start doing the right thing :) Can't help with that however.
I was using Visual Studio Installer From Microsoft, after googling around with no answers I decided to try out InstallShield Limited Edition from Flexera Software. This successfully installed on my Windows XP machine.