private void installPluginsButton_Click(object sender, EventArgs e) { StatusView.LockUI(); StatusView.ShowProgressIndicator(); var updateOrInstallInfo = new UpdateOrInstallPluginsBackgroundWorkerArgument(); // if there is a local plugin with same name and same major and minor version then it's an update var pluginsToUpdate = from remotePlugin in CheckedPlugins let matchingLocalPlugins = from localPlugin in pluginManager.Plugins where localPlugin.Name == remotePlugin.Name where localPlugin.Version.Major == remotePlugin.Version.Major where localPlugin.Version.Minor == remotePlugin.Version.Minor where IsNewerThan(remotePlugin, localPlugin) select localPlugin where matchingLocalPlugins.Count() > 0 select remotePlugin; // otherwise install a new plugin var pluginsToInstall = CheckedPlugins.Except(pluginsToUpdate); updateOrInstallInfo.PluginsToInstall = pluginsToInstall; updateOrInstallInfo.PluginsToUpdate = pluginsToUpdate; updateOrInstallPluginsBackgroundWorker.RunWorkerAsync(updateOrInstallInfo); }
private void installProductsButton_Click(object sender, EventArgs e) { StatusView.LockUI(); StatusView.ShowProgressIndicator(); var updateOrInstallInfo = new UpdateOrInstallPluginsBackgroundWorkerArgument(); var selectedProduct = (DeploymentService.ProductDescription)productsListView.SelectedItems[0].Tag; // if there is a local plugin with same name and same major and minor version then it's an update var pluginsToUpdate = from plugin in selectedProduct.Plugins let matchingLocalPlugins = from localPlugin in pluginManager.Plugins where localPlugin.Name == plugin.Name where localPlugin.Version.Major == plugin.Version.Major where localPlugin.Version.Minor == plugin.Version.Minor where IsNewerThan(plugin, localPlugin) select localPlugin where matchingLocalPlugins.Count() > 0 select plugin; // otherwise install a new plugin var pluginsToInstall = selectedProduct.Plugins.Except(pluginsToUpdate); updateOrInstallInfo.PluginsToInstall = pluginsToInstall .Cast<IPluginDescription>() .ToList(); updateOrInstallInfo.PluginsToUpdate = pluginsToUpdate .Cast<IPluginDescription>() .ToList(); updateOrInstallPluginsBackgroundWorker.RunWorkerAsync(updateOrInstallInfo); }