ClickOnce 应用程序文件下载组

标签 clickonce

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

  • MyProgram.exe(中等大小)
  • MyProgram.exe.config(小尺寸)
  • MyMenu.xml(小尺寸)
  • Shared.dll(中等大小)
  • ThirdParty1.dll(X-大尺寸)
  • ThirdParty2.dll(X-大尺寸)
  • ThirdParty3.dll(X-大尺寸)
  • OtherThirdParty1.dll(X-大尺寸)
  • OtherThirdParty2.dll(X-大尺寸)
  • OtherThirdParty3.dll(X-大尺寸)

  • 我试图在 中设置组申请文件像这样的部分:

    第三方
  • 第三方1.dll
  • ThirdParty2.dll
  • ThirdParty3.dll

  • 其他第三方
  • OtherThirdParty1.dll
  • OtherThirdParty2.dll
  • OtherThirdParty3.dll

  • (必填)
  • MyProgram.exe
  • MyProgram.exe.config
  • MyMenu.xml
  • Shared.dll

  • 我遇到了一个问题,我的程序出错,因为它找不到任何第三方或其他第三方 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/

    相关文章:

    c# - ClickOnce 部署留下多个版本(是的,不止两个)

    c# - 使用 AfterCompile 目标签署 ClickOnce 应用程序

    c# - 如何检测第一次运行 ClickOnce 部署的应用程序?

    .net - ClickOnce appref.ms 参数

    ClickOnce:值不在预期范围内

    c# - 如何指定 clickOnce 应用程序的目标文件夹?

    azure - 在 Azure Blob 存储中托管 ClickOnce 并使用自定义域

    clickonce - 是否可以将NGen与ClickOnce部署一起使用?

    c# - 如何在 ClickOnce 应用程序的无签名程序集项目中设置 LARGEADRESSAWARE?

    .NET ClickOnce 没有安装必备文件?