public PluginUpdaterForm(PluginManager pluginManager) : base() { InitializeComponent(); Text = "HeuristicLab Plugin Manager " + AssemblyHelpers.GetFileVersion(GetType().Assembly); pluginManager.PluginLoaded += pluginManager_PluginLoaded; pluginManager.PluginUnloaded += pluginManager_PluginUnloaded; pluginManager.Initializing += pluginManager_Initializing; pluginManager.Initialized += pluginManager_Initialized; pluginDir = Application.StartupPath; installationManager = new InstallationManager(pluginDir); installationManager.PluginInstalled += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled); installationManager.PluginRemoved += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved); installationManager.PluginUpdated += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated); installationManager.PreInstallPlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin); installationManager.PreRemovePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin); installationManager.PreUpdatePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin); this.pluginManager = pluginManager; updatePluginsBackgroundWorker = new BackgroundWorker(); updatePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(updatePluginsBackgroundWorker_DoWork); updatePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updatePluginsBackgroundWorker_RunWorkerCompleted); }
public void GetRemoteProductListTest() { string pluginDir = Environment.CurrentDirectory; try { InstallationManager target = new InstallationManager(pluginDir); var productList = target.GetRemoteProductList(); Assert.IsTrue(productList != null); } catch (Exception e) { Assert.Fail("Connection to the update service failed. " + e.Message); } }
public InstallationManagerForm(PluginManager pluginManager) : base() { InitializeComponent(); Text = "HeuristicLab Plugin Manager " + AssemblyHelpers.GetFileVersion(GetType().Assembly); pluginManager.PluginLoaded += pluginManager_PluginLoaded; pluginManager.PluginUnloaded += pluginManager_PluginUnloaded; pluginManager.Initializing += pluginManager_Initializing; pluginManager.Initialized += pluginManager_Initialized; pluginDir = Application.StartupPath; installationManager = new InstallationManager(pluginDir); installationManager.PluginInstalled += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled); installationManager.PluginRemoved += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved); installationManager.PluginUpdated += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated); installationManager.PreInstallPlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin); installationManager.PreRemovePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin); installationManager.PreUpdatePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin); // show or hide controls for uploading plugins based on setting if (!HeuristicLab.PluginInfrastructure.Properties.Settings.Default.ShowPluginUploadControls) { tabControl.Controls.Remove(uploadPluginsTabPage); tabControl.Controls.Remove(manageProductsTabPage); } else { pluginEditor.PluginManager = pluginManager; } localPluginsView.StatusView = this; localPluginsView.PluginManager = pluginManager; localPluginsView.InstallationManager = installationManager; remotePluginInstaller.StatusView = this; remotePluginInstaller.InstallationManager = installationManager; remotePluginInstaller.PluginManager = pluginManager; pluginEditor.StatusView = this; pluginEditor.PluginManager = pluginManager; productEditor.StatusView = this; }
private void CheckUpdatesAvailableAsync() { string pluginPath = Path.GetFullPath(Application.StartupPath); var task = Task.Factory.StartNew<bool>(() => { var installationManager = new InstallationManager(pluginPath); IEnumerable<IPluginDescription> installedPlugins = pluginManager.Plugins.OfType<IPluginDescription>(); var remotePlugins = installationManager.GetRemotePluginList(); // 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 remotePlugins let matchingLocalPlugins = from installedPlugin in installedPlugins where installedPlugin.Name == remotePlugin.Name where installedPlugin.Version.Major == remotePlugin.Version.Major where installedPlugin.Version.Minor == remotePlugin.Version.Minor where Util.IsNewerThan(remotePlugin, installedPlugin) select installedPlugin where matchingLocalPlugins.Count() > 0 select remotePlugin; return pluginsToUpdate.Count() > 0; }); task.ContinueWith(t => { try { t.Wait(); updatesAvailable = t.Result; UpdateApplicationsList(); } catch (AggregateException ae) { ae.Handle(ex => { if (ex is InstallationManagerException) { // this is expected when no internet connection is available => do nothing return true; } else { return false; } }); } }); }