搜尋此網誌

工商服務

2007年9月13日 星期四

使用HTTP實現軟體更新的簡易方法!

想像一下:你開發了個軟體、執行該軟體的環境有網路、你有個網站。現在,這個軟體有了更新版本,你要怎麼發佈並且讓它取代用戶端設備上的舊版軟體呢?

使用HTTP通訊協定會是個非常簡易的可行機制。怎麼說呢?你的軟體只要具備類似瀏覽器那樣的能力,定期去向你的網站抓取某個檔案(比方說記錄著版本資料的文字檔),判斷發現有更新版本存在的時候,便去把它抓下來覆蓋掉舊版檔案即可。

上面這段說明的作法似乎會引發一個問題,就是執行中的程式要怎麼被取代呢?因為作業系統可能會跳出類似「程式正在執行中」的錯誤訊息,然後中斷你的檔案覆蓋行為。因此修改一下部分細節(比方說透過「捷徑」連結去執行該軟體),修改後的整套流程大致包含6個步驟:
  1. 軟體安裝完畢之後,為其執行檔建立啟動的「捷徑」(Windows系統)或者「連結」(Linux系統);執行檔的檔名格式可以訂成「軟體名稱_版本編號」。
  2. 透過「捷徑」或「連結」將軟體啟動之後,定期(每次執行時,或者固定日期)去檢查「http://你的網站/版本檔案」的內容;「版本檔案」(舉例而言,其檔名可以叫做「update.txt」)的內容可以是很簡單的版本編號(例如「002」)。
  3. 當發現版本編號大於執行檔名稱上面的編號時(例如執行檔名稱為XXX_001,但是發現版本檔案的內容是002),就去相對應的位址(例如http:/你的網站/XXX_002)把新版程式抓下來。
  4. 修改「捷徑」的內容,或者將「連結」重新指向,使得下次執行的目標變成新版的程式。
  5. 刪除目前的舊有程式執行檔。這可能需要另一支程式或者機制的搭配,因為當你將目前的程式結束之後,必須由它來刪除舊有的程式檔案,以免浪費空間。
  6. 重新開機(需要的話)。
整體的想法是像這樣。到時候再發展成軟體內的獨立模組與執行緒,再用動態圖案與進度列來表現正在進行更新,整個解決方案就會變得很完美囉!

沒有留言:

張貼留言