我們有一個.Net應用程序,它使用ClickOnce來自動更新。但Click Once的問題在於,無論項目中是否發生任何變化,所有程序集都會得到更新。我在想手動更新只有更改dll到以前的ClickOnce發佈文件夾和更新清單使用MageUI.exe。我也想到增量更改組件版本,以便我們可以通過查看安裝ClickOnce應用程序的用戶的緩存文件夾來跟蹤哪些程序集已更改。我想知道這是一個可接受的的方法嗎?謝謝。在ClickOnce中維護程序集版本?
7
A
回答
4
我認爲這不是必需的。同時通過的ClickOnce提供的更新對話框不會這麼告訴你,當滿足以下條件的ClickOnce將無法下載文件:
- 該文件的哈希值是相同的
- 該文件的時間戳是相同的。
- 對於組件,它可能需要強命名他們
相反,它會在文件從先前版本複製。
因此,如果您使用強名稱並且在沒有更改時不重建程序集,則ClickOnce應該按照您希望的方式執行。
Here是官方消息說
當更新應用程序,除非該文件已更改的ClickOnce不下載的所有文件,爲應用程序的新版本。相反,它會將當前應用程序的應用程序清單中指定的文件的哈希簽名與新版本的清單中的簽名進行比較。如果文件簽名不同,ClickOnce會下載新版本。如果簽名匹配,則文件從一個版本到下一個版本沒有更改。在這種情況下,ClickOnce將複製現有文件並在新版本的應用程序中使用它。這種方法可以防止ClickOnce再次下載整個應用程序,即使只有一個或兩個文件發生了變化。
相關問題
- 1. 如何在.NET ClickOnce應用程序中將發佈版本同步到程序集版本?
- 2. Git - 維護多個版本
- 3. 維護軟件版本
- 4. Incrementing CruiseControl.NET for ClickOnce的程序集版本發佈
- 5. 如何在版本中維護版本/構建組件?
- 6. ClickOnce需要程序集MyProject在GAC中?
- 7. 維護程序員維基
- 8. 維護Android應用程序版本的最佳做法
- 9. 爲GWT Web應用程序維護構建版本號
- 10. 在PCL中獲取程序集版本
- 11. 在將來的應用程序版本中維護核心數據
- 12. 修補程序與修補程序與維護版本與服務包與
- 13. 服務Fabric羣集可否維護舊版本的服務?
- 14. .NET程序集版本
- 15. 維護我的C++項目的版本
- 16. 維護Web的開發版本應用
- 17. 如何維護Lotus Notes版本? C#
- 18. 使用git來維護舊版本
- 19. 維護版本的最佳方式
- 20. 代碼版本控制和維護
- 21. 維護Cassandra集羣
- 22. Wix安裝程序維護
- 23. 從版本中排除程序集
- 24. SQL Server 2000/2005 - 維護開發版本和生產版本
- 25. 以便捷的方式維護MPI版本和非MPI版本
- 26. 維護版本與正常版本相關的策略?
- 27. 讓TeamCity將Subversion版本號集成到程序集版本
- 28. 維護對象的有序集合
- 29. 維護插入順序的Java集合
- 30. Clickonce部署程序集必須安裝在全局程序集緩存(GAC)中
聽起來像是等待發生的問題,如果你問我。如果一位客戶錯過了特定的「中間」更新,該怎麼辦?他會得到一個新版本,但是可能不包含前一版本中引入的一些他沒有得到的更改。 – user1429080
所以,點擊一次安裝後,我們將檢查驗證所有dll的版本號。因此,如果更新1有一個版本爲#1.1.1.1的dll,並且更新2有另一個版本爲1.1.1.2的dll,則更新3單擊一次安裝應該具有版本1.1.1.1的dll 1和版本1.1.1.2的dll 2與更新3中引入的更改。實際上,最新的點擊一次發佈將被更新以使用mage ui添加增量dll,並且所有客戶端將獲得相同的發佈,因此,如果客戶端在較舊版本中,他也會得到更新到最新。 –
但這並不意味着每個版本都必須包含所有以前的版本+當前版本的更改?意思是,每個發行版都會變得更加「胖」,直到下一個發行版需要包含所有內容爲止。無論如何,據我所知,支持從任何舊版本升級到當前版本的唯一方法是在每個版本中包含所有內容。如果你有一組用戶,並且能夠控制它們定期更新,那麼也許這可以起作用... – user1429080