ClickOnce - 是否可以将代码签名证书添加到现有部署?

时间:2009-10-05 12:25:25

标签: .net deployment clickonce code-signing

假设我们已经部署了大约3000名已经运行该应用程序的用户的2.0版应用程序。

到目前为止,该应用程序未签名(由VS的一些自动生成的证书签名)。

用户正在使用.NET 2.0。

现在我们想部署一个将使用tucows证书签名的新版本。下面的答案之一表明,如果我们的目标是.NET Framework 2.0,更改代码签名证书将“破坏”应用程序的身份。这是什么意思?

如何向现有部署添加新的代码签名证书?

无法通知所有用户从头开始(或从新网址)重新安装应用程序。

( 编辑:这是以前的要求,现在无效:

我想确保现有用户根本无法看到更新(他们不应该收到新版本可用的通知),而所有新用户在安装时都会收到签名版本第一次。只是签署部署不应该是打扰现有用户的理由。 )

3 个答案:

答案 0 :(得分:1)

我刚刚找到一篇很好的文章来深入解释这个问题:

这适用于将证书从临时证书提供者更改为可信证书提供者以及证书过期。

他们可能会收到以下错误: +部署标识与订阅不匹配。

解决方案也是让.NET 2.0用户重新安装整个clickonce应用程序,这是不可行的 另一个解决方案是推动.NET 3.5 SP1作为先决条件 - 无论如何都会触发重新安装,并且是一个巨大的下载。

链接:http://social.msdn.microsoft.com/Forums/en/winformssetup/thread/1217520d-6dc4-4fb1-83d1-0fa148d60e5d

在.NET 2.0的情况下破解应用程序意味着现有用户在安装更新时会出错,或者根本看不到更新。

它链接到包含可修复.NET 2.0用户应用程序的源代码的帖子: http://robindotnet.wordpress.com/2009/03/30/clickonce-and-expiring-certificates/

更新过程包括使用与过期证书具有相同密钥的证书重新签署中间更新,发布卸载应用程序的中间更新并强制安装新版本。

非常痛苦!

答案 1 :(得分:0)

是的,这将100%有效。如果再次下载程序,新签名当然会生效。但是,只有在下载/更新程序时,签名不应影响具有当前版本的用户。

如果你有自动更新,他们会得到它,但是这 是错误现有用户的一个原因,因为它表明你的应用程序现在更加安全,因为它们现在知道它来自你。 / p>

答案 2 :(得分:0)

正如凯尔所说,如果你小心的话会有效。 (当然发布完全相同的版本)

警告:现有用户需要至少.NET 3.0 SP2或.NET 3.5 SP1。

原因:在此之前,签名被认为是应用程序身份的一部分,更改它会破坏已安装的用户群的应用程序。

但请亲自试试这些事情,轻松搞定一个迷你项目,你只是继续在自己的机器上发布共享,并尝试在发行版之间签名等。