Проверьте, установлен ли VC ++ Redistributable 10 через Perl-скрипт. - PullRequest
0 голосов
/ 15 мая 2019

Я пишу Perl-скрипт, чтобы проверить, установлен ли Visual C ++ Redistributable 2010 x64 в системе.

Я столкнулся с двумя способами в соответствии с https://blogs.msdn.microsoft.com/astebner/2010/05/05/mailbag-how-to-detect-the-presence-of-the-visual-c-2010-redistributable-package/

Чтобы прочитатьреестр для соответствующей записи.или использовать MsiQueryProductStateA

Использование Win32::TieRegistry невозможно без параметра для каждой настройки.

, но использование use Win32::API является опцией

Попытка использования MsiQueryProductStateA с Win32::API

use Win32::API;
$function = Win32::API::More->Import(
    'msi', 'INSTALLSTATE  MsiQueryProductStateA(LPCSTR szProduct)'
);

Предполагается получить некоторое допустимое возвращаемое значение, но с ошибкой

Win32::API::parse_prototype: WARNING unknown output parameter type 'INSTALLSTATE' at C:\Program Files\HP\HP BTO Software\nonOV\Perl\a\lib/5.26.2/MSWin32-x64-multi-thread/Win32/API.pm line 600. 4294967294

Может кто-нибудь, пожалуйста, пролить свет на то, как использовать / импортировать возвращаемый тип какну и как этим пользоваться?

Заранее спасибо

1 Ответ

0 голосов
/ 16 мая 2019

Покажите, как реализовать в C ++ (не в Perl), на который вы можете ссылаться.

Я установил Распространяемый Microsoft Visual C ++ для Visual Studio 2015, 2017 и 2019 .

enter image description here

enter image description here

Возвращаемое значение 5 указывает « Продукт установлен для текущего пользователя. »

Найдите код продукта в реестре следующим образом:

HKEY_CLASSES_ROOT \ Installer \ Зависимости \ Microsoft.VS.VC_RuntimeAdditionalVSU_x86, v14

...