我总是使用Inno Setup进行打包和发布。用户使用链接下载应用程序,例如:https://oursite.com/codesigned/mysetup.exe
到目前为止,它一直有效。但是最近我必须更新我的代码签名证书,因为它已经过期。续订后,我遇到了SmartScreen问题,每个用户都下载了该应用程序并获得了以前没有的Smartscreen。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9YdTB3Wi5qcGcifQ==” alt =“在此处输入图像描述”>
[我用过signtool.exe verify /pa innosetup-made-myexe.exe
,它显示成功,我也用Windows Application Certification Kit
进行了验证,表明它已通过,但使用警告,所有那些警告主要由Inno Setup生成。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9uYzBzNy5wbmcifQ==” alt =“在此处输入图像描述”>
在这里您可以找到输出,在Inno Setup exe上显示警告的位置:
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设置。
我的代码在winqual.exe
上签名并上传到我的同一服务器上
[我使用Internet Explorer下载了相同的文件,但在没有向我显示SmartScreen的情况下仍然有效。
如果Inno Setup是造成此问题的主要原因,现在有意义吗?
如果您认为问题是由未签名的卸载程序引起的,请确保相应地设置Inno Setup项目的SignTool
指令。并确保SignedUninstaller
指令具有其默认值yes
。
引用http://www.jrsoftware.org/ishelp/index.php?topic=setup_signtool
指定用于对安装程序进行数字签名的签名工具的名称和参数(如果SignedUninstaller设置为
yes
,则进行卸载)>。当安装程序具有有效的数字签名时,用户在启动安装程序时将不会看到“程序未识别”警告。如果要为卸载程序设置NXCOMPAT和DYNAMICBASE标志,则可以创建一个同时调用
sign.bat
和signtool.exe
的editbin.exe
批处理文件:
editbin.exe
呼叫必须按此顺序进行,否则
@echo off editbin.exe /NXCOMPAT /DYNAMICBASE %1 signtool.exe sign ... %1
会破坏签名。
然后在editbin.exe
指令中使用sign.bat
而不是signtool.exe
。
尽管我并不真正认为这是必要的,也无济于事。
我认为这是正常行为。当您的软件收集到足够的“点赞” =下载或安装时,SmrtScreen将自动关闭此消息。