Проверка распространяемых пакетов VC2015 (обновление не обновляется, обновляется 1 или обновляется 2) после обновления Windows 7 до 10
У меня есть программное обеспечение, которое проверяет, установлен ли распространяемый x86 для Visual C++ 2015 перед загрузкой и вызовом DLL, которая в этом нуждается. Проверка осуществляется через вызов взаимодействия MsiQueryProductState
, используя следующую декларацию
[DllImport("msi.dll", SetLastError = true)]
public static extern INSTALLSTATE MsiQueryProductState(string product);
и вызов
Win32API.MsiQueryProductState("{A2563E55-3BEC-3828-8D67-E5E8B9E8B675}")
который работал, и до сих пор работает на других машинах с Windows 10 и оригинальной, не обновленной распространяемой установленной.
Я использую VS2015 с обновлением 2 для разработки на C# Windows Desktop, который включает в себя распространяемое обновление 2.
Несколько недель назад я обновил Windows 7 до Windows 10, а вчера узнал, что чек не вернулся INSTALLSTATE_DEFAULT
возвращаться INSTALLSTATE_UNKNOWN
, Я не уверен, что это как-то связано с проблемой, так как я узнал об этом только после обновления.
После поиска в Google и ничего не нашел, я искал реестр и распространяемый файл журнала установки, и я нашел следующие ключи
{BD9CFD69-EB91-354E-9C98-D439E6091932}
{2e085fd2-a3e4-4b39-8e10-6b8d35f55244}
{B5FC62F5-A367-37A5-9FD2-A6E137C0096F}
{BE960C1C-7BAD-3DE6-8B1A-2616FE532845}
но у меня нет ни малейшего представления, правильно ли я это делаю - первые два возвращаются INSTALLSTATE_UNKNOWN
и последние два возвращаются INSTALLSTATE_DEFAULT
, Что работает, но я не знаю, правильно ли это. Я думал, что все версии и обновления будут использовать один и тот же ключ.
Итак, вопрос, который я пытаюсь задать: какие ключи мне следует запрашивать, чтобы узнать, установлена ли совместимая версия распространяемых пакетов x86 для Visual C++ 2015, будь то обновление, обновление 1 или обновление 2?