Microsoft SmartScreen – 使用InnoSetup安装程序暂停?

我总是使用InnoSetup进行打包和发布。 用户使用链接下载应用程序,例如: https : //oursite.com/codesigned/mysetup.exe

直到现在,它一直工作,但最近我不得不续约我的代码签名证书,因为它过期了。 更新后,我有SmartScreen问题,每个用户下载应用程序,并得到这是以前没有的Smartscreen。

在这里输入图像说明

我已经使用signtoo.exe verify /pa innosetup-made-myexe.exe ,它显示成功,我也做了与Windows Application Certification Kit的validation,显示它已通过,但与警告,所有这些WARNNINGS主要由InnoSetup生成。

在这里输入图像说明在这里输入图像说明

在这里你可以find输出,在InnoSetup上显示WARNINGS的例子:

https://docs.google.com/document/d/11frW_GxI0xSVcrAXh4_rqcKBQSaermAlpYKj4xzQi4o/pub

我该如何解决这个问题?

(还不知道它的标准代码签名和EV代码签名问题?我已经使用了几年的标准代码签名,它一直工作,我可以升级到EV代码签名,但我怎么能确保它不是InnoSetup编译器问题?可以看到WARNNINGS已经在InnoSetup上面的url中显示)

请指教。

编辑:

以validation其innosetup或代码签名问题(请参阅https://stackoverflow.com/a/29067585/285594 )我已经完成以下操作:

一)从microsoft我已经下载的文件调用winqual.exe不需要innosetup

b)我的代码签名winqual.exe并上传到我的同一台服务器

c)我下载了与Internet Explorer相同的文件,它的工作原理没有向我展示SmarTScreen

现在是否有任何意义,如果innosetup是这个问题的主要原因?

如果您认为问题归因于未签名的卸载程序,请确保相应地设置您的InnoSetup项目的SignTool指令。 并确保SignedUninstaller指令的默认值yes

引用http://www.jrsoftware.org/ishelp/index.php?topic=setup_signtool

指定用于对设置进行数字签名的签名工具的名称和参数( 如果SignedUninstaller设置为yes ,则卸载 )。 当安装程序具有有效的数字签名时,用户在启动时不会看到“未识别的程序”警告。


如果要将NXCOMPAT和DYNAMICBASE标志设置为卸载程序,则可以创建一个sign.bat批处理文件,该文件既可以调用signtool.exe ,也可以调用editbin.exe

 @echo off editbin.exe /NXCOMPAT /DYNAMICBASE %1 signtool.exe sign ... %1 

这些调用需要按照这个顺序,否则editbin.exe会打破签名。

然后在SignTool指令中使用sign.bat而不是signtool.exe

虽然我不认为这是必要的,也没有任何帮助。

我认为这是正常的行为。 当您的软件收集足够的“喜欢”=下载或安装SmrtScreen将自动关闭此消息。

这真是令人讨厌的功能,因为每个软件版本,您需要等待适当的时间,而软件变得“流行”,并被认为是安全的(没有证书或防病毒方法可以解决它)。