为什么我签名的点击一次应用程序说它有一个未知的发布者

时间:2013-12-19 15:32:24

标签: c# code-signing one-click-web-publishing

我想创建一个易于安装的应用程序。安装过程非常复杂(许多权限,防火墙规则,服务等)。所以我决定用C#(.net 4)编写安装程序,然后使安装程序本身安装一次点击。

想法是用户会去网站,点击安装,我的安装程序将通过点击一次安装在他们的计算机上,然后运行,设置主程序。

为了使这个过程变得简单,我显然必须签署所有可执行文件。我购买了一份Comodo代码签名证书,将其安装在我的证书商店中,并在VS Express 2012中勾选了“Sign a Click Once manifests”。我还包括了一个后期构建步骤

SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p <my password> TimeClockSetup.exe

我清理了构建文件夹和部署网站中的所有内容,并运行了一个干净的构建。

我检查了构建文件夹中可执行文件的属性,它显示为由我发布。

我将该程序发布到该网站,启动了另一台Windows 8计算机,导航到该网站,然后单击了“安装”按钮。

我被提示Do you want to run or save setup.exe,并选择了运行。

然后我被提示setup.exe is not commonly downloaded and could harm your computer - 我点击了动作,它说This program might harm your computer。它确实说出版商是Trumphurst有限公司,并且给了我选项,无论如何我都点击了。

然后我得到"Open File - Security Warning", for ".....\TimeClockSetup.exe", "Publisher: Unknown Publisher"

exe如何显示为Unknown publisher

我浏览了安装它的用户数据目录中的exe,并且在“属性”对话框中没有显示“数字签名”选项卡。

但是,如果我浏览到我的构建文件夹中的exe,它会有一个签名。

[稍后]我记得在某处读取构建或发布过程的某些部分使用obj文件夹中的exe文件而不是构建输出文件夹中的文件,所以我添加了对post构建步骤的签名 - 它做了没有区别。

1 个答案:

答案 0 :(得分:5)

您需要为开发公司(或您自己)购买Authenticode证书并签署该应用程序。要签名,请查看项目的属性并转到“签名”类别。选择“签署程序集”,然后您可以选择要签名的证书。

确保这只是根证书,否则VS将无法使用它。此外,最终用户需要安装完整的证书路径,以便机器将您识别为受信任的发布者。

如果从具有完整证书路径的计算机导出证书,则可以将此文件移动到客户端计算机,并将证书安装到TrustedPublishers和Root-CA存储。