我有一个应用程序,我想使用ClickOnce进行部署。以下是我需要的一些文件:
我尝试在应用程序文件部分中设置组,如下所示:
第三方
OtherThirdParty
(必需)
我遇到了一个问题,我的程序错误,因为它找不到任何ThirdParty或OtherThirdParty DLL。我检查了ClickOnce安装这些文件的位置,并将其放在一个完全独立的文件夹中,而不是我的可执行文件。
如果文件未保存在同一位置,创建不同文件组的重点是什么?我想使用它,所以当我的程序更新时,我不必下载所有内容,只需更改。其中一些第三方DLL的大小为10-15 MB,我有多达1000个客户端连接速度慢,因此它为用户提供了大量带宽和大量下载。
如何在MyProgram.exe中更改内容时进行设置,我可以让客户端下载尽可能少的文件(来自ThirdParty和OtherThirdParty组)?
答案 0 :(得分:8)
我无法解决ClickOnce中文件组的问题 - 我从未使用过它们。但是,如果您唯一担心的是第三方dll只下载一次,那么您就不需要打扰它们。
ClickOnce根据哈希值智能地下载文件。如果有关文件的任何内容发生更改(日期,大小,内容等),则其哈希值将发生变化。在新版本发布后启动ClickOnce应用程序时,它会将客户端的所有文件哈希值与服务器上的文件哈希值进行比较,并仅下载已更改的内容。
只要你的第三方dll没有改变,为它们生成的哈希将始终是相同的。所以他们只能下载一次。
还有一件事,完全忽略ClickOnce下载进度条上的文件大小。它总是显示您的应用程序的完整大小,即使它只下载一个文件。如果您想自己测试一下,请使用Fiddler来监控ClickOnce应用启动时会发生什么。
答案 1 :(得分:4)
FWIW,本文似乎解释了ClickOnce文件组的目的:
http://thejoyofcode.com/ClickOnce_File_Groups.aspx
当您拥有一个大型应用程序时,您希望将初始程序包作为一种引导程序,并在应用程序运行时按需下载应用程序的后续部分,它们就会被使用。