public bool UpdatePlugin(Guid pluginId, bool runnerDisabled, ISolvedPluginConfiguration config, IEnumerable <RequirementLayer> layers, IPluginDiscoverer d) { SolvedConfigStatus s; Info = d.FindPlugin(pluginId); bool isAvailable = !(Info == null || Info.HasError || RunningError != null); if (isAvailable) { if (runnerDisabled) { s = SolvedConfigStatus.Disabled; } else { s = config.GetStatus(pluginId); foreach (RequirementLayer l in layers) { PluginRequirement r = l.PluginRequirements.Find(pluginId); if (r != null && (int)r.Requirement > (int)s) { s = (SolvedConfigStatus)r.Requirement; } } } } else { s = SolvedConfigStatus.Disabled; } return(DoUpdateStatus(isAvailable, s)); }