diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs index a47ca4985..732a10893 100644 --- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs @@ -308,22 +308,26 @@ namespace MediaBrowser.Common.Implementations.Updates protected IEnumerable FilterCatalog(IEnumerable catalog, bool withAutoUpdateEnabled) { - var plugins = _applicationHost.Plugins; + var plugins = _applicationHost.Plugins.ToList(); if (withAutoUpdateEnabled) { - plugins = plugins.Where(p => p.Configuration.EnableAutoUpdate); + plugins = plugins + .Where(p => p.Configuration.EnableAutoUpdate) + .ToList(); } // Figure out what needs to be installed - return plugins.Select(p => + var packages = plugins.Select(p => { var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Configuration.UpdateClass); - return latestPluginInfo != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null; + return latestPluginInfo != null && latestPluginInfo.version != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null; - }).Where(p => !CompletedInstallations.Any(i => string.Equals(i.Name, p.name, StringComparison.OrdinalIgnoreCase))) - .Where(p => p != null && !string.IsNullOrWhiteSpace(p.sourceUrl)); + }).Where(i => i != null).ToList(); + + return packages + .Where(p => !string.IsNullOrWhiteSpace(p.sourceUrl) && !CompletedInstallations.Any(i => string.Equals(i.Name, p.name, StringComparison.OrdinalIgnoreCase))); } ///