2013-02-22 178 views
1

好吧,我快要疯了。Clickonce疯狂

我们通过clickonce为我们的UAT用户部署了一个包,为他们提供了一个通过HTML页面链接下载的URL。直到最近,我们没有对任何软件包进行版本化,所以它们都具有版本1.0.0.0 - 最终的结果是,当我们向UAT发布新版本时,他们必须先卸载旧版本,然后才能下载新版本。认为他们是相同的申请身份,否则。由于他们没有管理员权限,这有点问题,并导致他们不得不删除c:\ documents和settings \ username ......中的文件以进行clickonce并删除注册表项,

最后一个他们安装的版本是UAT 5.我现在已经构建了一个版本为6.0.0.0的UAT 6,因为它的身份,所以如果他们点击启动链接,它应该自动下载,而不需要删除5.它确实下载了一些东西,您可以看到它下载了一个软件包 - 不是直接打开应用程序,因为它没有更新 - 但是当应用程序打开时,它仍然是第5版,通过检查文档和设置中文件的大小进行确认。

我个人可以点击相同的URL链接,并为我下载第6版。我使用控制面板 - >添加删除程序删除以前的版本,他们不能因为访问控制,但这是唯一的区别。

在他们的机器上,我可以删除所有文件,所有注册表设置,然后点击相同的链接为我下载第6版,并且不知何故它们仍然以版本5的下载结束。

任何想法?我在这里疯了!

+0

您确定您不只是部署版本号为6的版本5(您是否发布正确的东西?) – vcsjones 2013-02-22 16:47:02

+0

您是否尝试过在客户端计算机上查看ClickOnce活动日志以获取任何线索?也许发生错误会阻止ClickOnce将新文件从安装缓存移动到新程序目录。请参阅[this](http://msdn.microsoft.com/zh-cn/library/ms404265.aspx)和[this](http://msdn.microsoft.com/zh-cn/library/dd996997.aspx) 。 – 2013-02-22 16:49:32

+0

检查并确保您正在部署的服务器没有缓存文件。在用户机器上运行Fiddler以准确查看它从服务器获取的文件,并检查清单以获取正确的版本号。 – RobinDotNet 2013-02-25 06:51:49

回答

1

听起来好像客户端机器正在检测到有一个新的发布包,但EXE本身没有改变。为了节省时间/带宽,对于身份未更改的任何程序集,ClickOnce会在本地计算机的高速缓存中引入以前下载的程序集。

换句话说,这听起来像你正在更新发布版本,但不是装配版本。要使新组件的标识不同,请务必更新组件版本(在项目属性>应用程序>组件信息...下)以及发布版本(在项目属性>发布下)。

您也可以在文件版本中(也在项目属性>应用程序>程序集信息...)中进行测试,但该程序不会在应用程序清单中显示。