Changeset 13333


Ignore:
Timestamp:
11/23/15 11:32:22 (2 years ago)
Author:
gkronber
Message:

#2522: removed classes for plugin uploading and updating

Location:
branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3
Files:
19 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.Designer.cs

    r12012 r13333  
    5151      this.localPluginsTabPage = new System.Windows.Forms.TabPage();
    5252      this.localPluginsView = new HeuristicLab.PluginInfrastructure.Advanced.InstalledPluginsView();
    53       this.availablePluginsTabPage = new System.Windows.Forms.TabPage();
    54       this.remotePluginInstaller = new HeuristicLab.PluginInfrastructure.Advanced.AvailablePluginsView();
    55       this.uploadPluginsTabPage = new System.Windows.Forms.TabPage();
    56       this.pluginEditor = new HeuristicLab.PluginInfrastructure.Advanced.UploadPluginsView();
    57       this.manageProductsTabPage = new System.Windows.Forms.TabPage();
    58       this.productEditor = new HeuristicLab.PluginInfrastructure.Advanced.EditProductsView();
    5953      this.logTabPage = new System.Windows.Forms.TabPage();
    6054      this.logTextBox = new System.Windows.Forms.TextBox();
    61       this.menuStrip = new System.Windows.Forms.MenuStrip();
    62       this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    63       this.connectionSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    6455      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    6556      this.statusStrip.SuspendLayout();
    6657      this.tabControl.SuspendLayout();
    6758      this.localPluginsTabPage.SuspendLayout();
    68       this.availablePluginsTabPage.SuspendLayout();
    69       this.uploadPluginsTabPage.SuspendLayout();
    70       this.manageProductsTabPage.SuspendLayout();
    7159      this.logTabPage.SuspendLayout();
    72       this.menuStrip.SuspendLayout();
    7360      this.SuspendLayout();
    7461      //
     
    10289                  | System.Windows.Forms.AnchorStyles.Right)));
    10390      this.tabControl.Controls.Add(this.localPluginsTabPage);
    104       this.tabControl.Controls.Add(this.availablePluginsTabPage);
    105       this.tabControl.Controls.Add(this.uploadPluginsTabPage);
    106       this.tabControl.Controls.Add(this.manageProductsTabPage);
    10791      this.tabControl.Controls.Add(this.logTabPage);
    10892      this.tabControl.Location = new System.Drawing.Point(12, 27);
     
    130114                  | System.Windows.Forms.AnchorStyles.Left)
    131115                  | System.Windows.Forms.AnchorStyles.Right)));
    132       this.localPluginsView.InstallationManager = null;
     116//       this.localPluginsView.InstallationManager = null;
    133117      this.localPluginsView.Location = new System.Drawing.Point(6, 6);
    134118      this.localPluginsView.Name = "localPluginsView";
     
    137121      this.localPluginsView.StatusView = null;
    138122      this.localPluginsView.TabIndex = 0;
    139       //
    140       // availablePluginsTabPage
    141       //
    142       this.availablePluginsTabPage.Controls.Add(this.remotePluginInstaller);
    143       this.availablePluginsTabPage.Location = new System.Drawing.Point(4, 22);
    144       this.availablePluginsTabPage.Name = "availablePluginsTabPage";
    145       this.availablePluginsTabPage.Padding = new System.Windows.Forms.Padding(3);
    146       this.availablePluginsTabPage.Size = new System.Drawing.Size(590, 366);
    147       this.availablePluginsTabPage.TabIndex = 1;
    148       this.availablePluginsTabPage.Text = "Available Plugins";
    149       this.toolTip.SetToolTip(this.availablePluginsTabPage, "Download and install new plugins");
    150       this.availablePluginsTabPage.UseVisualStyleBackColor = true;
    151       //
    152       // remotePluginInstaller
    153       //
    154       this.remotePluginInstaller.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    155                   | System.Windows.Forms.AnchorStyles.Left)
    156                   | System.Windows.Forms.AnchorStyles.Right)));
    157       this.remotePluginInstaller.InstallationManager = null;
    158       this.remotePluginInstaller.Location = new System.Drawing.Point(6, 6);
    159       this.remotePluginInstaller.Name = "remotePluginInstaller";
    160       this.remotePluginInstaller.PluginManager = null;
    161       this.remotePluginInstaller.Size = new System.Drawing.Size(578, 354);
    162       this.remotePluginInstaller.StatusView = null;
    163       this.remotePluginInstaller.TabIndex = 14;
    164       //
    165       // uploadPluginsTabPage
    166       //
    167       this.uploadPluginsTabPage.Controls.Add(this.pluginEditor);
    168       this.uploadPluginsTabPage.Location = new System.Drawing.Point(4, 22);
    169       this.uploadPluginsTabPage.Name = "uploadPluginsTabPage";
    170       this.uploadPluginsTabPage.Padding = new System.Windows.Forms.Padding(3);
    171       this.uploadPluginsTabPage.Size = new System.Drawing.Size(590, 366);
    172       this.uploadPluginsTabPage.TabIndex = 3;
    173       this.uploadPluginsTabPage.Text = "Upload Plugins";
    174       this.toolTip.SetToolTip(this.uploadPluginsTabPage, "Upload plugins");
    175       this.uploadPluginsTabPage.UseVisualStyleBackColor = true;
    176       //
    177       // pluginEditor
    178       //
    179       this.pluginEditor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    180                   | System.Windows.Forms.AnchorStyles.Left)
    181                   | System.Windows.Forms.AnchorStyles.Right)));
    182       this.pluginEditor.Location = new System.Drawing.Point(6, 6);
    183       this.pluginEditor.Name = "pluginEditor";
    184       this.pluginEditor.PluginManager = null;
    185       this.pluginEditor.Size = new System.Drawing.Size(578, 354);
    186       this.pluginEditor.StatusView = null;
    187       this.pluginEditor.TabIndex = 0;
    188       //
    189       // manageProductsTabPage
    190       //
    191       this.manageProductsTabPage.Controls.Add(this.productEditor);
    192       this.manageProductsTabPage.Location = new System.Drawing.Point(4, 22);
    193       this.manageProductsTabPage.Name = "manageProductsTabPage";
    194       this.manageProductsTabPage.Padding = new System.Windows.Forms.Padding(3);
    195       this.manageProductsTabPage.Size = new System.Drawing.Size(590, 366);
    196       this.manageProductsTabPage.TabIndex = 4;
    197       this.manageProductsTabPage.Text = "Manage Products";
    198       this.toolTip.SetToolTip(this.manageProductsTabPage, "Create and manage products");
    199       this.manageProductsTabPage.UseVisualStyleBackColor = true;
    200       //
    201       // productEditor
    202       //
    203       this.productEditor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    204                   | System.Windows.Forms.AnchorStyles.Left)
    205                   | System.Windows.Forms.AnchorStyles.Right)));
    206       this.productEditor.Location = new System.Drawing.Point(6, 6);
    207       this.productEditor.Name = "productEditor";
    208       this.productEditor.Size = new System.Drawing.Size(578, 354);
    209       this.productEditor.StatusView = null;
    210       this.productEditor.TabIndex = 0;
    211123      //
    212124      // logTabPage
     
    234146      this.logTextBox.TabIndex = 0;
    235147      //
    236       // menuStrip
    237       //
    238       this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
    239             this.optionsToolStripMenuItem});
    240       this.menuStrip.Location = new System.Drawing.Point(0, 0);
    241       this.menuStrip.Name = "menuStrip";
    242       this.menuStrip.Size = new System.Drawing.Size(622, 24);
    243       this.menuStrip.TabIndex = 17;
    244       this.menuStrip.Text = "menuStrip1";
    245       //
    246       // optionsToolStripMenuItem
    247       //
    248       this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
    249             this.connectionSettingsToolStripMenuItem});
    250       this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
    251       this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
    252       this.optionsToolStripMenuItem.Text = "Options";
    253       //
    254       // connectionSettingsToolStripMenuItem
    255       //
    256       this.connectionSettingsToolStripMenuItem.Image = global::HeuristicLab.PluginInfrastructure.Resources.NetworkConnections;
    257       this.connectionSettingsToolStripMenuItem.Name = "connectionSettingsToolStripMenuItem";
    258       this.connectionSettingsToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
    259       this.connectionSettingsToolStripMenuItem.Text = "Connection Settings...";
    260       this.connectionSettingsToolStripMenuItem.Click += new System.EventHandler(this.connectionSettingsToolStripMenuItem_Click);
    261       //
    262148      // InstallationManagerForm
    263149      //
     
    267153      this.Controls.Add(this.tabControl);
    268154      this.Controls.Add(this.statusStrip);
    269       this.Controls.Add(this.menuStrip);
    270155      this.Icon = global::HeuristicLab.PluginInfrastructure.Resources.HeuristicLab;
    271       this.MainMenuStrip = this.menuStrip;
    272156      this.Name = "InstallationManagerForm";
    273157      this.Text = "Plugin Manager";
     
    276160      this.tabControl.ResumeLayout(false);
    277161      this.localPluginsTabPage.ResumeLayout(false);
    278       this.availablePluginsTabPage.ResumeLayout(false);
    279       this.uploadPluginsTabPage.ResumeLayout(false);
    280       this.manageProductsTabPage.ResumeLayout(false);
    281162      this.logTabPage.ResumeLayout(false);
    282163      this.logTabPage.PerformLayout();
    283       this.menuStrip.ResumeLayout(false);
    284       this.menuStrip.PerformLayout();
    285164      this.ResumeLayout(false);
    286165      this.PerformLayout();
     
    293172    private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar;
    294173    private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
    295     private AvailablePluginsView remotePluginInstaller;
    296174    private System.Windows.Forms.TabControl tabControl;
    297175    private System.Windows.Forms.TabPage localPluginsTabPage;
    298     private System.Windows.Forms.TabPage availablePluginsTabPage;
    299176    private System.Windows.Forms.TabPage logTabPage;
    300177    private System.Windows.Forms.TextBox logTextBox;
    301     private System.Windows.Forms.MenuStrip menuStrip;
    302     private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
    303     private System.Windows.Forms.ToolStripMenuItem connectionSettingsToolStripMenuItem;
    304     private System.Windows.Forms.TabPage uploadPluginsTabPage;
    305     private System.Windows.Forms.TabPage manageProductsTabPage;
    306     private UploadPluginsView pluginEditor;
    307     private EditProductsView productEditor;
    308178    private InstalledPluginsView localPluginsView;
    309179    private System.Windows.Forms.ToolTip toolTip;
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstallationManagerForm.cs

    r12012 r13333  
    3030namespace HeuristicLab.PluginInfrastructure.Advanced {
    3131  internal partial class InstallationManagerForm : Form, IStatusView {
    32     private InstallationManager installationManager;
    3332    private string pluginDir;
    3433
     
    4544      pluginDir = Application.StartupPath;
    4645
    47       installationManager = new InstallationManager(pluginDir);
    48       installationManager.PluginInstalled += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled);
    49       installationManager.PluginRemoved += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved);
    50       installationManager.PluginUpdated += new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated);
    51       installationManager.PreInstallPlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin);
    52       installationManager.PreRemovePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin);
    53       installationManager.PreUpdatePlugin += new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin);
    54 
    55       // show or hide controls for uploading plugins based on setting
    56       if (!HeuristicLab.PluginInfrastructure.Properties.Settings.Default.ShowPluginUploadControls) {
    57         tabControl.Controls.Remove(uploadPluginsTabPage);
    58         tabControl.Controls.Remove(manageProductsTabPage);
    59       } else {
    60         pluginEditor.PluginManager = pluginManager;
    61       }
    62 
    6346      localPluginsView.StatusView = this;
    6447      localPluginsView.PluginManager = pluginManager;
    65       localPluginsView.InstallationManager = installationManager;
    66 
    67       remotePluginInstaller.StatusView = this;
    68       remotePluginInstaller.InstallationManager = installationManager;
    69       remotePluginInstaller.PluginManager = pluginManager;
    70 
    71       pluginEditor.StatusView = this;
    72       pluginEditor.PluginManager = pluginManager;
    73 
    74       productEditor.StatusView = this;
     48      // localPluginsView.InstallationManager = installationManager;
    7549    }
    7650
     
    9468    #endregion
    9569
    96     #region installation manager event handlers
    97     private void installationManager_PreUpdatePlugin(object sender, PluginInfrastructureCancelEventArgs e) {
    98       if (e.Plugins.Count() > 0) {
    99         e.Cancel = (bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmUpdateAction, e.Plugins) == false;
    100       }
    101     }
    102 
    103     private void installationManager_PreRemovePlugin(object sender, PluginInfrastructureCancelEventArgs e) {
    104       if (e.Plugins.Count() > 0) {
    105         e.Cancel = (bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmRemoveAction, e.Plugins) == false;
    106       }
    107     }
    108 
    109     private void installationManager_PreInstallPlugin(object sender, PluginInfrastructureCancelEventArgs e) {
    110       if (e.Plugins.Count() > 0)
    111         if ((bool)Invoke((Func<IEnumerable<IPluginDescription>, bool>)ConfirmInstallAction, e.Plugins) == true) {
    112           SetStatusStrip("Installing " + e.Plugins.Aggregate("", (a, b) => a.ToString() + "; " + b.ToString()));
    113           e.Cancel = false;
    114         } else {
    115           e.Cancel = true;
    116           SetStatusStrip("Install canceled");
    117         }
    118     }
    119 
    120     private void installationManager_PluginUpdated(object sender, PluginInfrastructureEventArgs e) {
    121       SetStatusStrip("Updated " + e.Entity);
    122     }
    123 
    124     private void installationManager_PluginRemoved(object sender, PluginInfrastructureEventArgs e) {
    125       SetStatusStrip("Removed " + e.Entity);
    126     }
    127 
    128     private void installationManager_PluginInstalled(object sender, PluginInfrastructureEventArgs e) {
    129       SetStatusStrip("Installed " + e.Entity);
    130     }
    131     #endregion
    13270
    13371    #region button events
    134     private void connectionSettingsToolStripMenuItem_Click(object sender, EventArgs e) {
    135       using (var conSetupView = new ConnectionSetupView()) {
    136         conSetupView.ShowDialog(this);
    137       }
    138     }
    13972    private void tabControl_SelectedIndexChanged(object sender, EventArgs e) {
    14073      toolStripStatusLabel.Text = string.Empty;
    14174    }
    142     #endregion
    143 
    144     #region confirmation dialogs
    145     private bool ConfirmRemoveAction(IEnumerable<IPluginDescription> plugins) {
    146       StringBuilder strBuilder = new StringBuilder();
    147       foreach (var plugin in plugins) {
    148         foreach (var file in plugin.Files) {
    149           strBuilder.AppendLine(Path.GetFileName(file.Name));
    150         }
    151       }
    152       using (var confirmationDialog = new ConfirmationDialog("Confirm Delete", "Do you want to delete following files?", strBuilder.ToString())) {
    153         return (confirmationDialog.ShowDialog(this)) == DialogResult.OK;
    154       }
    155     }
    156 
    157     private bool ConfirmUpdateAction(IEnumerable<IPluginDescription> plugins) {
    158       StringBuilder strBuilder = new StringBuilder();
    159       foreach (var plugin in plugins) {
    160         strBuilder.AppendLine(plugin.ToString());
    161       }
    162       using (var confirmationDialog = new ConfirmationDialog("Confirm Update", "Do you want to update following plugins?", strBuilder.ToString())) {
    163         return (confirmationDialog.ShowDialog(this)) == DialogResult.OK;
    164       }
    165     }
    166 
    167     private bool ConfirmInstallAction(IEnumerable<IPluginDescription> plugins) {
    168       foreach (var plugin in plugins) {
    169         if (!string.IsNullOrEmpty(plugin.LicenseText)) {
    170           using (var licenseConfirmationBox = new LicenseConfirmationDialog(plugin)) {
    171             if (licenseConfirmationBox.ShowDialog(this) != DialogResult.OK)
    172               return false;
    173           }
    174         }
    175       }
    176       return true;
    177     }
    178 
    179 
    18075    #endregion
    18176
     
    19186    #endregion
    19287
    193 
    194     protected override void OnClosing(CancelEventArgs e) {
    195       installationManager.PluginInstalled -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginInstalled);
    196       installationManager.PluginRemoved -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginRemoved);
    197       installationManager.PluginUpdated -= new EventHandler<PluginInfrastructureEventArgs>(installationManager_PluginUpdated);
    198       installationManager.PreInstallPlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreInstallPlugin);
    199       installationManager.PreRemovePlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreRemovePlugin);
    200       installationManager.PreUpdatePlugin -= new EventHandler<PluginInfrastructureCancelEventArgs>(installationManager_PreUpdatePlugin);
    201       base.OnClosing(e);
    202     }
    20388
    20489    #region IStatusView Members
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.Designer.cs

    r12012 r13333  
    5454      this.pluginImageList = new System.Windows.Forms.ImageList(this.components);
    5555      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    56       this.refreshButton = new System.Windows.Forms.Button();
    57       this.removeButton = new System.Windows.Forms.Button();
    58       this.updateSelectedButton = new System.Windows.Forms.Button();
    5956      this.SuspendLayout();
    6057      //
     
    8683      this.localPluginsListView.View = System.Windows.Forms.View.Details;
    8784      this.localPluginsListView.ItemActivate += new System.EventHandler(this.localPluginsListView_ItemActivate);
    88       this.localPluginsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.pluginsListView_ItemChecked);
    8985      //
    9086      // nameHeader
     
    109105      this.pluginImageList.TransparentColor = System.Drawing.Color.Transparent;
    110106      //
    111       // refreshButton
    112       //
    113       this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    114       this.refreshButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Repeat;
    115       this.refreshButton.Location = new System.Drawing.Point(0, 483);
    116       this.refreshButton.Name = "refreshButton";
    117       this.refreshButton.Size = new System.Drawing.Size(96, 25);
    118       this.refreshButton.TabIndex = 14;
    119       this.refreshButton.Text = "Refresh List";
    120       this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
    121       this.toolTip.SetToolTip(this.refreshButton, "Refresh List of Installed Plugins");
    122       this.refreshButton.UseVisualStyleBackColor = true;
    123       this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
    124       //
    125       // removeButton
    126       //
    127       this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    128       this.removeButton.Enabled = false;
    129       this.removeButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Remove;
    130       this.removeButton.Location = new System.Drawing.Point(222, 483);
    131       this.removeButton.Name = "removeButton";
    132       this.removeButton.Size = new System.Drawing.Size(110, 25);
    133       this.removeButton.TabIndex = 12;
    134       this.removeButton.Text = "Delete Selected";
    135       this.removeButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
    136       this.toolTip.SetToolTip(this.removeButton, "Delete all selected plugins from disk");
    137       this.removeButton.UseVisualStyleBackColor = true;
    138       this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
    139       //
    140       // updateSelectedButton
    141       //
    142       this.updateSelectedButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    143       this.updateSelectedButton.Enabled = false;
    144       this.updateSelectedButton.Image = global::HeuristicLab.PluginInfrastructure.Resources.Internet;
    145       this.updateSelectedButton.Location = new System.Drawing.Point(102, 483);
    146       this.updateSelectedButton.Name = "updateSelectedButton";
    147       this.updateSelectedButton.Size = new System.Drawing.Size(114, 25);
    148       this.updateSelectedButton.TabIndex = 6;
    149       this.updateSelectedButton.Text = "Update Selected";
    150       this.updateSelectedButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
    151       this.toolTip.SetToolTip(this.updateSelectedButton, "Update all selected plugins");
    152       this.updateSelectedButton.UseVisualStyleBackColor = true;
    153       this.updateSelectedButton.Click += new System.EventHandler(this.updateSelectedButton_Click);
    154       //
    155107      // LocalPluginsView
    156108      //
    157109      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    158110      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
    159       this.Controls.Add(this.refreshButton);
    160111      this.Controls.Add(this.localPluginsListView);
    161       this.Controls.Add(this.removeButton);
    162       this.Controls.Add(this.updateSelectedButton);
    163112      this.Name = "LocalPluginsView";
    164113      this.Size = new System.Drawing.Size(539, 508);
     
    169118    #endregion
    170119
    171     private System.Windows.Forms.Button updateSelectedButton;
    172     private System.Windows.Forms.Button removeButton;
    173120    private MultiSelectListView localPluginsListView;
    174121    private System.Windows.Forms.ColumnHeader nameHeader;
     
    177124    private System.Windows.Forms.ToolTip toolTip;
    178125    private System.Windows.Forms.ImageList pluginImageList;
    179     private System.Windows.Forms.Button refreshButton;
    180126    // private LocalPluginManagerView localPluginManagerView;
    181127  }
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Advanced/InstalledPluginsView.cs

    r12012 r13333  
    3131    private const string CheckingPluginsMessage = "Checking for updated plugins...";
    3232    private const string NoUpdatesAvailableMessage = "No updates available.";
    33     private BackgroundWorker removePluginsBackgroundWorker;
    34     private BackgroundWorker updatePluginsBackgroundWorker;
    3533
    3634    private ListViewGroup enabledPluginsGroup;
     
    4644    }
    4745
    48     private InstallationManager installationManager;
    49     public InstallationManager InstallationManager {
    50       get { return installationManager; }
    51       set { installationManager = value; }
    52     }
     46    // private InstallationManager installationManager;
     47    // public InstallationManager InstallationManager {
     48    //   get { return installationManager; }
     49    //   set { installationManager = value; }
     50    // }
    5351
    5452    public InstalledPluginsView()
     
    5856      disabledPluginsGroup = localPluginsListView.Groups["disabledPluginsGroup"];
    5957      pluginImageList.Images.Add(HeuristicLab.PluginInfrastructure.Resources.Plugin);
    60       removePluginsBackgroundWorker = new BackgroundWorker();
    61       removePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(removePluginsBackgroundWorker_DoWork);
    62       removePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(removePluginsBackgroundWorker_RunWorkerCompleted);
    63       updatePluginsBackgroundWorker = new BackgroundWorker();
    64       updatePluginsBackgroundWorker.DoWork += new DoWorkEventHandler(updatePluginsBackgroundWorker_DoWork);
    65       updatePluginsBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updatePluginsBackgroundWorker_RunWorkerCompleted);
    66 
    6758      UpdateControl();
    6859    }
    6960
    7061
    71 
    72     #region event handlers for plugin removal background worker
    73     void removePluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
    74       if (e.Error != null) {
    75         StatusView.ShowError("File Deletion Error", "There was problem while deleting files." + Environment.NewLine + e.Error.Message);
    76       }
    77       UpdateControl();
    78       StatusView.HideProgressIndicator();
    79       StatusView.UnlockUI();
    80     }
    81 
    82     void removePluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
    83       IEnumerable<IPluginDescription> pluginsToRemove = (IEnumerable<IPluginDescription>)e.Argument;
    84       if (pluginsToRemove.Count() > 0) {
    85         installationManager.Remove(pluginsToRemove);
    86         pluginManager.DiscoverAndCheckPlugins();
    87       }
    88     }
    89     #endregion
    90 
    9162    #region event handlers for update plugins backgroundworker
    92     void updatePluginsBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
    93       if (e.Error != null) {
    94         StatusView.ShowError("Connection Error",
    95           "There was an error while connecting to the server." + Environment.NewLine +
    96            "Please check your connection settings and user credentials.");
    97       }
    98       StatusView.RemoveMessage(CheckingPluginsMessage);
    99       StatusView.HideProgressIndicator();
    100       UpdateControl();
    101       StatusView.UnlockUI();
    102     }
    103 
    104     void updatePluginsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
    105       IEnumerable<IPluginDescription> selectedPlugins = (IEnumerable<IPluginDescription>)e.Argument;
    106       var remotePlugins = installationManager.GetRemotePluginList();
    107       // if there is a local plugin with same name and same major and minor version then it's an update
    108       var pluginsToUpdate = from remotePlugin in remotePlugins
    109                             let matchingLocalPlugins = from installedPlugin in selectedPlugins
    110                                                        where installedPlugin.Name == remotePlugin.Name
    111                                                        where installedPlugin.Version.Major == remotePlugin.Version.Major
    112                                                        where installedPlugin.Version.Minor == remotePlugin.Version.Minor
    113                                                        where IsNewerThan(remotePlugin, installedPlugin)
    114                                                        select installedPlugin
    115                             where matchingLocalPlugins.Count() > 0
    116                             select remotePlugin;
    117       if (pluginsToUpdate.Count() > 0) {
    118         bool cancelled;
    119         installationManager.Update(pluginsToUpdate, out cancelled);
    120         if (!cancelled) pluginManager.DiscoverAndCheckPlugins();
    121       }
    122     }
    123 
    12463    // compares for two plugins with same major and minor version if plugin1 is newer than plugin2
    12564    private static bool IsNewerThan(IPluginDescription plugin1, IPluginDescription plugin2) {
     
    14584        localPluginsListView.SuppressItemCheckedEvents = false;
    14685      }
    147       removeButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
    148       updateSelectedButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
    14986      Util.ResizeColumns(localPluginsListView.Columns.OfType<ColumnHeader>());
    15087    }
     
    16299    }
    163100
    164     private void pluginsListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
    165       // checked items are marked for removal
    166       if (e.Item.Checked) {
    167         List<ListViewItem> modifiedItems = new List<ListViewItem>();
    168         foreach (ListViewItem item in localPluginsListView.SelectedItems) {
    169           modifiedItems.Add(item);
    170           int oldItemsCount = 0;
    171           while (oldItemsCount < modifiedItems.Count) {
    172             oldItemsCount = modifiedItems.Count;
    173             var oldModifiedItems = new List<ListViewItem>(modifiedItems);
    174             foreach (var modifiedItem in oldModifiedItems) {
    175               var plugin = (IPluginDescription)modifiedItem.Tag;
    176               // also check all dependent plugins
    177               foreach (ListViewItem dependentItem in localPluginsListView.Items) {
    178                 var dependent = (IPluginDescription)dependentItem.Tag;
    179                 if (!modifiedItems.Contains(dependentItem) &&
    180                   !dependentItem.Checked && (from dep in dependent.Dependencies
    181                                              where dep.Name == plugin.Name
    182                                              where dep.Version == plugin.Version
    183                                              select dep).Any()) {
    184                   modifiedItems.Add(dependentItem);
    185                 }
    186               }
    187             }
    188           }
    189         }
    190         localPluginsListView.CheckItems(modifiedItems);
    191       } else {
    192         List<ListViewItem> modifiedItems = new List<ListViewItem>();
    193         foreach (ListViewItem item in localPluginsListView.SelectedItems) {
    194           modifiedItems.Add(item);
    195         }
    196         localPluginsListView.UncheckItems(modifiedItems);
    197       }
    198       OnItemsCheckedChanged(EventArgs.Empty);
    199     }
    200101
    201102    private void localPluginsListView_ItemActivate(object sender, EventArgs e) {
     
    206107      }
    207108    }
    208 
    209     private void OnItemsCheckedChanged(EventArgs eventArgs) {
    210       removeButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
    211       updateSelectedButton.Enabled = localPluginsListView.CheckedItems.Count > 0;
    212     }
    213 
    214     private void updateSelectedButton_Click(object sender, EventArgs e) {
    215       StatusView.LockUI();
    216       StatusView.ShowProgressIndicator();
    217       StatusView.RemoveMessage(NoUpdatesAvailableMessage);
    218       StatusView.ShowMessage(CheckingPluginsMessage);
    219       var checkedPlugins = localPluginsListView.CheckedItems.OfType<ListViewItem>()
    220         .Select(item => item.Tag)
    221         .OfType<IPluginDescription>()
    222         .ToList();
    223       updatePluginsBackgroundWorker.RunWorkerAsync(checkedPlugins);
    224     }
    225 
    226     private void removeButton_Click(object sender, EventArgs e) {
    227       StatusView.LockUI();
    228       StatusView.ShowProgressIndicator();
    229       var checkedPlugins = localPluginsListView.CheckedItems.OfType<ListViewItem>()
    230         .Select(item => item.Tag)
    231         .OfType<IPluginDescription>()
    232         .ToList();
    233       removePluginsBackgroundWorker.RunWorkerAsync(checkedPlugins);
    234     }
    235 
    236     private void refreshButton_Click(object sender, EventArgs e) {
    237       StatusView.LockUI();
    238       StatusView.ShowProgressIndicator();
    239       // refresh = update empty list of plugins (plugins are reloaded)
    240       updatePluginsBackgroundWorker.RunWorkerAsync(new IPluginDescription[0]);
    241     }
    242109  }
    243110}
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/HeuristicLab.PluginInfrastructure-3.3.csproj

    r11650 r13333  
    121121  </ItemGroup>
    122122  <ItemGroup>
    123     <Compile Include="Advanced\AvailablePluginsView.cs">
     123    <Compile Include="Advanced\InstallationManagerControl.cs">
    124124      <SubType>UserControl</SubType>
    125125    </Compile>
    126     <Compile Include="Advanced\AvailablePluginsView.Designer.cs">
    127       <DependentUpon>AvailablePluginsView.cs</DependentUpon>
    128     </Compile>
    129     <Compile Include="Advanced\BasicUpdateView.cs">
    130       <SubType>UserControl</SubType>
    131     </Compile>
    132     <Compile Include="Advanced\BasicUpdateView.Designer.cs">
    133       <DependentUpon>BasicUpdateView.cs</DependentUpon>
    134     </Compile>
    135     <Compile Include="Advanced\ConfirmationDialog.cs">
    136       <SubType>Form</SubType>
    137     </Compile>
    138     <Compile Include="Advanced\ConfirmationDialog.Designer.cs">
    139       <DependentUpon>ConfirmationDialog.cs</DependentUpon>
    140     </Compile>
    141     <Compile Include="Advanced\ConnectionSetupView.cs">
    142       <SubType>Form</SubType>
    143     </Compile>
    144     <Compile Include="Advanced\ConnectionSetupView.Designer.cs">
    145       <DependentUpon>ConnectionSetupView.cs</DependentUpon>
    146     </Compile>
    147     <Compile Include="Advanced\PluginUpdaterForm.cs">
    148       <SubType>Form</SubType>
    149     </Compile>
    150     <Compile Include="Advanced\PluginUpdaterForm.Designer.cs">
    151       <DependentUpon>PluginUpdaterForm.cs</DependentUpon>
    152     </Compile>
    153     <Compile Include="Advanced\DeploymentService\AdminServiceClientFactory.cs" />
    154     <Compile Include="Advanced\DeploymentService\DeploymentServerCertificateValidator.cs" />
    155     <Compile Include="Advanced\DeploymentService\ServiceClients.cs" />
    156     <Compile Include="Advanced\DeploymentService\UpdateServiceClientFactory.cs" />
    157     <Compile Include="Advanced\EditProductsView.cs">
    158       <SubType>UserControl</SubType>
    159     </Compile>
    160     <Compile Include="Advanced\EditProductsView.Designer.cs">
    161       <DependentUpon>EditProductsView.cs</DependentUpon>
     126    <Compile Include="Advanced\InstallationManagerControl.Designer.cs">
     127      <DependentUpon>InstallationManagerControl.cs</DependentUpon>
     128    </Compile>
     129    <Compile Include="Advanced\InstallationManagerForm.cs">
     130      <SubType>Form</SubType>
     131    </Compile>
     132    <Compile Include="Advanced\InstallationManagerForm.Designer.cs">
     133      <DependentUpon>InstallationManagerForm.cs</DependentUpon>
    162134    </Compile>
    163135    <Compile Include="Advanced\InstalledPluginsView.cs">
     
    167139      <DependentUpon>InstalledPluginsView.cs</DependentUpon>
    168140    </Compile>
    169     <Compile Include="Advanced\LicenseConfirmationDialog.cs">
    170       <SubType>Form</SubType>
    171     </Compile>
    172     <Compile Include="Advanced\LicenseConfirmationDialog.Designer.cs">
    173       <DependentUpon>LicenseConfirmationDialog.cs</DependentUpon>
    174     </Compile>
    175     <Compile Include="Advanced\UploadPluginsView.cs">
    176       <SubType>UserControl</SubType>
    177     </Compile>
    178     <Compile Include="Advanced\UploadPluginsView.Designer.cs">
    179       <DependentUpon>UploadPluginsView.cs</DependentUpon>
    180     </Compile>
    181     <Compile Include="Advanced\Util.cs" />
    182     <Compile Include="Advanced\InstallationManagerControl.cs">
    183       <SubType>UserControl</SubType>
    184     </Compile>
    185     <Compile Include="Advanced\InstallationManagerControl.Designer.cs">
    186       <DependentUpon>InstallationManagerControl.cs</DependentUpon>
    187     </Compile>
    188     <Compile Include="Advanced\InstallationManagerException.cs" />
    189     <Compile Include="Advanced\InstallationManager.cs" />
    190     <Compile Include="Advanced\InstallationManagerForm.cs">
    191       <SubType>Form</SubType>
    192     </Compile>
    193     <Compile Include="Advanced\InstallationManagerForm.Designer.cs">
    194       <DependentUpon>InstallationManagerForm.cs</DependentUpon>
    195     </Compile>
    196     <Compile Include="Advanced\DeploymentService\PluginDescription.cs">
     141    <Compile Include="Advanced\IStatusDisplay.cs">
    197142      <SubType>Code</SubType>
    198143    </Compile>
    199     <Compile Include="Advanced\DeploymentService\ProductDescription.cs">
    200       <SubType>Code</SubType>
    201     </Compile>
    202     <Compile Include="Advanced\IStatusDisplay.cs" />
    203144    <Compile Include="Advanced\LicenseView.cs">
    204145      <SubType>Form</SubType>
     
    218159    <Compile Include="Advanced\PluginView.Designer.cs">
    219160      <DependentUpon>PluginView.cs</DependentUpon>
     161    </Compile>
     162    <Compile Include="Advanced\Util.cs">
     163      <SubType>Code</SubType>
    220164    </Compile>
    221165    <Compile Include="AssemblyHelpers.cs" />
     
    257201    <Compile Include="Interfaces\IControlManager.cs" />
    258202    <Compile Include="Interfaces\IPlugin.cs" />
    259     <Compile Include="ControlManager.cs" />
    260203    <Compile Include="Interfaces\IPluginDescription.cs" />
    261204    <Compile Include="InvalidPluginException.cs" />
     
    272215    <Compile Include="Main.cs" />
    273216    <Compile Include="Properties\AssemblyInfo.cs" />
     217    <Compile Include="Sandboxing\SandboxManager.cs">
     218      <SubType>Code</SubType>
     219    </Compile>
    274220    <Compile Include="TypeExtensions.cs" />
    275     <None Include="Advanced\DeploymentService\GenerateServiceClients.cmd" />
    276221    <None Include="app.config">
    277222      <SubType>Designer</SubType>
     
    293238      <DependentUpon>Resources.resx</DependentUpon>
    294239    </Compile>
    295     <Compile Include="Sandboxing\SandboxManager.cs" />
    296240    <Compile Include="Starter\AboutDialog.cs">
    297241      <SubType>Form</SubType>
     
    314258  </ItemGroup>
    315259  <ItemGroup>
    316     <EmbeddedResource Include="Advanced\DeploymentService\services.heuristiclab.com.cer" />
    317260    <None Include="Resources\Error.ico" />
    318261    <Content Include="Resources\HeuristicLab.ico" />
     
    362305    </BootstrapperPackage>
    363306  </ItemGroup>
     307  <ItemGroup>
     308    <Folder Include="Advanced\DeploymentService\" />
     309  </ItemGroup>
    364310  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
    365311  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs

    r12012 r13333  
    3737  public partial class StarterForm : Form {
    3838    private const string pluginManagerItemName = "Plugin Manager";
    39     private const string updatePluginsItemName = "Updates Available";
    40     private const string optimizerItemName = "Optimizer";
     39    // private const string updatePluginsItemName = "Updates Available";
     40    private const string optimizerItemName = "Optimizer"; // TODO: encoding a specific name of an application here is problematic (applications are discovered dynamically)
    4141
    4242    private readonly ICommandLineArgument[] arguments;
    4343
    4444    private ListViewItem pluginManagerListViewItem;
    45     private bool abortRequested;
     45    private bool abortRequested; // TODO: necessary
    4646    private PluginManager pluginManager;
    4747    private SplashScreen splashScreen;
    48     private bool updatesAvailable = false;
    4948
    5049    /// <summary>
     
    6968      pluginManager.DiscoverAndCheckPlugins();
    7069      UpdateApplicationsList();
    71 
    72       CheckUpdatesAvailableAsync();
    7370    }
    7471
     
    122119            }
    123120          }
    124         } else if (selected.Text == updatePluginsItemName) {
    125           if (pluginManager.Plugins.Any(x => x.PluginState == PluginState.Loaded)) {
    126             MessageBox.Show("Updating is not possible while another HeuristicLab application is active." + Environment.NewLine +
    127               "Please stop all active HeuristicLab applications and try again.", "Update plugins",
    128               MessageBoxButtons.OK, MessageBoxIcon.Information);
    129           } else {
    130             try {
    131               Cursor = Cursors.AppStarting;
    132               using (PluginUpdaterForm form = new PluginUpdaterForm(pluginManager)) {
    133                 form.ShowDialog(this);
    134               }
    135               updatesAvailable = false;
    136               CheckUpdatesAvailableAsync();
    137               UpdateApplicationsList();
    138             }
    139             finally {
    140               Cursor = Cursors.Arrow;
    141             }
    142           }
    143121        } else {
    144122          ApplicationDescription app = (ApplicationDescription)applicationsListView.SelectedItems[0].Tag;
     
    182160        applicationsListView.Items.Clear();
    183161        AddPluginManagerItem();
    184         AddUpdatePluginsItem();
    185162
    186163        foreach (ApplicationDescription info in pluginManager.Applications) {
     
    209186
    210187      applicationsListView.Items.Add(pluginManagerListViewItem);
    211     }
    212 
    213     private void AddUpdatePluginsItem() {
    214       if (updatesAvailable) {
    215         var updateListViewItem = new ListViewItem(updatePluginsItemName, 1);
    216         updateListViewItem.Group = applicationsListView.Groups["Plugin Management"];
    217         updateListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(updateListViewItem, ""));
    218         updateListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(updateListViewItem, "Download and install updates"));
    219         updateListViewItem.ToolTipText = "Download and install updates";
    220 
    221         applicationsListView.Items.Add(updateListViewItem);
    222       }
    223     }
    224 
    225     private void CheckUpdatesAvailableAsync() {
    226       string pluginPath = Path.GetFullPath(Application.StartupPath);
    227       var task = Task.Factory.StartNew<bool>(() => {
    228         var installationManager = new InstallationManager(pluginPath);
    229         IEnumerable<IPluginDescription> installedPlugins = pluginManager.Plugins.OfType<IPluginDescription>();
    230         var remotePlugins = installationManager.GetRemotePluginList();
    231         // if there is a local plugin with same name and same major and minor version then it's an update
    232         var pluginsToUpdate = from remotePlugin in remotePlugins
    233                               let matchingLocalPlugins = from installedPlugin in installedPlugins
    234                                                          where installedPlugin.Name == remotePlugin.Name
    235                                                          where installedPlugin.Version.Major == remotePlugin.Version.Major
    236                                                          where installedPlugin.Version.Minor == remotePlugin.Version.Minor
    237                                                          where Util.IsNewerThan(remotePlugin, installedPlugin)
    238                                                          select installedPlugin
    239                               where matchingLocalPlugins.Count() > 0
    240                               select remotePlugin;
    241         return pluginsToUpdate.Count() > 0;
    242       });
    243       task.ContinueWith(t => {
    244         try {
    245           t.Wait();
    246           updatesAvailable = t.Result;
    247           UpdateApplicationsList();
    248         }
    249         catch (AggregateException ae) {
    250           ae.Handle(ex => {
    251             if (ex is InstallationManagerException) {
    252               // this is expected when no internet connection is available => do nothing
    253               return true;
    254             } else {
    255               return false;
    256             }
    257           });
    258         }
    259       });
    260188    }
    261189
  • branches/RefactorPluginInfrastructure-2522/HeuristicLab.PluginInfrastructure/3.3/app.config

    r11623 r13333  
    77  </configSections>
    88
    9   <userSettings>
    10     <HeuristicLab.PluginInfrastructure.Properties.Settings>
    11       <setting name="UpdateLocationUserName" serializeAs="String">
    12         <value>anonymous</value>
    13       </setting>
    14       <setting name="UpdateLocationPassword" serializeAs="String">
    15         <value>GetTheLab!</value>
    16       </setting>
    17       <setting name="ShowPluginUploadControls" serializeAs="String">
    18         <value>False</value>
    19       </setting>
    20       <setting name="UpdateLocation" serializeAs="String">
    21         <value>http://services.heuristiclab.com/Deployment-3.3/UpdateService.svc</value>
    22       </setting>
    23       <setting name="UpdateLocationAdministrationAddress" serializeAs="String">
    24         <value>http://services.heuristiclab.com/Deployment-3.3/AdminService.svc</value>
    25       </setting>
    26     </HeuristicLab.PluginInfrastructure.Properties.Settings>
    27   </userSettings>
    28 
    29   <system.serviceModel>
    30     <bindings>
    31       <wsHttpBinding>
    32         <binding name="WSHttpBinding_IUpdateService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="200000000" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
    33           <readerQuotas maxDepth="32" maxStringContentLength="200000000" maxArrayLength="200000000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
    34           <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
    35           <security mode="Message">
    36             <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
    37             <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
    38           </security>
    39         </binding>
    40 
    41         <binding name="WSHttpBinding_IAdminService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="200000000" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
    42           <readerQuotas maxDepth="32" maxStringContentLength="200000000" maxArrayLength="200000000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
    43           <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
    44           <security mode="Message">
    45             <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
    46             <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
    47           </security>
    48         </binding>
    49       </wsHttpBinding>
    50     </bindings>
    51 
    52     <client>
    53       <endpoint address="http://services.heuristiclab.com/Deployment-3.3/UpdateService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUpdateService" contract="HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.IUpdateService" name="WSHttpBinding_IUpdateService">
    54         <identity>
    55           <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
    56         </identity>
    57       </endpoint>
    58       <endpoint address="http://services.heuristiclab.com/Deployment-3.3/AdminService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAdminService" contract="HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.IAdminService" name="WSHttpBinding_IAdminService">
    59         <identity>
    60           <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
    61         </identity>
    62       </endpoint>
    63     </client>
    64   </system.serviceModel>
    659<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
Note: See TracChangeset for help on using the changeset viewer.