Silverlight例項教程 - Out of Browser線上更新和Silent安裝

weixin_34377065發表於2010-08-10

 

通過前幾篇的學習和實踐,相信大家可以很輕鬆的建立個性化Silverlight Out of Browser應用。上週,在銀光中國網論壇有人問到對於Silverlight Out of Browser應用,如何進行線上更新?這篇將針對該問題,介紹一下Silverlight的Out of Browser應用如何進行線上更新的,另外,我們將介紹Silverlight 4中提供的一個新的Out of Browser應用安裝方式。

 

首先說說Silverlight Out of Browser應用線上更新

在本系列開篇的時候,我們已經介紹,Silverlight Out of Browser和Silverlight Web應用有一些不同,Silverlight Web當更新了伺服器端的XAP檔案後,使用者在重新載入時,會自動更新XAP檔案到本地臨時目錄。而Silverlight Out of Browser應用的自動更新是通過呼叫CheckAndDownloadUpdateAsync方法和Application.CheckAndDownloadUpdateCompleted實現的,在判斷UpdateAvailable屬性為True時,說明一個新版本已經被發現和成功下載,相反則是False。如果在檢測中發現異常,則可以通過Error屬性檢視異常例項資訊。

 

按照常規方法,我們都會在應用啟動時進行更新檢測,所以,我們需要將程式碼新增到App.xaml的建構函式中,

首先建立OnCheckAndDownloadUpdateCompleted檢測是否有新版本允許下載,

 

 1 private void OnCheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
 2 {
 3             if (e.UpdateAvailable && e.Error == null)
 4             {
 5                 MessageBox.Show("應用新版本已經下載成功,將在下次啟動時生效。");
 6             }
 7             else if (e.Error != null)
 8             {
 9                 MessageBox.Show("在檢測應用更新時, 在"
10                               + "出現以下錯誤資訊:"
11                               + Environment.NewLine
12                               + Environment.NewLine
13                               + e.Error.Message);
14             }
15 }

 

 

然後,新增宣告在App的建構函式中,使其在安裝時進行版本更新檢查,

 

 1 public App()
 2 {
 3             if (App.Current.InstallState == InstallState.Installed)
 4             {
 5                 App.Current.CheckAndDownloadUpdateCompleted += OnCheckAndDownloadUpdateCompleted;
 6                 App.Current.CheckAndDownloadUpdateAsync();
 7             }
 8 
 9             this.Startup += this.Application_Startup;
10             this.Exit += this.Application_Exit;
11             this.UnhandledException += this.Application_UnhandledException;
12 
13             InitializeComponent();
14 }

 

 

這樣,在Silverlight OOB應用啟動時,將檢測是否是否有新版本下載,如果有則會自動更新,在下次啟動應用時生效。

 

這裡需要說明的是,Silverlight Out of Browser的自動更新,需要在信任應用(Trusted Application)下才能正常執行,否則將返回許可權異常錯誤。

 

Silverlight Out of Browser的Silent安裝模式

 

我們在Silverlight例項教程 - Out of Browser配置,安裝和解除安裝中討論過Silverlight OOB應用安裝的兩種方式,這裡,我們將介紹Silverlight 4中新推出的一種安裝方式,叫做Silent安裝。這種安裝方式是使用命令的方式安裝Silverlight OOB應用到本地,該方式不會在客戶端顯示任何視窗提示資訊,悄然的把應用安裝到本地。通常,一些開發人員習慣該安裝方式應用於一個BAT批處理檔案中,讓非專業使用者簡單的安裝和使用其應用程式。其實這種安裝方式,也就是將XAP檔案安裝到本地。

 

大家還記得開篇時介紹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,建立桌面和開始選單快捷方式,並且覆蓋原有版本。

 

另外我們再介紹兩個常用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例項系列也應該結束了,在該系列中,我們結合著實際例程學習了Silverlight Out of Browser的基礎知識以及開發技巧。

在以後的時間裡,希望大家能夠勤於動手,多實踐,開發出更多個性化的Silverlight Out of Browser應用。

 

 

 

歡迎大家加入"專注Silverlight" 技術討論群:

32679955(六群)
23413513(五群)
32679922(四群)
100844510(三群)
37891947(二群)
22308706(一群)

 

相關文章