Silverlight學習筆記1:瀏覽器外運行(Out Of Browser)及更新檢查

初學Silverlight,記錄下自己的成長,也與大家一起分享。 歡迎多多來做客~ 剛開始寫博客,不妥之處請多多指正@:) 您的支持和回覆是我最大的動力 環境:Win 2003 server SP2 , Silverlight 4.0 ,IE7.0 瀏覽器外運行(Out Of Browser),從Silverlight 3.0 版本開始支持,
  

初學Silverlight,記錄下自己的成長,也與大家一起分享。

歡迎多多來做客~

剛開始寫博客,不妥之處請多多指正@:)

您的支持和回覆是我最大的動力

環境:Win 2003 server SP2  , Silverlight 4.0 ,IE7.0

瀏覽器外運行(Out Of Browser),從Silverlight 3.0 版本開始支持,添加了可以脫離瀏覽器運行的功能。

將程序下載到本地運行,通過快捷方式打開Silverlight程序,so cool!

具體實現也非常容易,本文核心部分在於解決瀏覽器外運行的應用程序更新問題,即當用戶下載到本地後,服務器發佈了新版本,如何支持自動更新。

首先,新建Silverlight應用程序,命名爲OutOfBrowser,默認創建承載應用程序的網站名稱爲OutOfBrowser.Web.如下圖所示,點擊確定。

創建的解決方案默認情況:

打開MainPage.xaml文件,新增一個TextBlock控件,Text屬性修改爲“君不見黃河之水天上來”:

Mainpage.xaml
<UserControl x:Class="OutOfBrowser.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
d:DesignHeight
="300" d:DesignWidth="400">

<Grid x:Name="LayoutRoot" Background="White">
<TextBlock Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBlock1" Text="君不見黃河之水天上來" VerticalAlignment="Top" />
</Grid>
</UserControl>

右鍵點擊OutOfBrowser項目,選擇“屬性”,在Silverlight選項卡中,選中“允許在瀏覽器外運行程序”:

 

生成OutOfBrowser項目,在OutOfBrowser.Web項目的ClientBin目錄下,自動加載了OutOfBrowser.xap文件。此時在OutOfBrowser.Web中右鍵點擊OutOfBrowserTestPage.aspx頁面,選擇“在瀏覽器中查看”,頁面顯示“君不見黃河之水天上來”。右鍵點擊頁面,選擇“將OutOfBrowser應用程序安裝到此計算機”,可以選中在開始菜單及桌面上添加快捷方式。安裝後,自動打開頁面,展示內容相同。

關閉網頁和彈出的應用程序。修改MainPage.xaml文件中的文本框內容,增加一句話:“奔流到海不復回”,生成項目,瀏覽網頁,頁面顯示更新後的內容:“君不見黃河之水天上來,奔流到海不復回”。運行桌面版的應用程序,仍然顯示原內容:“君不見黃河之水天上來”。問題出現,如何在程序安裝到桌面後,自動更新新版本?

下面來解決這個問題。

打開OutOfBrowser項目中App.xaml.cs,在public App()函數中,添加更新事件:

代碼
public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;

//檢查更新
this.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(App_CheckAndDownloadUpdateCompleted);
this.CheckAndDownloadUpdateAsync();

InitializeComponent();
}

CheckAndDownloadUpdateAsync方法以異步方式檢查更新(如果需要,則下載最新版本)

當應用程序已經完成更新檢查並下載完成後,將觸發CheckAndDownloadUpdateCompleted事件。

我們在此實現App_CheckAndDownloadUpdateCompleted方法:

代碼
//檢查更新並下載完畢
void App_CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
{
//throw new NotImplementedException();
if (e.UpdateAvailable)
{
MessageBox.Show(
"發現新版本的Silverlight應用程序" +
",請重新啓用您的應用程序!");
}
else if (e.Error != null &&
e.Error
is PlatformNotSupportedException)
{
MessageBox.Show(
"發現新版本Silverlight應用程序," +
"但是不能運行在您的Silverlight版本中,請訪問程序主頁更新。");
}
else
{
MessageBox.Show(
"沒有新版本應用程序需要更新!");
}

}

編譯應用程序,並運行。在頁面上點擊右鍵,刪除應用程序,然後重新安裝。安裝完畢後,自動打開桌面版應用程序,並彈出提示信息“沒有新版本應用程序需要更新!”。說明檢查更新的功能已經調用。下面測試是否正常運行。

再次修改MainPage.xaml文件中的文本框內容,增加一句話:“君不見高堂明鏡悲白髮,朝如青絲暮成雪”,生成項目,瀏覽網頁,頁面顯示更新後的內容:“君不見黃河之水天上來,奔流到海不復回.君不見高堂明鏡悲白髮,朝如青絲暮成雪.”。

運行桌面版的應用程序,提示有新版本需要更新,更新後,提示用戶重新啓動。關閉應用程序,重新啓動,提示沒有新版本,說明已經更新,再看內容,也是最新的版本。程序按照我們的邏輯正常運行並生效。

這種提示方式旨在驗證更新的機制,大家可以根據實際需要進行修改和拓展。

暫時不曉得如何上傳源碼,有需要的朋友可以留下郵箱地址。

其實貌似已經夠詳細了~

點擊查看原文地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章