views:

44

answers:

1

I have a silverlight application which users can install out-of-browser.

When the right-click and look at the update panel, it is set to "check for updates and let me choose whether to download and install them:

alt text

However, with the following code, my application detects and downloads a new version automatically, and the new version is available upon the next start of the application without any user interaction:

App.xaml.cs:

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)
    {
        //an new version has been downloaded and silverlight version is the same
        //so user just has to restart application
    }
    else if (e.Error != null &&
        e.Error is PlatformNotSupportedException)
    {
        //a new version is available but the silverlight version has changed
        //so user has to go to new website and install the appropriate silverlight version
    }
    else
    {
        //no update is available
    }
}

This happens to be what I want for this particular application, however:

Isn't this misleading to the user since the Silverlight player leads him to believe that he will be able to "choose whether to download and install updates" when in fact, updates are being downloaded and installed without his knowing?

+6  A: 

Silverlight is not misleading the user. This configuration dialog is not for your app and the updates are for Silverlight itself, not your app.

Franci Penov