Я думал, что это будет довольно просто, но у меня возникли проблемы с использованием класса PatchInstallation, который является частью Microsoft.Deployment.WindowsInstaller.
Получив правильный код исправления и код продукта (targetcode), я просто вызываю свойство IsInstalled, но выбрасываются ArgumentNullExceptions.
PatchInstallation patchInstallation = new PatchInstallation(patchCode.ToString("B"), productCode.ToString("B"));
return patchInstallation.IsInstalled;
Текст исключения:
Произошло исключение System.ArgumentNullException. Сообщение = значение не может быть нулевым. Имя параметра: String Source=mscorlib ParamName=String
StackTrace: at System.Number.StringToNumber(String str, параметры NumberStyles, NumberBuffer& number, информация NumberFormatInfo, Boolean parseDecimal) at System.Number.ParseInt32(String s, стиль NumberStyles, Информация о NumberFormatInfo) в Microsoft.Deployment.WindowsInstaller.PatchInstallation.get_State() в Microsoft.Deployment.WindowsInstaller.PatchInstallation.get_IsInstalled() InnerException:
Если у кого-то есть идеи, что я делаю неправильно, пожалуйста, дайте мне знать! Ваше здоровье!