Обнаруживать и требовать наличия Windows QFE / patch для во время установки

Наш установщик WiX развертывает приложение .NET 4.0 WinForms на настольных компьютерах с Windows Vista и 7.Приложение включает переносимую библиотеку классов , для которой требуется патч .NET (KB2468871). В качестве обязательного условия нам необходимо установить патч. Существует несколько способов применения исправления:

  1. Загрузите исправление KB2468871 и установите его
  2. Установите Portable Library Tools
  3. в качестве предварительного условия с помощью 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;
}

К сожалению, это не удается на моей машине разработчика, поскольку патч был установлен как часть инструментов (# 2). Я еще не был свидетелем ситуации №3.

Как лучше всего определить, было ли применено исправление?

15
задан Community 23 May 2017 в 11:54
поделиться