ClickOnce应用程序文件下载组

问题描述:

我有一个应用程序,我想用ClickOnce来部署。这里有一些文件,我将需要:ClickOnce应用程序文件下载组

  1. MyProgram.exe(中等大小)
  2. MyProgram.exe.config(小尺寸)
  3. MyMenu.xml(小尺寸)
  4. Shared.dll(中等大小)
  5. ThirdParty1.dll(X-大尺寸)
  6. ThirdParty2.dll(X-大尺寸)
  7. ThirdParty3.dll(X-大尺寸)
  8. OtherThirdParty1.dll(X-大尺寸)
  9. OtherThirdParty2.dll(X-大尺寸)
  10. OtherThirdParty3.dll(X-大尺寸)

我试图设置组在应用程序文件部分是这样的:

第三方

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

OtherThirdParty

  1. OtherThirdParty1.dll
  2. OtherThirdParty2.dll
  3. OtherThirdParty3.dll

(必需)

  1. MyProgram.exe
  2. MyProgram.exe.config
  3. MyMenu.xml
  4. Shared.dll

我遇到了一个问题,我的程序出错,因为它找不到任何ThirdParty或OtherThirdParty DLL。我检查了ClickOnce安装这些文件的位置,并将它放在与我的可执行文件完全不同的文件夹中。

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

我应该如何设置,以便在MyProgram中发生某些变化时。exe,我可以让客户端下载最少量的文件(没有任何来自ThirdParty和OtherThirdParty组)?

+0

WhatKnott的评论没有回答原来的问题,但它解释了我需要解决我目前的问题。 – Miles 2010-11-19 19:34:14

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

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

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

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

+1

ahhhh,请参阅我假定ClickOnce进度条向我显示的大小是它下载的大小,而不是应用程序的大小。我曾听说,当其中一个文件发生变化时,它必须下载每个“组”,所以我试图将它们分开。感谢您的信息 – Miles 2010-11-19 19:33:49

+1

是的,这引发了每个人。我不确定他们为什么不解决问题,或者只是从对话框中取消大小。一个很好的教训 - 使用Fiddler来看看到底发生了什么。菲德勒在很多场合都帮我解雇了。 – codeConcussion 2010-11-19 22:39:01

FWIW,这篇文章似乎可以解释ClickOnce的文件组的目的:

http://thejoyofcode.com/ClickOnce_File_Groups.aspx

它看起来就像当你有你想要的初始包装是一个大的应用程序,他们已经习惯一种引导程序,在应用程序运行时随着应用程序的后续部分下载。