Eu criei um aplicativo que segmenta o .NET Framework 4.5.1
e foi executado em alguns sistemas Windows 7 Professional
sem problemas. Recentemente, compramos alguns Windows Embedded 8 Standard
thin clients (IA64) para testar o aplicativo executado nativamente nesses sistemas.
Eu executei o instalador do .NET 4.5.1 no thin client e verifiquei que o 4.5.1 estava de fato instalado no sistema (verificando o registro para os valores DWORD apropriados conforme instruído aqui )
O aplicativo não será executado e me fornecerá uma caixa de diálogo indicando "This application requires one of the following version of the .NET Framework: .NETFramework,Version=v4.5.1"
. O app.config
deste aplicativo possui os seguintes nós
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
Pelo que entendi do snippet acima, ele está configurado corretamente e deve funcionar bem e, na verdade, funciona nos sistemas Windows 7 Professional
.
A parte confusa para mim é que, se eu remover todo o nó <startup>
do arquivo app.config
, o aplicativo será executado corretamente, mas recusará quando o nó de inicialização estiver presente. Existe algum problema com o .NET Framework 4.5.1 em um sistema Windows Embedded 8 Standard? Estou possivelmente fazendo algo errado?
Eu sei que posso apenas remover o nó e acabar com isso, mas gostaria de saber por que isso está acontecendo, em vez de simplesmente fazê-lo funcionar.
UPDATE
Fiz algumas pesquisas adicionais e parece que em um sistema normal (Windows 8) o instalador do .NET adicionará a seguinte chave ao registro (entre algumas outras), mas elas não são criadas pelo instalador quando executadas em um Sistema Windows Embedded 8 Standard (tenha em mente que o instalador não falha e não relata nenhum problema).
HKLM\Software\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.5.1
A chave acima está completamente ausente após a instalação da estrutura no sistema embarcado, o que faz com que o aviso seja exibido. Se eu remover essa chave de um sistema que a possui e tentar executar o aplicativo, recebo o mesmo comportamento de popup de aviso; então, meu palpite é que isso está ligado a isso de alguma forma.