示例#1
0
    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;
    }
示例#4
0
 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;
         }
       });
     }
   });
 }