InstallShield使用EV代码+硬件令牌对代码进行签名

问题描述 投票:0回答:1

我们需要通过带有硬件令牌的EV代码通过InstallShield 2013 express签署我们的安装,但是无法导出私钥证书文件,因此唯一的方法是使用DigiCertUtil工具手动签署最终的exe文件,但这不是解决方案,因为当安装程序调用msi文件时,Windows仍会弹出未知的发布者,是否有人解决此问题?

谢谢!

installshield code-signing-certificate
1个回答
0
投票

我花了一天的时间来弄清楚如何实现这一目标,但我终于设法让它在虚拟项目上工作。

建立:

我们的想法是从InstallShield的PrecompressionPostbuild事件中运行批处理命令。 .msi在Precompression事件中签名,设置可执行文件在Postbuild事件中签名。

第1步 - 启用批次代码签名

  • 按照Digicert here的说明操作。其他供应商可能有相同的说明。
  • 确保提取正确的证书Thumbprint,并将其用作Signtool的参数。即使您的计算机上没有安装其他证书,我也建议您这样做

第2步 - 准备InstallShield项目

  • 在“路径变量”下添加以下值: SignToolFolder - signtool.exe所在的路径 CertificateThumbprint - 步骤1中提取的证书指纹
  • 在“版本”下,选择您的版本,然后转到“活动”标签。
  • 在预压缩事件中写入(用您的msi的名称和路径替换Test.msi和路径​​):cmd /c "<SignToolFolder>\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /sha1 <CertificateThumbprint> <ISReleasePath>\<ISProductConfigName>\<ISReleaseName>\DiskImages\DISK1\Test.msi
  • 在Postbuild事件中写道:cmd /c "<SignToolFolder>\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /sha1 <CertificateThumbprint> <ISReleasePath>\<ISProductConfigName>\<ISReleaseName>\DiskImages\DISK1\setup.exe。再次,根据需要更改setup.exe路径和名称

备注

  • 奇怪的是,使用<Var>访问路径变量,而不是像常规Windows命令行那样访问%Var%
  • 如果您必须签署安装内容,这将不起作用。如果需要 - 在运行IS之前在外部签名
  • 除非你喜欢花费无数时间来打击糟糕的软件,否则不要在项目名称/路径中包含空格
  • 切换到Wix :)
© www.soinside.com 2019 - 2024. All rights reserved.