1. 程式人生 > >Silverlight如何設定應用程式獨立於瀏覽器執行

Silverlight如何設定應用程式獨立於瀏覽器執行

 

本文介紹如何使用VS2010 BETA2來開發可獨立於瀏覽器的Silverlight應用程式,讓讓Silverlight應用程式獨立執行,附加:  儲存與執行下載的Silverlight應用程式檔案。

1 讓Silverlight應用程式獨立執行

使用Visual Studio 2010,可以很方便地將一個現有的Silverlight應用程式轉換為獨立執行。

         具體操作很簡單,在Visual Studio 2010中開啟Silverlight專案的屬性頁,在其Silverlight選項卡中選中“Enable running application out of the browser”選項,如下圖所示:

 

點選右部的“Out-of-Browser Settings…”,可以設定更多的選項:

         可以看到,在這個對話視窗中可以設定圖示,窗體大小等一些引數。最有趣的是左下角的兩個引數:

l  Use GPU Acceleration:使用本機顯示卡的硬體加速,當Silverlight應用程式使用了大量的動畫時,選中此項可以提升執行速度。之所以可以做到這點,是由於Silverlight應用程式是在客戶端直接執行的,Silverlight執行時可以直接呼叫本地硬體所提供的計算能力。

l  Show install menu:當選中此項時,在瀏覽器中右擊,會在右鍵選單中多一項命令:

    將 XXX 安裝到此計算機…

執行此命令,將出現一個嚮導:

         單擊確定即可安裝。

多懂一點:

       儲存與執行下載的Silverlight應用程式檔案

    預設情況下,下載的Silverlight程式檔案放置於當前登入使用者的個人資料資料夾下,請在安裝Windows的驅動器上查詢以下資料夾,就可以發現下載的Silverlight程式檔案放在此資料夾的子資料夾(比如“40171400.localhost”)裡。

\Users\登入使用者名稱\AppData\LocalLow\Microsoft\Silverlight\OutOfBrowser\ 40171400.localhost

       上面的數字是由Silverlight安裝程式隨機生成的,用於區分本機所安裝的Silverlight應用程式。

       Silverlight應用程式的執行是由一個名為sllauncher.exe的程式負責的,它將接收一個儲存了Silverlight應用程式檔案的資料夾名。

\Program Files\Microsoft Silverlight\sllauncher.exe 40171400.localhost

有趣的是,安裝到本地的Silverlight應用程式不會出現的控制面板“新增刪除程式”的列表中,如果要刪除程式,需要先執行它,然後右擊,從彈出選單中選擇“刪除此應用程式”命令。

         要刪除Silverlight應用程式,需要完成兩個步驟:

(1)       刪除保存於使用者資料夾中的程式檔案

(2)       刪除快捷方式。

2 程式設計控制Silverlight應用程式的安裝過程
我們可以在Silverlight應用程式中使用程式碼來直接啟動安裝過程,這需要呼叫Application物件的Install()方法。

App.Current.Install();

上面程式碼中的App.Current引用當前的Silverlight Application物件例項。

注意:

       如果沒有給Silverlight專案設定“Enable running application out of the browser”選項,直接呼叫Install()方法強制安裝Silverlight應用程式到本地,則Silverlight外掛將會引發一個ManagedRuntimeError,應用程式將會被強制結束。

另外,如果本Silverlight應用程式已經安裝到本地了,再次呼叫Install()方法會引發一個InvalidOperationException異常。

應用程式可以通過檢測一下Aplication物件的InstallState屬性來避免二次安裝。

            if (App.Current.InstallState == InstallState.NotInstalled)

                App.Current.Install();

            else

                tbInfo.Text = "本應用程式已經安裝,謝謝使用!";

       另外,Aplication物件提供了一個InstallStateChanged事件用於跟蹤安裝狀態的改變,可以編寫程式碼響應此事件,通知使用者安裝完成:

//在頁面建構函式中掛接InstallStateChanged事件

App.Current.InstallStateChanged +=

new EventHandler(Current_InstallStateChanged);

         以下是事件響應程式碼:

void Current_InstallStateChanged(object sender, EventArgs e)

{

            if (App.Current.InstallState == InstallState.Installed)

                tbInfo.Text = "安裝完成,您可以直接在桌面或開始選單中執行此應用程式";

}

       另外,Aplication物件還有一個IsRunningOutOfBrowser屬性用於檢測Silverlight應用程式是否運行於瀏覽器環境內。

       示例程式專案OutOfBrowserSilverlightApplication綜合了上述程式設計技巧,展示了一個Silverlight應用程式的安裝與解除安裝的基本方法。