【问题标题】:Why does my signed, click-once application say it has an unknown publisher为什么我的签名、点击一次的应用程序说它有一个未知的发布者
【发布时间】:2013-12-19 15:32:24
【问题描述】:

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

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

为了使这个过程变得简单,我显然必须签署所有可执行文件。我购买了 Comodo 代码签名证书,将其安装在我的证书存储中,并在 VS Express 2012 中勾选了“Sign the 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 Ltd,并给了我运行的选项,我点击了。

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

exe为什么显示为Unknown publisher

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

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

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

【问题讨论】:

  • 感谢编辑,不管你是谁,我都不知道反引号。
  • 如果只有反引号只适用于源代码,这就是它们的用途。对于内联引用(尤其是包含引号的文本),我更喜欢 italicsbold
  • @NikkiLocke,我知道这有点晚了,但您可以在Markdown help 页面中找到更多格式化帮助。

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


【解决方案1】:

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

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

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

【讨论】:

  • 查看第二部分,用户需要将完整的证书路径安装到 Root-CA 和 Trusted Publisher 存储区。
  • Authenticode 证书与 Comodo 代码签名证书不同吗?
  • 谢谢。无论如何,我重新导出了 Include all certificates 未选中的证书,并将其添加到属性中的代码签名选项卡中。现在应用程序显示为已签名。我仍然想知道为什么 signtool 不起作用。购买 Comode 证书的全部意义在于用户不必忽略安全警告或安装未知的根证书。
  • Comodo 也可以。这就是我用过的。我想 Comodo 不像更昂贵的证书(Digicert)那样做很多背景调查。我不知道这个问题的实际答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
相关资源
最近更新 更多