2

我的应用程序使用 CAPICOM。有的机器可能没有安装,需要安装程序安装。我已经添加了 msi 安装程序以在安装我的应用程序时运行。

如果安装了 CAPICOM 以避免冗余安装,是否有任何方法可以在 Inno Setup 中进行测试?

4

1 回答 1

4

如果您查看 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

由于没有可以报告 CAPICOM 安装状态(或版本)的平面 API 函数,我会从上述脚本中获得灵感,除了我只会尝试初始化一些 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所选脚本部分项目中的参数。

于 2019-11-02T00:25:59.107 回答