I've created an application which targets the .NET Framework 4.5.1 and has been running on quite a few Windows 7 Professional systems with no problems. We recently purchased a few Windows Embedded 8 Standard thin clients (IA64) to test the application running natively on those systems.
I ran the .NET 4.5.1 installer on the thin client and verified that 4.5.1 was indeed installed on the system (by checking the registry for the appropriate DWORD values as instructed here)
The application will not run and gives me a dialog popup stating "This application requires one of the following version of the .NET Framework: .NETFramework,Version=v4.5.1". The app.config for this application has the following nodes
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
From what I understand of the above snippet, it is properly configured and should work fine and in fact does on the Windows 7 Professional systems.
The confusing part for me is that if I remove that entire <startup> node from the app.config file, the application runs fine but refuses when the startup node is present. Is there any issues with the .NET Framework 4.5.1 on a Windows Embedded 8 Standard system? Am I possibly doing something wrong?
I know I can just remove the node and be done with it, but I would really like to know why this is happening instead of just mindlessly making it work.
UPDATE
I did some further research and it appears that on a normal system (Windows 8) the .NET installer will add the following key to the registry (among a few others) but these are not created by the installer when run on a Windows Embedded 8 Standard system (keep in mind that the installer does not fail and does not report any issues).
HKLM\Software\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.5.1
The above key is completely missing after installing the framework on the embedded system which causes the warning to popup. If I remove this key from a system that has it and try to run the application I get the same warning popup behavior; so my guess is that it's tied to this in some way.