新聞中心
Silverlight3一個很顯著的特點就是其應用可以在瀏覽器外運行。就是說一個在瀏覽器中運行的應用可以被獨立(detached)出來,并通過一 個桌面和開始菜單欄圖標來啟動執(zhí)行,而不在需要有網(wǎng)絡連接。這樣給人的感覺其就像一個普通的桌面應用而不是一個瀏覽器應用程序。

公司主營業(yè)務:成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出金華免費做網(wǎng)站回饋大家。
為了實現(xiàn)獨立(detached),用戶必須對這類應用有個明確的選擇:“該應用在沒有用戶通知的情況下是不可以detached它自己的。下面用一 個例子“Hello World”來展示一下:
還有一些代碼:
然后我們在瀏覽器中運行它并看到一個新的鼠標右擊菜單:
其允許將該應用獨立出來并安裝到本地。并且你會注意到,該菜單項是灰色的。同樣地,我們可以在按鈕事件中加入一些代碼并嘗試分離這 個應用。void OnClicked(object sender, RoutedEventArgs args){ App.Current.Detach();} 但它并 沒有啟作用,因為右鍵菜單依舊是灰的.原因在于這個應用沒有相應的元數(shù)據(jù)支持。為了提供元數(shù)據(jù),我們要編輯一下 appmanifest.xml 文件 :
注:上面這些圖標文件必須在VS中以內(nèi)容"Content"的文件嵌入到XAP文件中。但我并不確保你也需要這里所有的文件,特別是這個 "128x128"(文件);
這樣當單擊鼠標右鍵后該菜單項將會變成“有效”:
接著,我們前面創(chuàng)建的這個按鈕將會觸發(fā)一個對話框,提供給我們兩個選項:“將這個要運行在瀏覽器外的應用安裝到桌面或開始菜單中” 。
注:那是個標準對話框,而通過使用我本人頭像設置的對話框是下面這個樣子
但我不打算這樣做,我想還是顯示標準對話框會好一些。
如果點擊該對話框后,該應用會嘗試 detach 它自身。對我而言,它所做的工作就是確保本地XAP文件的有效性。而不是去嘗試把其它與它 相關聯(lián)的資源也獲取到本地。
注:第二個應用拷貝現(xiàn)在運行在了窗體中,它與瀏覽器窗體還是有一些區(qū)別的。
現(xiàn)在我在桌面上有了該應用的一個圖標:
并且在開始菜單中也有:
如果我從這兩個地方運行這個應用時,會看到一個“非瀏覽器”的應用:
此時當我在瀏覽器中運行這個原始(版本)的應用時,它顯示了相同的“Detached”狀態(tài):
好的,現(xiàn)在我修改一下原應用,將背景設置為"red":
然后再次運行并發(fā)布這個新的XAP到WEB服務器上。起初,它顯示“Detached”,然后它切換到“DetachedUpdatesAvailable".這意味著可以 告訴用戶該應用已被更新,并提示他們重啟該應用:
之后,將他們再運行該應用時,會獲取到新的版本(我更新到服務器上的那個版本):
如果想刪除該應用,可以在本地的“detached”拷貝或瀏覽器中右擊菜單:
如果我點擊上面菜單后,就會將開始菜單和桌面圖標移除,這樣在瀏覽器中該應用的狀態(tài)就從“Detached”變 成了“RunningOnline”.
盡管 App.Current.ExecutionState屬性返回“Detached”,但這與你在瀏覽器或本地運行該應用是無關的。這是需要有另一個標志來決定 該應用是從瀏覽器還是從本地(分離)啟動。
在Application中有一個標志即“RunningOffline”,看上去它會返回true/false 狀態(tài)。True意味著當前應用是從本地獨立啟動的,而 False則是在瀏覽器中啟動的。
就當前應用實際運行的代碼而言,當其離線時(offline),存在一個進程(文件位于:Program Files\Microsoft Silverlight\VERSION\sllauncher.exe).看上去它就是通過應用名稱去運行相應程序。使用Reflector去瀏覽一下,發(fā)現(xiàn)其進程好像是非托管的 運行,因此我不認為能從中能獲取一些內(nèi)部信息。但其值得一說的是該launcher的roles之一就是保持應用的上下文安全。即:如果應用是從域 foo.com獲取,那么該應用就必須本地化運行。盡管它是從foo.com上啟動(launched)的。
還有要注意的是這種detached在功能上貌似依賴于Isolated Storage(隔離)存儲。因為我發(fā)現(xiàn)當把應用“detached”時,必須在打開 Isolated Storage,真是如此。
【編輯推薦】
- 走向銀光 —— 一步一步學 Silverlight2
- 圖解Silverlight 3的7個新功能
- 用Silverlight 3的位圖API實現(xiàn)可寫位圖
新聞標題:圖文介紹在瀏覽器外運行Silverlight應用
網(wǎng)站網(wǎng)址:http://www.5511xx.com/article/cdcdgog.html


咨詢
建站咨詢
