Как я могу получить приложение Silverlight, чтобы проверить наличие обновлений и попросить пользователя обновить? - PullRequest
2 голосов
/ 13 июня 2010

Я создал приложение вне браузера silverlight , которое я хочу автоматически обновлять каждый раз, когда новый файл .xap загружается в сервер.

Когда пользователь щелкает правой кнопкой мыши приложение и нажимает Обновления , по умолчанию устанавливается значение " Проверить наличие обновлений, но позвольте мне выбрать, загружать ли и устанавливать их ":

альтернативный текст http://www.deviantsart.com/upload/uhjdal.png

Это наводит меня на мысль, что мое приложение 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, чтобы спросить пользователя, хочет ли он его загрузить , как видно из приведенного выше диалога возможно?

Ответы [ 3 ]

3 голосов
/ 13 июня 2010

Первый диалог о том, как устанавливаются обновления самого Silverlight, и не имеет никакого отношения к вашему приложению.

При использовании CheckAndDownloadUpdateAsync новый XAP должен загружаться автоматически.Согласно документу, нет способа предотвратить установку новой версии, которую вы называете CheckAndDownloadUpdateAsync.

1 голос
/ 13 июня 2010

Экран, к которому вы обращаетесь, не относится к каким-либо приложениям Silverlight. Это ссылка на сам плагин silverlight.

Метод CheckAndDownloadUpdateAsync должен был загрузить более новую версию, но пользователю нужно будет перезапустить приложение, чтобы начать использовать новое приложение. Вы используете свойство UpdateAvailable аргументов события в завершенном событии, чтобы определить, следует ли запрашивать перезапуск пользователя.

0 голосов
/ 31 мая 2016

Вы можете получить то, что хотите, включив внешнюю проверку контроля версий.посмотрите, отличается ли установленная версия от версии на сервере.

Если это не так, спросите пользователя, хотят ли они обновить.Если они выберут «да», то вызовите CheckAndDownloadUpdateAsync();

, в противном случае пропустите его, если они выберут «нет» или если версия такая же.

Есть много способов сделать свои собственные проверки версий.Включая статические свойства только для чтения, которые заполняются во время сборки и имеют какой-то аналогичный результат при запросе http.

Вы можете использовать веб-клиент, чтобы получить ответ от сервера и сравнить его с текущей загруженной версиейapplication.

Вы можете включить метод в функцию обратного вызова, чтобы перейти к отображению сообщения, которое говорит пользователю перезапустить приложение.

...