gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:08:18 26 4
gpt4 key购买 nike

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

谢谢!

最佳答案

我花了一天的时间才弄清楚如何实现这一目标,但我最终设法让它在一个虚拟项目上运行。

设置:

这个想法是从InstallShield的Precompression运行批处理命令和Postbuild事件。 .msiPrecompression 中签名事件,并且安装可执行文件在 Postbuild 中签名事件。

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

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

第 2 步 - 准备 InstallShield 项目

  • 在“路径变量”下添加以下值:
    • SignToolFolder - Signtool.exe 所在的路径
    • CertificateThumbprint - 第 1 步中提取的证书指纹
  • 在“版本”下,选择您的版本,然后转到“事件”选项卡。
  • 预压缩事件中写入(将 Test.msi 和路径替换为您的 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
  • 构建后事件中写入: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> 访问的。 ,不是%Var%就像常规 Windows 命令行一样。
  • 如果您必须对安装内容进行签名,则此方法将不起作用。如果需要 - 在运行 IS 之前在外部对其进行签名
  • 除非您喜欢花费无尽的时间与蹩脚的软件作斗争,否则请勿在项目名称/路径中包含空格
  • 仅当您实际登录计算机时签名才有效。远程 session (RDP、VNC 等)不起作用
  • 切换到 Wix :)

关于InstallShield使用EV代码+硬件 token 对代码进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com