ClickOnce应用程序文件下载组

时间:2010-11-18 20:10:06

标签: clickonce

我有一个应用程序,我想使用ClickOnce进行部署。以下是我需要的一些文件:

  1. MyProgram.exe(中等大小)
  2. MyProgram.exe.config(小尺寸)
  3. MyMenu.xml(小尺寸)
  4. Shared.dll(中等大小)
  5. ThirdParty1.dll(X大尺寸)
  6. ThirdParty2.dll(X-large size)
  7. ThirdParty3.dll(X大尺寸)
  8. OtherThirdParty1.dll(X-large size)
  9. OtherThirdParty2.dll(X-large size)
  10. OtherThirdParty3.dll(X-large size)
  11. 我尝试在应用程序文件部分中设置组,如下所示:

    第三方

    1. ThirdParty1.dll
    2. ThirdParty2.dll
    3. ThirdParty3.dll
    4. OtherThirdParty

      1. OtherThirdParty1.dll
      2. OtherThirdParty2.dll
      3. OtherThirdParty3.dll
      4. (必需)

        1. MyProgram.exe
        2. MyProgram.exe.config
        3. MyMenu.xml
        4. Shared.dll
        5. 我遇到了一个问题,我的程序错误,因为它找不到任何ThirdParty或OtherThirdParty DLL。我检查了ClickOnce安装这些文件的位置,并将其放在一个完全独立的文件夹中,而不是我的可执行文件。

          如果文件未保存在同一位置,创建不同文件组的重点是什么?我想使用它,所以当我的程序更新时,我不必下载所有内容,只需更改。其中一些第三方DLL的大小为10-15 MB,我有多达1000个客户端连接速度慢,因此它为用户提供了大量带宽和大量下载。

          如何在MyProgram.exe中更改内容时进行设置,我可以让客户端下载尽可能少的文件(来自ThirdParty和OtherThirdParty组)?

2 个答案:

答案 0 :(得分:8)

我无法解决ClickOnce中文件组的问题 - 我从未使用过它们。但是,如果您唯一担心的是第三方dll只下载一次,那么您就不需要打扰它们。

ClickOnce根据哈希值智能地下载文件。如果有关文件的任何内容发生更改(日期,大小,内容等),则其哈希值将发生变化。在新版本发布后启动ClickOnce应用程序时,它会将客户端的所有文件哈希值与服务器上的文件哈希值进行比较,并仅下载已更改的内容。

只要你的第三方dll没有改变,为它们生成的哈希将始终是相同的。所以他们只能下载一次。

还有一件事,完全忽略ClickOnce下载进度条上的文件大小。它总是显示您的应用程序的完整大小,即使它只下载一个文件。如果您想自己测试一下,请使用Fiddler来监控ClickOnce应用启动时会发生什么。

答案 1 :(得分:4)

FWIW,本文似乎解释了ClickOnce文件组的目的:

http://thejoyofcode.com/ClickOnce_File_Groups.aspx

当您拥有一个大型应用程序时,您希望将初始程序包作为一种引导程序,并在应用程序运行时按需下载应用程序的后续部分,它们就会被使用。