diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-07-13 23:36:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-07-13 23:36:57 -0400 |
| commit | 86517539219c41d86f50df7744eb166079ce3f9e (patch) | |
| tree | 11926caed9f1915a011348d81df2836354c239be | |
| parent | 36d43a2d29de6e357e6981274a9c3b965baa219a (diff) | |
| parent | 7e52b0d3041bd0881cd9b8c6e2e1103a700b57be (diff) | |
Merge pull request #1941 from MediaBrowser/dev
Dev
4 files changed, 58 insertions, 6 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index de6c23cac6..975e292f0d 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1322,7 +1322,7 @@ namespace MediaBrowser.Server.Implementations.Dto } } - if (fields.Contains(ItemFields.SeriesPrimaryImage)) + //if (fields.Contains(ItemFields.SeriesPrimaryImage)) { episodeSeries = episodeSeries ?? episode.Series; if (episodeSeries != null) diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index bcd2ed8bd8..b7ea5bdad8 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -274,7 +274,7 @@ namespace MediaBrowser.Server.Startup.Common { get { - return "Media Browser Server"; + return "Emby Server"; } } diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index fb4fb86ffd..2440eab7ce 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -12,6 +12,7 @@ using System.Configuration.Install; using System.Diagnostics; using System.IO; using System.Linq; +using System.Management; using System.Runtime.InteropServices; using System.ServiceProcess; using System.Threading; @@ -102,7 +103,7 @@ namespace MediaBrowser.ServerApplication if (IsAlreadyRunning(applicationPath, currentProcess)) { - logger.Info("Shutting down because another instance of Media Browser Server is already running."); + logger.Info("Shutting down because another instance of Emby Server is already running."); return; } @@ -130,13 +131,28 @@ namespace MediaBrowser.ServerApplication /// <returns><c>true</c> if [is already running] [the specified current process]; otherwise, <c>false</c>.</returns> private static bool IsAlreadyRunning(string applicationPath, Process currentProcess) { - var filename = Path.GetFileName(applicationPath); - var duplicate = Process.GetProcesses().FirstOrDefault(i => { try { - return string.Equals(filename, Path.GetFileName(i.MainModule.FileName)) && currentProcess.Id != i.Id; + if (currentProcess.Id == i.Id) + { + return false; + } + } + catch (Exception) + { + return false; + } + + try + { + //_logger.Info("Module: {0}", i.MainModule.FileName); + if (string.Equals(applicationPath, i.MainModule.FileName, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + return false; } catch (Exception) { @@ -155,6 +171,41 @@ namespace MediaBrowser.ServerApplication } } + if (!_isRunningAsService) + { + return IsAlreadyRunningAsService(applicationPath); + } + + return false; + } + + private static bool IsAlreadyRunningAsService(string applicationPath) + { + var serviceName = BackgroundService.GetExistingServiceName(); + + WqlObjectQuery wqlObjectQuery = new WqlObjectQuery(string.Format("SELECT * FROM Win32_Service WHERE State = 'Running' AND Name = '{0}'", serviceName)); + ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(wqlObjectQuery); + ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get(); + + foreach (ManagementObject managementObject in managementObjectCollection) + { + var obj = managementObject.GetPropertyValue("PathName"); + if (obj == null) + { + continue; + } + var path = obj.ToString(); + + _logger.Info("Service path: {0}", path); + // Need to use indexOf instead of equality because the path will have the full service command line + if (path.IndexOf(applicationPath, StringComparison.OrdinalIgnoreCase) != -1) + { + _logger.Info("The windows service is already running"); + MessageBox.Show("Emby Server is already running as a Windows Service. Only one instance is allowed at a time. To run as a tray icon, shut down the Windows Service."); + return true; + } + } + return false; } diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index fcd6f7fafe..b01d8c43f6 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -88,6 +88,7 @@ <Private>True</Private> </Reference> <Reference Include="System.Drawing" /> + <Reference Include="System.Management" /> <Reference Include="System.ServiceProcess" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml.Linq" /> |
