我已经创build了一个从Visual Studio安装项目生成的Setup.exe文件。 我有一个代码签名证书,是我公司从Digicert购买的,我们已经用于其他产品,所以它应该是好的。 我已经设置了一个post-build事件来签署我的应用程序,我使用signtool.exe来签署生成的.msi和setup.exe,所以一切都应该成功签名。 如果我运行任何types的签名validation,或查看文件属性,它将显示我的数字证书。
如果我在IIS(8.5)中托pipe此Setup.exe文件,允许浏览目录,并设置我的MIMEtypes以允许下载该文件,则可以将此Setup.exe文件从浏览器下载到我的计算机。 如果我运行它,然后我得到一个Windows SmartScreen筛选器,说这是一个无法识别的应用程序。 在那之下它说出版商是未知的。 如果这个相同的setup.exe文件不是通过IIS下载的,例如说从一台计算机复制到另一台计算机并执行,则不存在Windows SmartScreen筛选器。 所以似乎这个问题是由IIS的下载造成的。 有没有办法解决这个问题?
我发现问题是什么。 根据这篇文章: http : //social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-authenticode-code-signing-and-timestamping.aspx
它解释说,2016年1月1日开始,MS将不再信任使用SHA-1代码签名证书签名的新代码,这正是我所使用的。 我切换到一个新的证书,问题解决了。