Normally it is a good idea to keep older .NET Framework versions. For example if you only have .NET Framework 4 installed and a software requires .NET Framework 3.5 a dialog box as below can be seen during installation. The solution is to install the version the dialog box indicates.
A dialog box showing something like this can be seen: This setup requires the .NET Framework version 3.5. Please install the .NET Framework and run this setup again. The .NET Framework can be obtained from the web. Would you like to do this now?
In the setup log found in %TEMP% this can be seen for example:
Install state for .NET Framework 1.0: not installed.
Install state for .NET Framework 1.1: not installed.
Install state for .NET Framework 2.0: installed with service pack 2.
Install state for .NET Framework 3.0: not installed.
Install state for .NET Framework 3.5: not installed.
Install state for .NET Framework 4 Client: installed with no service packs.
Install state for .NET Framework 4 Full: installed with no service packs.
To find out what Framework is installed and also if it’s working as expected use .NET Framework Setup Verification Tool.
Using Visual Studio setup project the launch condition is set to .NET Framework 3.5 as requirement on the target machine. Checking the MSI using Orca, VSDFrameworkVersion is v3.5 and VSDAllowLaterFrameworkVersions is set to True. So even though later versions are allowed you still need the required version, in this case v3.5. Lesson learned is that you cannot specify system requirement like .NET Framework v3.5 or later.