應用程式載入器就像“解靴帶”或“墊子”一樣,通過它可以啟動由應用程式升級器更新的應用程式。這一章節將介紹下面的幾個關於應用程式載入器的方面:
問題描述
設計目標、權衡和問題
解決方案描述
具體實現
問題描述
在應用程式運行時升級應用程式是一件困難的事情,Updater Application Block需要提供一種方法,該方法允許應用程式升級器下載並且安裝升級檔案,同時又要允許使用者繼續使用正在更新的應用程式。
設計目標、權衡和問題
Updater Application Block開發人員識別出了以下一些與應用程式載入器相關的設計目標、權衡和問題
1. 應用程式載入器應該在一個獨立進程中啟動最新版本的應用程式
2. 設計中的主要權衡問題是使用者必須通過應用程式載入器啟動應用程式,而非直接啟動。
3. 每一次升級建立一個新的、指定版本的目錄
4. 應用程式載入器配置應該能夠被應用程式升級器訪問和使用(以便獲得當前安裝的版本資訊,並在升級完成後更新升級版本和執行路徑資訊),這意味著應用程式設計工具使用的安全準則(Security Principal)必須對應用程式載入器的設定檔有存取權限。
解決方案描述
應用程式載入器使用它的設定檔來確定最新版本的應用程式的位置,並且啟動它。圖1展示了應用程式載入器如何使用設定檔來定位和啟動應用程式。
使用應用程式載入器,而不是直接啟動應用程式,允許在應用程式運行時,安裝應用程式的新版本。應用程式載入器設定檔會被升級,這樣在下一次執行時,新版本的應用程式會被啟動。
圖2 展示了應用程式載入器如何在升級後啟動最新版本的應用程式。
具體實現
應用程式設計工具集合(AppStart)主要包含三個類:AppStart, AppStartConfiguration和ConfigSectionHandler。ConfigSectionHandler包含用於還原序列化應用程式載入器的設定檔到一個AppStartConfiguration對象的代碼,AppStart使用該對象啟動應用程式。
當應用程式載入器初始化啟動時,它會檢查是否它已經為一個在設定檔中指定的應用程式啟動並且運行著。如果不是,應用程式會傳遞相同的命令列參數給AppStart.exe來啟動應用程式。
更多資訊可以參考 用戶端檔案設計。