具有提升信任和签名证书的Silverlight 4 OOB应用程序不会更新?需要重新安装?

时间:2010-09-16 12:30:56

标签: silverlight silverlight-4.0 silverlight-oob

我有OOB app,不需要提升信任,也没有签名。许多人已下载并使用它OOB。

然后我需要使用提升的信任功能,所以来自Comodo的我bought a legitimate certificate和我现在签名。在localhost上一切都很好 - 它是值得信任的并且可以识别证书。

但是,一旦我uploaded the new version我现有的OOB安装(这是旧的未签名,非提升的信任应用程序)没有执行通常的“新版本检查和更新”。

这很重要,因为很多人已经安装了它 - 在更改签名,提升下载信任方面是否存在一些限制? .xap名称相同且位于同一位置。小提琴查找会看到新的更改,因此它会“缓解”缓存问题。我清除了CCleaner的所有缓存以确定。

我在另一台计算机上卸载了旧的OOB应用程序,并且签名的证书在安装时工作正常(即我得到了很好的“受信任的发布者”安装消息),所以这不是签名问题。你可以看到它live here(我会保留新版本,因为没有任何伤害 - 老用户根本不知道它!)

我认为这与Elevated Trust变更有关?

更新:我做了更多测试:我删除了Elevated Trust并再次上传。没有更新然后DID更新的OLD,并且另一台计算机上的新的(提升的信任+签名)没有更新。因此,无论是否签名,更新过程都无法处理信任高程的变化。这是一个很大的问题,所有用户都会被困在旧版本上并且永远不会知道它。

另一个问题是,新签名的应用程序认为该应用程序是安装在我的计算机上(旧的未签名的应用程序未更新),因此不会显示安装选项。很少有用户会知道如何卸载它并重新安装它,如果他们甚至有一天去网站检查。如果是这种情况,这是一个非常严重的错误。

3 个答案:

答案 0 :(得分:2)

不幸的是,您的用户需要卸载并重新安装该应用程序。这不是一个错误(我不相信),但更多的是设计。如果您查看MSDN上的这篇文章:http://msdn.microsoft.com/en-us/library/dd550721(VS.95).aspx,您会看到它声明:

  

Silverlight 4支持使用提升的信任来运行浏览器外应用程序。除非应用程序和更新都使用相同的有效代码签名证书进行签名,否则受信任的应用程序无法使用本节中描述的更新机制。要更新没有有效签名的受信任应用程序,用户必须卸载旧版本并手动安装新版本。

它或多或少似乎在最后一句(在一轮回合中)表明具有未签名应用程序的用户将需要卸载该应用程序,然后安装具有提升信任的用户来更新它。我已经阅读了一些更精确地说明这一点的内容,但不记得它在哪里抱歉:(。

希望这会有所帮助......

克里斯

答案 1 :(得分:1)

在收到没有回复/引导后,我很遗憾地得出结论,这是SL4中的一个错误。

我认为,因为应用程序现在需要UI确认来确认提升的信任,现有的不受信任的应用程序无法在更新时处理此UI,因此它不会下载它。

出于某种原因,删除提升的信任具有相同的问题(可信任的OOB应用程序也不会更新非提升的信任更新,这甚至更奇怪)。

因此,在我看来,最重要的是如果您更改Elevated Trust,那么您刚刚已经隔离了已经安装了您的应用的所有人。

那么似乎有两个选择:

  1. 只需更新应用程序并依赖博客等告诉他们必须卸载并重新安装。这很糟糕,因为他们不知道有一个已知的版本,可以在不知情的情况下再使用旧版本10年。此外,如果他们转到在线版本,它认为它已经安装,所以不会再次提供安装菜单,直到您卸载旧版本 - 非常凌乱!我认为这是Tim Heuer在签名的Facebook应用程序中使用的路线 - http://timheuer.com/blog/archive/2010/04/15/silverlight-client-for-facebook-updated-for-silverlight-4-release.aspx

  2. 重命名.XAP文件并为其启动一个新项目。使旧的.xap文件有一条消息说“有一个新版本”,卸载并重新安装说明/链接。然后,如果他们在没有卸载旧版本的情况下查看新版本,它仍将安装,因为它是一个不同的XAP名称,并且您至少可以与他们通信,告诉他们旧版本已经死了。

  3. 还有其他建议吗?!

答案 2 :(得分:0)

修复需要更新的用户的一个好方法是为他们提供一个可以自动更新的应用程序。使用这篇文章:Install Silverlight-out-of-browser因此,最终用户只需下载将卸载“不受信任的”的小exe,然后重新安装新的。