Проверка распространяемых пакетов 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?

0 ответов

Другие вопросы по тегам