如何检查是否安装了 CAPICOM?
How to check if CAPICOM is installed?
我的应用程序使用 CAPICOM。有的机器可能没有安装,需要安装者安装。我已经在安装我的应用程序时将 msi 安装程序添加到 运行。
是否有任何方法可以在 Inno Setup 中测试是否安装了 CAPICOM 以避免冗余安装?
如果您看一下 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 安装状态(或例如版本),我会从提到的脚本中获得灵感,除了我只会尝试初始化一些 CAPICOM COM 对象(存在于所需版本中),假设如果失败,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
参数。
我的应用程序使用 CAPICOM。有的机器可能没有安装,需要安装者安装。我已经在安装我的应用程序时将 msi 安装程序添加到 运行。
是否有任何方法可以在 Inno Setup 中测试是否安装了 CAPICOM 以避免冗余安装?
如果您看一下 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 安装状态(或例如版本),我会从提到的脚本中获得灵感,除了我只会尝试初始化一些 CAPICOM COM 对象(存在于所需版本中),假设如果失败,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
参数。