| 
														
															@@ -10,6 +10,7 @@ using System.Runtime.Serialization; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using System.Security.Cryptography; 
														 | 
														
														 | 
														
															 using System.Security.Cryptography; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using System.Threading; 
														 | 
														
														 | 
														
															 using System.Threading; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using System.Threading.Tasks; 
														 | 
														
														 | 
														
															 using System.Threading.Tasks; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+using Jellyfin.Data.Events; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Common; 
														 | 
														
														 | 
														
															 using MediaBrowser.Common; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Common.Configuration; 
														 | 
														
														 | 
														
															 using MediaBrowser.Common.Configuration; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Common.Net; 
														 | 
														
														 | 
														
															 using MediaBrowser.Common.Net; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -17,6 +18,8 @@ using MediaBrowser.Common.Plugins; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Common.Updates; 
														 | 
														
														 | 
														
															 using MediaBrowser.Common.Updates; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Common.System; 
														 | 
														
														 | 
														
															 using MediaBrowser.Common.System; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Controller.Configuration; 
														 | 
														
														 | 
														
															 using MediaBrowser.Controller.Configuration; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+using MediaBrowser.Controller.Events; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+using MediaBrowser.Controller.Events.Updates; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Model.IO; 
														 | 
														
														 | 
														
															 using MediaBrowser.Model.IO; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Model.Net; 
														 | 
														
														 | 
														
															 using MediaBrowser.Model.Net; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 using MediaBrowser.Model.Serialization; 
														 | 
														
														 | 
														
															 using MediaBrowser.Model.Serialization; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -36,6 +39,7 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// </summary> 
														 | 
														
														 | 
														
															         /// </summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private readonly ILogger<InstallationManager> _logger; 
														 | 
														
														 | 
														
															         private readonly ILogger<InstallationManager> _logger; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private readonly IApplicationPaths _appPaths; 
														 | 
														
														 | 
														
															         private readonly IApplicationPaths _appPaths; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        private readonly IEventManager _eventManager; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private readonly IHttpClientFactory _httpClientFactory; 
														 | 
														
														 | 
														
															         private readonly IHttpClientFactory _httpClientFactory; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private readonly IJsonSerializer _jsonSerializer; 
														 | 
														
														 | 
														
															         private readonly IJsonSerializer _jsonSerializer; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private readonly IServerConfigurationManager _config; 
														 | 
														
														 | 
														
															         private readonly IServerConfigurationManager _config; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -65,23 +69,20 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ILogger<InstallationManager> logger, 
														 | 
														
														 | 
														
															             ILogger<InstallationManager> logger, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IApplicationHost appHost, 
														 | 
														
														 | 
														
															             IApplicationHost appHost, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IApplicationPaths appPaths, 
														 | 
														
														 | 
														
															             IApplicationPaths appPaths, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            IEventManager eventManager, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IHttpClientFactory httpClientFactory, 
														 | 
														
														 | 
														
															             IHttpClientFactory httpClientFactory, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IJsonSerializer jsonSerializer, 
														 | 
														
														 | 
														
															             IJsonSerializer jsonSerializer, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IServerConfigurationManager config, 
														 | 
														
														 | 
														
															             IServerConfigurationManager config, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IFileSystem fileSystem, 
														 | 
														
														 | 
														
															             IFileSystem fileSystem, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IZipClient zipClient) 
														 | 
														
														 | 
														
															             IZipClient zipClient) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if (logger == null) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                throw new ArgumentNullException(nameof(logger)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _currentInstallations = new List<(InstallationInfo, CancellationTokenSource)>(); 
														 | 
														
														 | 
														
															             _currentInstallations = new List<(InstallationInfo, CancellationTokenSource)>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _completedInstallationsInternal = new ConcurrentBag<InstallationInfo>(); 
														 | 
														
														 | 
														
															             _completedInstallationsInternal = new ConcurrentBag<InstallationInfo>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _logger = logger; 
														 | 
														
														 | 
														
															             _logger = logger; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _applicationHost = appHost; 
														 | 
														
														 | 
														
															             _applicationHost = appHost; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _appPaths = appPaths; 
														 | 
														
														 | 
														
															             _appPaths = appPaths; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            _eventManager = eventManager; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _httpClientFactory = httpClientFactory; 
														 | 
														
														 | 
														
															             _httpClientFactory = httpClientFactory; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _jsonSerializer = jsonSerializer; 
														 | 
														
														 | 
														
															             _jsonSerializer = jsonSerializer; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _config = config; 
														 | 
														
														 | 
														
															             _config = config; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -89,27 +90,6 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _zipClient = zipClient; 
														 | 
														
														 | 
														
															             _zipClient = zipClient; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<InstallationInfo> PackageInstalling; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<InstallationInfo> PackageInstallationCompleted; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<InstallationFailedEventArgs> PackageInstallationFailed; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<InstallationInfo> PackageInstallationCancelled; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<IPlugin> PluginUninstalled; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<InstallationInfo> PluginUpdated; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        /// <inheritdoc /> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public event EventHandler<InstallationInfo> PluginInstalled; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// <inheritdoc /> 
														 | 
														
														 | 
														
															         /// <inheritdoc /> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public IEnumerable<InstallationInfo> CompletedInstallations => _completedInstallationsInternal; 
														 | 
														
														 | 
														
															         public IEnumerable<InstallationInfo> CompletedInstallations => _completedInstallationsInternal; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -268,11 +248,11 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var linkedToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, innerCancellationTokenSource.Token).Token; 
														 | 
														
														 | 
														
															             var linkedToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, innerCancellationTokenSource.Token).Token; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            PackageInstalling?.Invoke(this, package); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            await _eventManager.PublishAsync(new PluginInstallingEventArgs(package)).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             try 
														 | 
														
														 | 
														
															             try 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                await InstallPackageInternal(package, linkedToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                var isUpdate = await InstallPackageInternal(package, linkedToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 lock (_currentInstallationsLock) 
														 | 
														
														 | 
														
															                 lock (_currentInstallationsLock) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 { 
														 | 
														
														 | 
														
															                 { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -280,8 +260,11 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 _completedInstallationsInternal.Add(package); 
														 | 
														
														 | 
														
															                 _completedInstallationsInternal.Add(package); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                await _eventManager.PublishAsync(isUpdate 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    ? (GenericEventArgs<InstallationInfo>)new PluginUpdatedEventArgs(package) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    : new PluginInstalledEventArgs(package)).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                PackageInstallationCompleted?.Invoke(this, package); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                _applicationHost.NotifyPendingRestart(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             catch (OperationCanceledException) 
														 | 
														
														 | 
														
															             catch (OperationCanceledException) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -292,7 +275,7 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 _logger.LogInformation("Package installation cancelled: {0} {1}", package.Name, package.Version); 
														 | 
														
														 | 
														
															                 _logger.LogInformation("Package installation cancelled: {0} {1}", package.Name, package.Version); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                PackageInstallationCancelled?.Invoke(this, package); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                await _eventManager.PublishAsync(new PluginInstallationCancelledEventArgs(package)).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 throw; 
														 | 
														
														 | 
														
															                 throw; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -305,11 +288,11 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     _currentInstallations.Remove(tuple); 
														 | 
														
														 | 
														
															                     _currentInstallations.Remove(tuple); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                PackageInstallationFailed?.Invoke(this, new InstallationFailedEventArgs 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                await _eventManager.PublishAsync(new InstallationFailedEventArgs 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 { 
														 | 
														
														 | 
														
															                 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     InstallationInfo = package, 
														 | 
														
														 | 
														
															                     InstallationInfo = package, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     Exception = ex 
														 | 
														
														 | 
														
															                     Exception = ex 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                }); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                }).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 throw; 
														 | 
														
														 | 
														
															                 throw; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -326,7 +309,7 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// <param name="package">The package.</param> 
														 | 
														
														 | 
														
															         /// <param name="package">The package.</param> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// <param name="cancellationToken">The cancellation token.</param> 
														 | 
														
														 | 
														
															         /// <param name="cancellationToken">The cancellation token.</param> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         /// <returns><see cref="Task" />.</returns> 
														 | 
														
														 | 
														
															         /// <returns><see cref="Task" />.</returns> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        private async Task InstallPackageInternal(InstallationInfo package, CancellationToken cancellationToken) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        private async Task<bool> InstallPackageInternal(InstallationInfo package, CancellationToken cancellationToken) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // Set last update time if we were installed before 
														 | 
														
														 | 
														
															             // Set last update time if we were installed before 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             IPlugin plugin = _applicationHost.Plugins.FirstOrDefault(p => p.Id == package.Guid) 
														 | 
														
														 | 
														
															             IPlugin plugin = _applicationHost.Plugins.FirstOrDefault(p => p.Id == package.Guid) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -336,20 +319,9 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             await PerformPackageInstallation(package, cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             await PerformPackageInstallation(package, cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // Do plugin-specific processing 
														 | 
														
														 | 
														
															             // Do plugin-specific processing 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if (plugin == null) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                _logger.LogInformation("New plugin installed: {0} {1}", package.Name, package.Version); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            _logger.LogInformation(plugin == null ? "New plugin installed: {0} {1}" : "Plugin updated: {0} {1}", package.Name, package.Version); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                PluginInstalled?.Invoke(this, package); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            else 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                _logger.LogInformation("Plugin updated: {0} {1}", package.Name, package.Version); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                PluginUpdated?.Invoke(this, package); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            _applicationHost.NotifyPendingRestart(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            return plugin != null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private async Task PerformPackageInstallation(InstallationInfo package, CancellationToken cancellationToken) 
														 | 
														
														 | 
														
															         private async Task PerformPackageInstallation(InstallationInfo package, CancellationToken cancellationToken) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -467,7 +439,7 @@ namespace Emby.Server.Implementations.Updates 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 _config.SaveConfiguration(); 
														 | 
														
														 | 
														
															                 _config.SaveConfiguration(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            PluginUninstalled?.Invoke(this, plugin); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            _eventManager.Publish(new PluginUninstalledEventArgs(plugin)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _applicationHost.NotifyPendingRestart(); 
														 | 
														
														 | 
														
															             _applicationHost.NotifyPendingRestart(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 |