
通過前幾篇的學習和實踐,相信大家可以很輕松的創建個性化Silverlight Out of Browser應用。上周,在[銀光中國網論壇](http://bbs.silverlightchina.net/)有人問到對于Silverlight Out of Browser應用,如何進行在線更新?這篇將針對該問題,介紹一下Silverlight的Out of Browser應用如何進行在線更新的,另外,我們將介紹Silverlight 4中提供的一個新的Out of Browser應用安裝方式。
首先說說Silverlight Out of Browser應用在線更新
在本系列[開篇](http://www.cnblogs.com/jv9/archive/2010/07/08/1773276.html)的時候,我們已經介紹,Silverlight Out of Browser和Silverlight Web應用有一些不同,Silverlight Web當更新了服務器端的XAP文件后,用戶在重新載入時,會自動更新XAP文件到本地臨時目錄。而Silverlight Out of Browser應用的自動更新是通過調用[CheckAndDownloadUpdateAsync](http://msdn.microsoft.com/en-us/library/system.windows.application.checkanddownloadupdateasync(v=VS.95).aspx)方法和[Application.CheckAndDownloadUpdateCompleted](http://msdn.microsoft.com/en-us/library/system.windows.application.checkanddownloadupdatecompleted(v=VS.95).aspx)實現的,在判斷[UpdateAvailable](http://msdn.microsoft.com/en-us/library/system.windows.checkanddownloadupdatecompletedeventargs.updateavailable(v=VS.95).aspx)屬性為True時,說明一個新版本已經被發現和成功下載,相反則是False。如果在檢測中發現異常,則可以通過[Error](http://msdn.microsoft.com/en-us/library/system.windows.checkanddownloadupdatecompletedeventargs.error(v=VS.95).aspx)屬性查看異常實例信息。
按照常規方法,我們都會在應用啟動時進行更新檢測,所以,我們需要將代碼添加到App.xaml的構造函數中,
首先創建OnCheckAndDownloadUpdateCompleted檢測是否有新版本允許下載,
~~~
??private?void?OnCheckAndDownloadUpdateCompleted(object?sender,?CheckAndDownloadUpdateCompletedEventArgs?e)
??{
??????????????if?(e.UpdateAvailable && e.Error == null)
??????????????{
??????????????????MessageBox.Show("應用新版本已經下載成功,將在下次啟動時生效。");
??????????????}
??????????????else?if?(e.Error?!=?null)
??????????????{
??????????????????MessageBox.Show("在檢測應用更新時,?在"
???????????????????????????????+?"出現以下錯誤信息:"
???????????????????????????????+?Environment.NewLine
???????????????????????????????+?Environment.NewLine
???????????????????????????????+?e.Error.Message);
?????????????}
?}
~~~
然后,添加聲明在App的構造函數中,使其在安裝時進行版本更新檢查,
~~~
??public?App()
??{
??????????????if?(App.Current.InstallState?==?InstallState.Installed)
??????????????{
??????????????????App.Current.CheckAndDownloadUpdateCompleted?+=?OnCheckAndDownloadUpdateCompleted;
??????????????????App.Current.CheckAndDownloadUpdateAsync();
??????????????}
??????????????this.Startup?+=?this.Application_Startup;
?????????????this.Exit?+=?this.Application_Exit;
?????????????this.UnhandledException?+=?this.Application_UnhandledException;
?????????????InitializeComponent();
}
~~~
這樣,在Silverlight OOB應用啟動時,將檢測是否是否有新版本下載,如果有則會自動更新,在下次啟動應用時生效。

這里需要說明的是,Silverlight Out of Browser的自動更新,需要在信任應用(Trusted Application)下才能正常執行,否則將返回權限異常錯誤。
Silverlight Out of Browser的Silent安裝模式
我們在[Silverlight實例教程 - Out of Browser配置,安裝和卸載](http://www.cnblogs.com/jv9/archive/2010/07/10/1774687.html)中討論過Silverlight OOB應用安裝的兩種方式,這里,我們將介紹Silverlight 4中新推出的一種安裝方式,叫做Silent安裝。這種安裝方式是使用命令的方式安裝Silverlight OOB應用到本地,該方式不會在客戶端顯示任何窗口提示信息,悄然的把應用安裝到本地。通常,一些開發人員習慣該安裝方式應用于一個BAT批處理文件中,讓非專業用戶簡單的安裝和使用其應用程序。其實這種安裝方式,也就是將XAP文件安裝到本地。
大家還記得[開篇](http://www.cnblogs.com/jv9/archive/2010/07/08/1773276.html)時介紹sllauncher.exe命令么"C:/Program Files (x86)/Microsoft Silverlight/sllauncher.exe" 1359404922.localhost,我們使用sllauncher命令執行本地XAP文件,當我們添加/install參數時,即可實現silent安裝OOB應用。
先看看具體的silent安裝命令格式:
"C:/Program?Files/Microsoft?Silverlight/sllauncher.exe"??
/install:"C:/SilverlightOOBDemo/SilverlightOOBDemo.xap"??
/origin:http://localhost:29162/ClientBin/SilverlightOOBDemo.xap?
/shortcut:desktop+startmenu??
/overwrite???
從上面的命令中可以看出sllauncher添加部分參數后,實現不同的功能操作,例如
/**install**:“XAP文件目的路徑”,這個參數是允許開發人員自定義XAP文件安裝路徑,可以是本地磁盤,也可以是網絡路徑。這個參數是silent安裝模式必需的參數。
/**origin**:"XAP文件源路徑",這個參數是設置XAP文件的源URL,其目的是為了自動更新而設。作為官方推薦設置該參數,保證其應用自動更新。
/**shortcut**:desktop+startmenu,從字面意思就可以看出,這個參數是創建應用快捷方式的,desktop+startmenu為在桌面和開始菜單都創建該應用快捷方式,如果只想創建桌面快捷方式,使用/shortcut:desktop即可,創建開始菜單快捷方式與之同理。
/**overwrite**,這個選項是確認當前安裝XAP文件是否覆蓋已經安裝過的XAP文件,通常來說,我們都會設置覆蓋,這樣保持應用為最新版本。
根據以上解釋,可以對照看出上面silent安裝命令的意思,運行sllauncher,安裝SilverlightOOBDemo.xap到本地,源更新地址為[http://localhost:29162/ClientBin/SilverlightOOBDemo.xap](http://localhost:29162/ClientBin/SilverlightOOBDemo.xap),創建桌面和開始菜單快捷方式,并且覆蓋原有版本。
另外我們再介紹兩個常用sllauncher命令參數:
/**emulate**:“XAP文件目的路徑”,該命令參數允許安裝OOB應用后,自動運行該應用,就像現在很多軟件自帶的autorun功能相似。
使用方法:
"C:/Program?Files/Microsoft?Silverlight/sllauncher.exe"??
/emulate:"C:/SilverlightOOBDemo/SilverlightOOBDemo.xap"??
/origin:http://localhost:29162/ClientBin/SilverlightOOBDemo.xap?
/overwrite???
/**uninstall**,該命令參數允許開發人員通過命令的方式卸載Silverlight OOB應用。其使用方法:
"C:/Program?Files/Microsoft?Silverlight/sllauncher.exe"??
/uninstall
/origin:http://localhost:29162/ClientBin/SilverlightOOBDemo.xap?
看到這里,我想大家應該有一些明白了,無論是安裝還是運行Silverlight OOB應用都和sllauncher命令有關,
安裝時,使用/install參數,
運行時,使用默認"C:/Program Files (x86)/Microsoft Silverlight/sllauncher.exe" 1359404922.localhost,
卸載時,使用/uninstall參數。
這個就是Silverlight 4中Out of Browser應用特性之一,Silent Install。
寫到這里,[Silverlight 4 Out of Browser實例系列](http://www.cnblogs.com/jv9/archive/2010/08/03/1791632.html)也應該結束了,在該系列中,我們結合著實際例程學習了Silverlight Out of Browser的基礎知識以及開發技巧。
在以后的時間里,希望大家能夠勤于動手,多實踐,開發出更多個性化的Silverlight Out of Browser應用。
歡迎大家加入"專注Silverlight" 技術討論群:
32679955(六群)
23413513(五群)
32679922(四群)
100844510(三群)
37891947(二群)
22308706(一群)
?
- 前言
- Out of Browser開篇
- Out of Browser配置,安裝和卸載
- Out of Browser的自定義應用
- Out of Browser存取本地文件系統
- Out of Browser與COM的交互基礎
- Out of Browser與Office的互操作
- Out of Browser的Debug和Notifications窗口
- Out of Browser音樂播放器
- Out of Browser與COM互操作實例
- Out of Browser在線更新和Silent安裝
- Validation數據驗證開篇
- Validation數據驗證基礎屬性和事件
- Validation數據驗證DataAnnotation機制和調試技巧
- Validation服務器端異步數據驗證
- Validation客戶端同步數據驗證
- Validation用戶提交數據驗證捕獲
- Datagrid,Dataform數據驗證和ValidationSummary
- 自定義擴展Validation類,驗證框架的總結和建議
- Navigation導航框架開篇
- 理解Navigation導航框架Frame類
- 理解Navigation導航框架Page類
- Navigation導航框架URI映射機制
- Navigation導航框架傳遞參數