¿Por qué mi aplicación .NET 4 sabe que .NET 4 no está instalado

Desarrollé una aplicación que apuntaba a .NET 4 el otro día y XCOPY lo instaló en una máquina con Windows XP. Le había dicho al propietario de la máquina que necesitarían instalar .NET Framework 4 para ejecutar mi aplicación y él me dijo que sí (que no era una fuente confiable). Cuando ejecuté la aplicación, me presentaron un mensaje que decía que esta aplicación requiere .NET Framework 4, ¿me gustaría instalarlo? Al hacer clic en el botón Sí, me llevó al sitio web de Microsoft y unos pocos clics más tarde se instaló .NET 4 y la aplicación se inició correctamente.

En el pasado, la instalación de XCOPY de aplicaciones .NET en una máquina que no tenía la versión correcta de .NET instalada dio como resultado el locking de la aplicación al inicio sin que se presentara información útil al usuario. ¿Por qué fue diferente esta vez?

  1. ¿Estaba integrado en mi aplicación porque apunté a .NET X?
  2. ¿Ya había algo instalado en la máquina de destino?

Me encanta la función. Quiero saber exactamente cómo aprovecharlo en el futuro.

Este es un secreto muy bien guardado. Sucederá cuando orientas .NET 4 y el usuario ejecuta la aplicación cuando .NET 4 no está instalado. O cuando apuntas a una versión anterior y ejecutas la aplicación en Windows 8. El usuario verá este diálogo:

enter image description here

Un poco demasiado asqueroso quizás pero agradable de todos modos. Se describe bien en esta publicación de blog .

Tenga en cuenta que .NET 4 tiene una versión mínima de Windows y un requisito de paquete de servicio. Los mínimos son XP SP3, Vista SP1, Win7 RTM. Entonces, esta no es una solución mágica para instalar el paquete de servicio correcto.