Por que meu aplicativo .NET 4 sabe que o .NET 4 não está instalado

Eu desenvolvi um aplicativo que tinha como alvo o .NET 4 outro dia e o XCOPY o instalou em uma máquina com Windows XP. Eu tinha dito ao dono da máquina que eles precisariam instalar o .NET Framework 4 para executar meu aplicativo e ele me disse que ele fez (não uma fonte confiável). Quando eu corri o aplicativo me foi apresentada uma checkbox de mensagem que dizia que este aplicativo requer o .NET Framework 4, gostaria de instalá-lo? Clicar no botão Yes me levou ao site da Microsoft e alguns cliques depois o .NET 4 foi instalado e o aplicativo foi lançado com sucesso.

No passado, a instalação de aplicativos .NET XCOPY em uma máquina que não tinha a versão correta do .NET instalada resultava na falha do aplicativo na boot sem nenhuma informação útil apresentada ao usuário. Por que foi diferente desta vez?

  1. Foi incorporado no meu aplicativo porque eu direcionei o .NET X?
  2. Já foi algo instalado na máquina de destino?

Eu amo o recurso. Eu quero saber precisamente como aproveitar isso no futuro.

Este é um segredo bem guardado. Isso acontecerá quando você segmentar o .NET 4 e o usuário executar o aplicativo quando o .NET 4 não estiver instalado. Ou quando você segmenta uma versão anterior e executa o aplicativo no Windows 8. O usuário verá esta checkbox de diálogo:

insira a descrição da imagem aqui

Um pouco gobbledegooky talvez mas nice no entanto. É bem descrito neste post do blog .

Tenha em mente que o .NET 4 possui um requisito mínimo de versão do Windows e service pack. Mínimos são XP SP3, Vista SP1, Win7 RTM. Portanto, esta não é uma solução mágica para obter o service pack correto instalado.