fc2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


2010年08月10日

ブラウザ外実行モード(OOB)でのアプリ更新

通常、SilverlightアプリはWebブラウザ上で動作しますので、アプリのバージョンアップは特に意識することなくWebサーバ上に配置したモジュールを入れ替えるだけで事足りるわけですが、ローカルPCにダウンロードしたモジュールを利用する「ブラウザ外実行モード(OOB)」ではどのようにしてバージョンアップすればいいのでしょう?
いたって素朴な疑問ですが、当然ながらそのための仕組みが用意されています。

下記コードをアプリ起動時(Appクラスのコンストラクタ辺りでしょうか)に入れておくだけで、バージョンチェック、および変更されている場合は自動的にダウンロードまで実行してくれます。
チェック+ダウンロードは非同期に行われるため、サンプルでは完了イベントを定義してエラーチェックやメッセージ通知を行っていますが、更新処理そのものは CheckAndDownloadUpdateAsync メソッドを一発呼ぶだけ。

問答無用、確認なしで更新(ダウンロード)されてしまうのはどうかと思いますが、バージョンチェック用のファイルをサーバ上に配置しておくなどすれば、事前にユーザに対して更新通知することもできるでしょうから、更新の仕組み自体はこれで充分かと思われ。
んでも、アセンブリが複数に分割されているような複雑なアプリの場合はどうすればいいんでしょうかね…。
// OOB自動更新
if (App.Current.IsRunningOutOfBrowser)
{
App.Current.CheckAndDownloadUpdateCompleted += (s, arg) =>
{
if (arg.Error == null && arg.UpdateAvailable)
MessageBox.Show("アプリケーションを更新しました。\n" +
"変更を反映するにはアプリケーションを再起動してください。",
"更新通知", MessageBoxButton.OK);
else if (arg.Error != null)
MessageBox.Show("アプリケーション更新でエラーが発生しました。\n" +
"\n[詳細]\n" + arg.Error.Message,
"更新エラー", MessageBoxButton.OK);
};
App.Current.CheckAndDownloadUpdateAsync();
}

[ posted by ken ]

この記事に対するコメント


この記事に対するコメントの投稿














管理者にだけ表示を許可する



この記事に対するトラックバック
トラックバックURL
http://comfair2.blog24.fc2.com/tb.php/482-8836cd4a
この記事にトラックバックする(FC2ブログユーザー)