Если вы посмотрите на примеры распространения CAPICOM SDK, в частности \Samples\vbs\CVersion.vbs
, вы увидите пробный способ проверки возможности определения номера версии библиотеки. В начале этого сценария автор пытается инициализировать объект CAPICOM.Store
и открывает хранилище корневых сертификатов (для последующего использования):
' Open the machine Root store, since it is safe to assume it always has some certs in it.
Set oStore = CreateObject("CAPICOM.Store")
oStore.Open CAPICOM_LOCAL_MACHINE_STORE, "Root", CAPICOM_STORE_OPEN_READ_ONLY
If Err.Number <> 0 Then
GetCAPICOMVersion = CAPICOM_NOT_INSTALLED
Exit Function
End If
, поскольку нет единой функции API, которая бы сообщала о состоянии установки CAPICOM (или, например, версия), я бы черпал вдохновение из упомянутого скрипта, за исключением того, что я бы только попытался инициализировать некоторые из COM-объектов CAPICOM (существующих в нужной версии), предполагая, что в случае сбоя CAPICOM не установлен:
[Code]
function IsCapiComInstalled: Boolean;
begin
Result := True;
try
CreateOleObject('CAPICOM.Store'); { try to initialize CAPICOM.Store object }
except
Result := False; { if that fails, CAPICOM is not installed }
end;
end;
Такую вспомогательную функцию вы можете затем использовать для параметра Check
в выбранном вами разделе секции скрипта.