Nasz instalator WiX wdraża aplikację WinForms .NET 4.0 na Windows Vista i 7 komputerów stacjonarnych. Aplikacja zawiera Portable Class Library, która wymaga .NET patch (KB2468871). Musimy zainstalować poprawkę jako warunek wstępny. Istnieją różne sposoby, że łatka może być zastosowane:Wykryj i wymagaj Windows QFE/patch podczas instalacji
- pobrać poprawkę KB2468871 i zainstalować go
- Zainstalować Portable Library Tools
- Jako warunek przy użyciu ClickOnce (może być odmianą # 1)
Korzystając z porady od a similar question, stworzyłem CustomAction
, aby sprawdzić, czy QFE (nr 1), który pokazałem, zwraca wartość true, gdy zostanie znaleziony.
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;
}
Niestety, to nie powiedzie się na moim komputerze, ponieważ łatka została zainstalowana jako część narzędzi (# 2). Nie byłem jeszcze świadkiem sytuacji nr 3.
Jaki jest lepszy sposób na wykrycie, czy plaster został zastosowany?
Weryfikujemy to podejście. Dziękuję za Twoją odpowiedź! –