private void InstallClick(object sender, RoutedEventArgs e) {
            InstallButton.IsEnabled = false;
            btnDone.IsEnabled = false;
            pluginList.IsEnabled = false;
            this.progress.Visibility = Visibility.Visible;
            PluginInstaller p = new PluginInstaller();
            callBack done = new callBack(InstallFinished);
            p.InstallPlugin(pluginList.SelectedItem as IPlugin, progress, this, done);
            MainWindow.Instance.KernelModified = true;

        }
 private void upgradePlugin_Click(object sender, RoutedEventArgs e) {
     if (pluginList.SelectedItem != null)
     {
         var plugin = pluginList.SelectedItem as IPlugin;
         //get our latest version so we can upgrade...
         var newPlugin = PluginManager.Instance.AvailablePlugins.Find(plugin, PluginManager.Instance.GetLatestVersion(plugin));
         if (newPlugin != null)
         {
             if (!string.IsNullOrEmpty(newPlugin.UpgradeInfo))
             {
                 //confirm upgrade
                 if (MessageBox.Show("This upgrade has the following information:\n\n" + newPlugin.UpgradeInfo + "\n\nDo you still wish to upgrade?", "Upgrade " + plugin.Name, MessageBoxButton.YesNo) == MessageBoxResult.No)
                 {
                     PopUpMsg.DisplayMessage("Upgrade Cancelled");
                     return;
                 }
             }
             var p = new PluginInstaller();
             var done = new CallBack(UpgradeFinished);
             this.IsEnabled = false;
             p.InstallPlugin(newPlugin, progress, this, done);
             KernelModified = true;
         }
     }
 }