Наш установщик WiX развертывает приложение .NET 4.0 WinForms для Windows Vista и 7 настольных компьютеров. Приложение включает Portable Class Library, для которого требуется .NET patch (KB2468871). Мы должны установить исправление как необходимое условие. Существуют различные способы применения патча:
- Загрузите патч KB2468871 и установите его
- Установите Portable Library Tools
- В качестве предпосылки использования ClickOnce (может быть вариант # 1)
Используя совет аналогичный вопрос, я создал CustomAction
, чтобы проверить, что QFE (# 1), который я продемонстрировал, возвращает true при обнаружении.
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;
}
К сожалению, это не удается на моей машине dev, поскольку патч был установлен как часть инструментов (# 2). Я еще не видел ситуацию № 3.
Каков лучший способ определить, был ли применен патч?