我总是使用Inno Setup进行打包和发布。用户使用链接下载应用程序,例如:https : //oursite.com/codesigned/mysetup.exe
到现在为止,它一直有效。但是最近我必须更新我的代码签名证书,因为它已经过期。续订后,我遇到了SmartScreen问题,每个用户都下载了该应用程序并获得了以前没有的Smartscreen。
我已经使用过signtool.exe verify /pa innosetup-made-myexe.exe
并显示成功,也已通过进行了验证Windows Application Certification Kit
,表明它已通过,但使用警告,所有那些警告主要由Inno Setup生成。
在这里,您可以找到输出,其中在Inno Setup exes上显示警告:
https://docs.google.com/document/d/11frW_GxI0xSVcrAXh4_rqcKBQSaermAlpYKj4xzQi4o/pub
我该如何解决这个问题?
(仍不确定其标准代码签名与EV代码签名是否有关?我已经使用标准代码签名几年了,它始终有效。我可以升级到EV代码签名,但是如何确定它不是Inno Setup编译器问题?如您所见,“警告”已显示在Inno Setup上方的URL中)
要验证是否是Inno Setup或代码签名问题(请参阅https://stackoverflow.com/a/29067585/285594),我已完成以下操作:
从Microsoft,我已经下载了文件调用winqual.exe
,不需要Inno Setup。
我进行了代码签名,winqual.exe
并上传到我的同一台服务器上
我使用Internet Explorer下载了相同的文件,但没有向我显示SmartScreen,但该文件有效。
如果Inno Setup是此问题的主要原因,现在是否有意义?
如今,您必须使用EV代码签名证书。
请参阅将Microsoft SmartScreen信誉转移到更新的证书。
以下是原始答案,该答案解决了该问题的一些具体问题。
如果您认为问题是由于未签名的卸载程序引起的,请确保相应地设置SignTool
Inno Setup项目的指令。并确保SignedUninstaller
指令具有其默认值yes
。
引用SignTool
指令文档:
指定用于对安装程序进行数字签名的“签名工具”的名称和参数(如果SignedUninstaller设置为,则为“卸载”
yes
)。当安装程序具有有效的数字签名时,用户在启动它时将不会看到“未识别程序”警告。
如果要为卸载程序设置NXCOMPAT和DYNAMICBASE标志,则可以创建一个sign.bat
同时调用signtool.exe
和的批处理文件editbin.exe
:
@echo off
editbin.exe /NXCOMPAT /DYNAMICBASE %1
signtool.exe sign ... %1
调用必须按此顺序进行,否则将editbin.exe
破坏签名。
然后在指令中使用sign.bat
代替。signtool.exe
SignTool
尽管我并不真正认为这是必要的,也无济于事。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句