2013年1月21日 星期一

[windows]程式更新機制自動化的考量

現在的使用者,應該已經非常習慣程式一打開,就跳出自動更新的視窗。也有一大部份的程式,是在背景自動更新完畢,完全不打擾使用者。在一個自動化的工廠裡,當然是需要在背景自動更新完畢的流程,因為這個環境裡,沒有使用者。

google 在更新 chrome 的時候,為了要在 windows 上完成自動更新,設計了一套更新的機制,它把這個機制變成了一個開源專案,叫做 omaha。目前,在 windows 上,除了 chrome 之外,google earth 也是採用這個機制。當初,google 許多的專案在 windows 上都有自動更新的需要,然而,每個專案都自己寫了自動更新,許多程式碼都重覆寫,以致於有人就跳出來開了這個專案,讓大家都有方便、穩定的程式碼用,不用每次都自己做輪子。他們也很順手地,把 client 端的程式分享出來,讓大家都可以使用,真的是佛心來著。我認為,從這裡學習,也是獲益良多。

Omaha 的設計,考量到幾個目標:

  • 更新及安裝的系統需要在 windows 的各個不同平台可以共用。
  • 自動更新機制與產品之間沒有相依性,所以不同的產品可以使用同一套的伺服端及客戶端程式邏輯。
    • 一個自動更新伺服器,能夠接受每個不同產品的自動更新需求。不同的團隊不用各自佈署自己的伺服器。
    • 一個自動更新客戶端程式,讓所有的產品共用。避免不同的應用程式自己跑自己的更新程式。
  • 一個小的 meta-installer,它包含一個「客戶端更新程式」以及產品的安裝程式的參考。meta-installer 會知道如何安裝「客戶端更新程式」以及如何下載產品、安裝產品。
  • 當「客戶端更新程式」安裝好,可一鍵執行網路安裝。
  • 支援、控制多種版本更新,例如:不同的公開版本的釋出,beta 版釋出,開發版釋出,或是實驗版釋出。
  • 支援權限受限制的安裝環境,例如:使用者不具備管理者權限的安裝。
  • 提供共用的功能給所有的產品程式(客戶端程式),例如:程式當機報告。

參考:http://omaha.googlecode.com/svn/wiki/OmahaOverview.html

沒有留言:

張貼留言