我有一个应用程序,我想使用 ClickOnce 进行部署。以下是我需要的一些文件:
我试图在 中设置组申请文件像这样的部分:
第三方
其他第三方
(必填)
我遇到了一个问题,我的程序出错,因为它找不到任何第三方或其他第三方 DLL。我检查了 ClickOnce 安装这些文件的位置,并将其放在与我的可执行文件完全不同的文件夹中。
如果它们没有保存在同一位置,那么创建不同的文件组有什么意义?我想使用它,所以当我的程序更新时,我不必下载所有内容,只需下载更改即可。其中一些第三方 DLL 的大小为 10-15 mb,我有多达 1000 个连接速度较慢的客户端,因此这需要大量带宽,并且客户端需要大量下载。
我应该如何设置它,以便当 MyProgram.exe 中的某些内容发生变化时,我可以让客户端下载尽可能少的文件(第三方和其他第三方组中没有任何文件)?
最佳答案
我无法通过 ClickOnce 中的文件组解决您的问题 - 我从未使用过它们。但是,如果您唯一担心的是 3rd 方 dll 仅下载一次,则无需理会它们。
ClickOnce 会根据文件的哈希值智能地下载文件。如果文件发生任何变化(日期、大小、内容等),其哈希值也会发生变化。当 ClickOnce 应用程序在新版本发布后启动时,它会将来自客户端的所有文件哈希与服务器上的文件哈希进行比较,并且仅下载已更改的内容。
只要您的第 3 方 dll 没有改变,为它们生成的哈希值将始终相同。所以它们应该只下载一次。
还有一件事,完全忽略 ClickOnce 下载进度条上的文件大小。即使它只下载一个文件,它也始终显示您的应用程序的完整大小。如果你想自己测试,使用 Fiddler监视 ClickOnce 应用程序启动时发生的情况。
关于ClickOnce 应用程序文件下载组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219081/