Application Updater Block v2.0 更新檢查過程分析

來源:互聯網
上載者:User
更新判斷方式與v1.0的區別

v2.0不再使用版本號碼來區分更新是否可用,而是採用manifest ID+application ID來判斷,對於每一個新的更新,即使是同一個應用程式,必須更新manifest ID。同時要注意,一個應用程式的application ID一旦確定就不能隨意改變,因為用戶端的設定檔中,已經寫入了確定了的application ID,不能改變,當然你可以嘗試通過更新用戶端的設定檔來改變application ID。

更新檢查 調用過程

1. 用戶端建立一個ApplicationUpdaterManager執行個體,ApplicationUpdaterManager將負責整個升級過程式控制制

2. 調用ApplicationUpdaterManager的CheckForUpdates()方法

3. CheckForUpdates()內部調用CheckForUpdates(Uri Location)方法,其中的Location是伺服器端Manifest檔案的url路徑,可通過UpdaterConfigurationView.DefaultManifestUriLocation獲得。

4. CheckForUpdates(Uri Location)中有兩個處理過程,一個是處理上一次更新過程中未完成的更新,一個是從伺服器段下載最新的manifest檔案,並判斷是否要進行更新。

5. CheckForPendingUpdates()是專門用來處理未完成的更新的,該函數通過調用RegistryManager.Tasks屬性獲得未完成的工作清單。讓我們來看看Tasks屬性的實現
private Hashtable Tasks

{

    get

    {

        if ( !loaded )

        {

            Load();

            loaded = true;

        }

        return registry;

    }

}

如果Tasks沒有初始化過,則會調用Load()方法,該方法枚舉每一個在AppRoot/registry中的檔案,並將這些檔案的控制代碼傳給LoadTask()方法,最後會把每一個儲存在registry目錄下的未完成任務讀入Tasks,這樣就可以把這些任務傳給ApplicationUpdaterManager.OnPendingUpdatesDetected()事件進行處理。

6. 下載和獲得Manifest檔案則是通過ManifestManager.GetManifests()方法完成的。

用戶端目錄用途

    AppRoot/registry        存放未完成的task資訊檔(xml格式)

    AppRoot/applications    存放應用程式的升級檔案和相關設定,該目錄下有若干個目錄,這些目錄都對應一個應用程式的升級,每一個應用程式的升級檔案分別儲存在相應的目錄下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.