C# 为什么我的已签名的click once应用程序说它有一个未知的发布者

C# 为什么我的已签名的click once应用程序说它有一个未知的发布者,c#,code-signing,one-click-web-publishing,C#,Code Signing,One Click Web Publishing,我想创建一个易于安装的应用程序。安装过程相当复杂,包括许多权限、防火墙规则、服务等。。因此,我决定用C.NET4编写安装程序,然后使安装程序本身成为一次点击安装 其想法是,用户将进入网站,单击安装,我的安装程序将通过单击一次安装到他们的计算机上,然后它将运行,设置主程序 为了使这成为一个简单的过程,我显然必须对所有可执行文件进行签名。我购买了一个Comodo代码签名证书,将其安装在我的证书存储中,并在VS Express 2012中勾选了签署单击一次清单。我还包括了一个运行 SIGNTOOL.E

我想创建一个易于安装的应用程序。安装过程相当复杂,包括许多权限、防火墙规则、服务等。。因此,我决定用C.NET4编写安装程序,然后使安装程序本身成为一次点击安装

其想法是,用户将进入网站,单击安装,我的安装程序将通过单击一次安装到他们的计算机上,然后它将运行,设置主程序

为了使这成为一个简单的过程,我显然必须对所有可执行文件进行签名。我购买了一个Comodo代码签名证书,将其安装在我的证书存储中,并在VS Express 2012中勾选了签署单击一次清单。我还包括了一个运行

SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p <my password> TimeClockSetup.exe
我清除了构建文件夹和部署网站中的所有内容,并运行了一个干净的构建

我在build文件夹中检查了可执行文件的属性,结果显示它是由我发布的

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

系统提示您要运行还是保存setup.exe,并选择运行

然后我被提示setup.exe不常下载,可能会危害您的计算机-我单击了“操作”,它说这个程序可能会危害您的计算机。它确实说出版商是特朗普赫斯特有限公司,并给了我无论如何运行的选项,我点击了

然后我打开了文件-安全警告,用于…\TimeClockSetup.exe,发布者:未知发布者

为什么exe显示为未知发布者

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

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


[稍后]我记得在某个地方读到,生成或发布过程的某些部分使用obj文件夹中的exe文件,而不是生成输出文件夹中的exe文件,因此,我在构建后步骤中添加了签名,这没有什么区别。

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

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


如果您使用完整的证书路径从计算机导出证书,您可以将此文件移动到客户端计算机,并将证书安装到TrustedPublisher和根CA存储。

感谢您的编辑,无论您是谁,我都不知道反引号。如果反引号只在源代码上起作用,这就是他们的目的。对于内联引用,尤其是包含引号的文本,我更喜欢斜体或粗体。@NikkiLocke,我知道这有点晚了,但您可以在页面中找到进一步的格式帮助。请看第二部分,用户需要将完整的证书路径安装到根CA和受信任的发布者存储。Authenticode证书与Comodo代码签名证书不同吗?谢谢。无论如何,我重新导出了包含所有未选中证书的证书,并将其添加到属性中的代码签名选项卡中。现在应用程序显示为已签名。我仍然想知道为什么signtool不起作用。购买Comode证书的全部意义在于,用户不必覆盖安全警告或安装未知的根证书。Comodo证书也可以使用。我就是这么用的。我想Comodo不像更昂贵的证书Digicert那样做很多背景调查。我不知道这个问题的实际答案。