サーバーに新しい.xapファイルがアップロードされるたびに自動的に更新するブラウザー外のSilverlightアプリケーションを作成しました。
ユーザーがアプリケーションを右クリックして[更新]をクリックすると、デフォルトは[更新を確認しますが、ダウンロードしてインストールするかどうかを選択させてください]に設定されます。
(出典:deviantsart.com)
これにより、Silverlightアプリケーションでサーバーに新しい.xapファイルが存在するかどうかを自動的に検出し、存在する場合は、Silverlightクライアントがユーザーにインストールするかどうかを自動的に尋ねることができると思います。
ただし、これは当てはまりません。新しい.xapファイルをアップロードしましたが、Silverlightアプリケーションは何もしません。
これをApp.xaml.csに追加しても:
-
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new BaseApp();
if (Application.Current.IsRunningOutOfBrowser)
{
Application.Current.CheckAndDownloadUpdateAsync();
}
}
.xapファイルを更新すると、Silverlightアプリケーションは何もしません。
- この情報により、更新があるかどうかを確認し、更新がある場合はアプリケーションを再起動するようにユーザーに指示できましたが、ユーザーがアプリケーションを再起動しても何も起こりません。
-
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new BaseApp();
if (Application.Current.IsRunningOutOfBrowser)
{
Application.Current.CheckAndDownloadUpdateAsync();
Application.Current.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(Current_CheckAndDownloadUpdateCompleted);
}
}
void Current_CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
{
if (e.UpdateAvailable)
{
MessageBox.Show("An application update has been downloaded. " +
"Restart the application to run the new version.");
}
else if (e.Error != null &&
e.Error is PlatformNotSupportedException)
{
MessageBox.Show("An application update is available, " +
"but it requires a new version of Silverlight. " +
"Visit the application home page to upgrade.");
}
else
{
//no new version available
}
}
上記のダイアログが示すように、Silverlightアプリケーションを起動するたびに、新しい.xapファイルがあるかどうかを確認し、ある場合は、ユーザーにダウンロードするかどうかを尋ねる制御をSilverlightクライアントに渡すにはどうすればよいですか?可能です?