kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

iEdit for Silverlight を Silverlight 3対応 その2 〜 Out of Browser を試す

Silverlight 3 では、Google Chrome の アプリケーションショートカットのようにデスクトップアプリとして Silverlight アプリを使える Out of Browser Support (アウトオブブラウザー)機能が提供されています。オフライン環境でも一時的にローカルにデータをキャッシュし、オンラインになったときに Web サービスを呼び出してシンクロするというようなアプリケーションが実現可能です。
iEdit for Silverlight にも早速 Out of Browser 機能を追加してみました。
↓(要 Silverlight 3)
http://homepage3.nifty.com/kondoumh/software/ieditsl/iEditSLTestPage_enable_gpu.html

ツールバーの一番右のボタン(緑の矢印ボタン)をクリックするとインストールの確認ダイアログが表示されます。アイコンをスタートメニューおよびデスクトップに配置することができます。アイコンから起動すると デスクトップアプリケーションのように利用可能です。
アンインストールしたいときは、画面上で右クリックするとコンテキストメニューに「このアプリケーションを削除します・・」というメニューが出ますので、こちらからアンインストールすることができます。
アウトオブブラウザーアプリでは、オフラインになったりオンラインになったりとネットワークの接続状況の変化やブラウザー内で動作しているのかアウトオブブラウザーで動作しているのかなどを検知可能です。iEdit for Silverlight の画面の左下にステータスバーを追加して、ネットワーク接続状態、動作モードなどを表示するようにしてみました。

アウトオブブラウザーアプリでは、ClickOnce のようにアプリケーションがバージョンアップされたことを検知してクライアントから更新することができる機能があります。Silverlight 3 の Beta1では、 ExecutionStateChanged というイベントハンドラーで Enum が定義されていて DetachedUpdatesAvailable という値が入ってきて検出することが可能でした。ローカルのアセンブリー(XAPファイル)とサーバー側のアセンブリーのバージョン情報を比較しているのだと思うのですが、正式リリース版ではこのイベントハンドラーがなくなってしまったようです。アプリケーションのアップデート検知についてはもう少し調べる必要がありそうです。