如何在不重新下载每个文件的情况下更新已部署的clickonce应用程序?

时间:2012-05-24 14:34:02

标签: clickonce

我有一个正在运行的数据库的应用程序。我添加了我需要的所有dll,exe和db文件。这些内容不会被编译。所以我将他们的Build Action设置为“Content”,将他们的Copy to Output Directory设置为“Copy if newer”。有了这个,每次我发布一个更新版本的应用程序时,我只会稍微更改一个文件,但仍然会重新下载所有文件。我在这里看了一下,显然有一个与所有文件相关的哈希。但他们似乎没有给我一个如何发布新版应用程序的答案,让最终用户只下载已更改的文件?

2 个答案:

答案 0 :(得分:1)

正如您所指出的,文件是经过哈希处理的。安装更新时,ClickOnce会根据本地版本检查服务器上的文件,如果它们相同,则不会再次下载,而是从本地目录复制它们。

我相信这只适用于装配体。如果查看ClickOnce缓存,您会发现部署中的每个程序集都被复制到自己的文件夹中 - 这有点像ClickOnce使用的迷你缓存,这就是它在进行比较时所检查的内容。

可能会发生在其他资源上,但我不会赌它。正如eoghank所说,你可以使用fiddler来验证。

答案 1 :(得分:0)

您确定要再次下载未更改的文件吗?使用fiddler进行检查,ClickOnce下载对话框始终通过下载大小指示所有文件正在重新下载,但并非总是如此。