2009-01-17 141 views
10

對於基於桌面的應用程序,執行自動更新的最佳實踐是什麼?目前,我們下載所有文件,然後複製並註冊(如果是COM DLL)到它們各自的目錄。自動更新的最佳實踐

我看了一下Google Chrome的更新方法。它似乎首先將壓縮文件下載到目錄中,然後解壓縮所有文件。此外,他們有一個似乎用於更新的安裝應用程序。此外,他們創建一個映射爲更新版本的目錄,如1.0.154.43,但它們保留舊版本的目錄。

回答

7

從鉻隊最近的一篇博客是一個偉大的指南:

http://blog.chromium.org/2009/01/google-chrome-installation-and-updates.html

基本上,當您使用MS的ClickOnce的同樣的事情做,我有使用這樣的更新方法,這樣應用程序沒有問題遠,所以我想這個分類爲「最佳實踐」......但這只是我。

  1. 將每個版本存儲在自己的唯一文件夾中。
  2. 使用「啓動器」啓動最新版本可用和...
  3. 在應用程序啓動後檢查後臺的任何新版本。
  4. 下載找到的任何新版本併爲該版本創建一個新文件夾。

谷歌瀏覽器有點不同,因爲他們使用谷歌更新服務來進行更新,但整體體驗/週期幾乎相同。

您的用戶啓動應用程序,如果有任何新版本可用,它將在後臺下載。然後,下一次應用程序啓動時,您的用戶會自動獲取新版本(如果可能),並自動獲取新版本。

15

幾個祕訣:

  • 無論您如何選擇,請致電請不要創建新的服務或進程來檢查更新,然後繼續保持連接。你知道,就像Adobe和Sun(對於Java)一樣。無論您製作的是什麼,我都可以保證每次用戶啓動計算機時都需要更新並不重要。更新應該與OS通用的標準化更新過程或應用程序運行時集成。更新不應該持續竊取系統資源或默認放慢引導過程。

  • 如果您爲每個版本維護單獨的目錄,則需要添加代碼以維護該目錄。磁盤空間不是爲了加速更新。我記得一次在我的電腦上安裝了5個不同版本的Citrix應用程序。 用戶在其文件系統上不應看到多於兩個副本(最多一個備份,確認爲功能),除非他們明確將它們放在那裏。當文件夾位置像這樣改變時,應用程序的快捷方式可能會過時,因此請小心。

  • 如果您在程序啓動後更新,我會建議以非強迫性的方式通知用戶。如果更新不會導致功能發生重大變化,請在後臺下載更新,下次執行應用程序時切換到新版本,並通知用戶重大更改(不要使用模態對話框或竊取焦點)。不要讓用戶在啓動應用程序之前點擊按鈕同意安裝更新,或者強制他們重新啓動以使用更新的版本。允許用戶配置自動更新,然後在不影響生產力的情況下執行更新。 Firefox對此很不好,這很令人傷心,因爲它對許多用戶來說是一個完整的應用程序。

  • 請勿觸摸系統托盤。這應該保留給用戶(對用戶)有用的應用程序。我也建議不要使用氣球通知。使用類似瀏覽器中常見的信息欄。微軟應用程序對於使用系統托盤和氣球通知來浪費用戶時間和不重要的通知尤其不利。如果用戶啓用了自動更新,他們實際上並不需要知道一切正常,就像他們預期的那樣。告訴他們什麼時候有新東西或有用的東西,不要強迫他們的知識。將更改日誌保留在幫助菜單項下,以便他們可以自行檢查錯誤修復。

  • 如果部署默認配置文件,請注意使用MSI系統進行更新。 您不想覆蓋更新中的任何用戶文件。同樣,如果配置文件或用戶文件的格式發生更改,則應提供一種自動備份和升級這些文件的機制。或者在應用程序內部開始構建默認設置,而不是部署它們。

  • 有帶寬意識。大型文件需要時間並可能從用戶計量帶寬。特別是如果你每天更新。

我記不起真正的非侵入式更新程序,但我記得過去浪費了我的時間和資源的很多東西。別成爲別人的傢伙。