2010-11-18 183 views
2

我有一個應用程序,我想用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

回答

8

我無法解決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

4

FWIW,這篇文章似乎可以解釋ClickOnce的文件組的目的:

http://thejoyofcode.com/ClickOnce_File_Groups.aspx

它看起來就像當你有你想要的初始包裝是一個大的應用程序,他們已經習慣一種引導程序,在應用程序運行時隨着應用程序的後續部分下載。

相關問題