Nuestro instalador de WiX implementa una aplicación .NET 4.0 WinForms para Windows Vista y 7 escritorios. La aplicación incluye un Portable Class Library que requiere un .NET patch (KB2468871). Necesitamos instalar el parche como un requisito previo. Hay varias maneras de que el parche se puede aplicar:Detecta y requiere un Windows QFE/parche durante la instalación
- Descargar el parche KB2468871 e instalarlo
- Instalar el Portable Library Tools
- Como requisito previo mediante ClickOnce (podría ser una variación de # 1)
Usando el asesoramiento de a similar question, creé un CustomAction
para verificar el QFE (n. ° 1) que demostré. Devuelve verdadero cuando se encuentra.
private static bool IsPatchAlreadyInstalled()
{
// If the patch is installed, we can find it using WMI
var query = new SelectQuery("SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID = 'Q2468871' OR HotFixID = 'KB2468871'");
var results = new ManagementObjectSearcher(query).Get();
return results.Count > 0;
}
Por desgracia, esto no funciona en mi máquina dev como el parche se ha instalado como parte de las herramientas (# 2). No he sido testigo de la situación n. ° 3 todavía.
¿Cuál es una mejor manera de detectar si se aplicó el parche?
Estamos verificando este enfoque. ¡Gracias por su respuesta! –