2

サーバーに新しい.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クライアントに渡すにはどうすればよいですか?可能です?

4

3 に答える 3

3

最初のダイアログは、Silverlight 自体の更新プログラムのインストール方法に関するものであり、アプリケーションとは関係ありません。

CheckAndDownloadUpdateAsync を使用すると、新しい XAP が自動的にダウンロードされます。ドキュメントによると、CheckAndDownloadUpdateAsync を呼び出すと、新しいバージョンがインストールされないようにする方法はありません。

于 2010-06-13T16:29:46.673 に答える
1

参照している画面は、Silverlight アプリケーションに固有のものではありません。Silverlight プラグイン自体を参照しています。

メソッドはCheckAndDownloadUpdateAsync新しいバージョンをダウンロードする必要がありますが、ユーザーは新しいアプリケーションの使用を開始するためにアプリケーションを再起動する必要があります。完了イベントのイベント引数のプロパティを使用してUpdateAvailable、ユーザーに再起動を求めるかどうかを決定します。

于 2010-06-13T16:25:38.353 に答える
0

外部のバージョン管理チェックを組み込むことで、必要なものが得られる場合があります。インストールされているバージョンとサーバー上のバージョンが異なるかどうかを確認してください。

異なる場合は、更新するかどうかをユーザーに尋ねます。はいを選択した場合は、呼び出しますCheckAndDownloadUpdateAsync();

それ以外の場合は、no を選択した場合、またはバージョンが同じ場合はスキップします。

独自のバージョン管理チェックを行う方法は多数あります。ビルド時に設定され、http リクエストで同様の結果をもたらす静的な読み取り専用プロパティを含めます。

Web クライアントを使用してサーバーからの応答を取得し、それを現在ロードされているアプリケーションのバージョンと比較することができます。

コールバックにメソッドを組み込んで、ユーザーにアプリを再起動するように指示するメッセージを表示できます。

于 2016-05-31T18:39:29.917 に答える