【问题标题】:Signing all files correctly published with ClickOnce对使用 ClickOnce 正确发布的所有文件进行签名
【发布时间】:2016-04-26 08:59:15
【问题描述】:

我们在通过 ClickOnce 安装应用程序时遇到了一些麻烦。

我们拥有 Verisign 证书,我们使用 VisualStudio 中的选项对 ClickOnce 安装程序进行签名。这在第一次安装应用程序期间按预期工作,Windows 询问我们是否确定安装,但按照证书中的预期将我们的公司显示为发布者。

但是安装的文件没有签名。在我们的一些客户机器上,在第一次安全检查之后,windows 会抛出另一个警告,关于安装的应用程序 exe 的名称,说发布者未知。

我们试图通过 postbuld 命令在 opt-folder 中对有问题的 exe 文件进行签名,这确实是在对它们进行签名,但之后 clickonce 安装失败,声称文件的哈希值与文件中的哈希值不同清单。

在 ClickOnce 安装中签署所有 exe 和 dll 文件的正确方法是什么?

【问题讨论】:

    标签: certificate clickonce code-signing


    【解决方案1】:

    这是一个 WPF 应用程序吗?如果是这样,它的目标集和执行顺序与表单应用程序不同,这需要您使用 AfterCompile 命令而不是 PostBuild 命令。有关此主题的更多信息,请参阅 RobinDotNet 的 blog post

    【讨论】:

    • 感谢分享那篇很有帮助的文章。我的应用程序是 WindowsForms 应用程序而不是 WPF,但我还是试了一下。结果是,当我这样做时,setup.exe 已签名,ApplicationFiles 文件夹中的 .exe.deploy 文件也已签名。我可以在不破坏清单哈希的情况下部署项目,到目前为止一切顺利。我仍然在 Windows Server 2012 上获得 3 个(!)安全屏幕。第一个告诉我安装程序的身份未知,另外两个告诉我安装程序和 exe 文件的正确身份。
    • 如果您在初始安装屏幕上看到 Unknown Publisher,则这表明清单未使用来自代码授权的证书进行签名。您需要使用用于签署可执行文件的相同威瑞信证书签署清单。至于第二个两个提示,它们来自 Windows 内置的 SmartScreen 服务。一旦您通过 SmartScreen 服务获得足够的声誉,这些声誉就会消失。
    • 我们使用相同的证书来签署 exe 文件和 clickonce 清单。无法正确识别证书,因为 dotnet 4.0 存在未使用 sha1 的证书问题。将目标机器更新到 4.5 解决了这个问题。所以你的答案确实是正确的。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多