diff options
Diffstat (limited to 'MediaBrowser.ServerApplication/MainStartup.cs')
| -rw-r--r-- | MediaBrowser.ServerApplication/MainStartup.cs | 104 |
1 files changed, 13 insertions, 91 deletions
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 3fe9c5aa7..27eb3e0e1 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -39,7 +39,6 @@ namespace MediaBrowser.ServerApplication private static ILogger _logger; public static bool IsRunningAsService = false; - private static bool _canRestartService = false; [DllImport("kernel32.dll", SetLastError = true)] static extern bool SetDllDirectory(string lpPathName); @@ -58,11 +57,6 @@ namespace MediaBrowser.ServerApplication var options = new StartupOptions(Environment.GetCommandLineArgs()); IsRunningAsService = options.ContainsOption("-service"); - if (IsRunningAsService) - { - //_canRestartService = CanRestartWindowsService(); - } - var currentProcess = Process.GetCurrentProcess(); ApplicationPath = currentProcess.MainModule.FileName; @@ -86,22 +80,6 @@ namespace MediaBrowser.ServerApplication ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); - // Install directly - if (options.ContainsOption("-installservice")) - { - logger.Info("Performing service installation"); - InstallService(ApplicationPath, logger); - return; - } - - // Restart with admin rights, then install - if (options.ContainsOption("-installserviceasadmin")) - { - logger.Info("Performing service installation"); - RunServiceInstallation(ApplicationPath); - return; - } - // Uninstall directly if (options.ContainsOption("-uninstallservice")) { @@ -120,8 +98,6 @@ namespace MediaBrowser.ServerApplication AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - RunServiceInstallationIfNeeded(ApplicationPath); - if (IsAlreadyRunning(ApplicationPath, currentProcess)) { logger.Info("Shutting down because another instance of Emby Server is already running."); @@ -156,6 +132,14 @@ namespace MediaBrowser.ServerApplication return new Tuple<string, string>(processModulePath, Environment.CommandLine); } + private static bool IsServiceInstalled() + { + var serviceName = BackgroundService.GetExistingServiceName(); + var ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == serviceName); + + return ctl != null; + } + /// <summary> /// Determines whether [is already running] [the specified current process]. /// </summary> @@ -261,7 +245,7 @@ namespace MediaBrowser.ServerApplication var resourcesPath = Path.GetDirectoryName(applicationPath); - if (runAsService) + if (runAsService && IsServiceInstalled()) { var systemPath = Path.GetDirectoryName(applicationPath); @@ -283,7 +267,7 @@ namespace MediaBrowser.ServerApplication { if (IsRunningAsService) { - return _canRestartService; + return false; } else { @@ -306,7 +290,7 @@ namespace MediaBrowser.ServerApplication if (IsRunningAsService) { - return _canRestartService; + return false; } else { @@ -370,7 +354,7 @@ namespace MediaBrowser.ServerApplication task = task.ContinueWith(new Action<Task>(a => appHost.RunStartupTasks()), TaskContinuationOptions.OnlyOnRanToCompletion | TaskContinuationOptions.AttachedToParent); - if (runService) + if (runService && IsServiceInstalled()) { StartService(logManager); } @@ -447,38 +431,10 @@ namespace MediaBrowser.ServerApplication { var service = new BackgroundService(logManager.GetLogger("Service")); - service.Disposed += service_Disposed; - ServiceBase.Run(service); } /// <summary> - /// Handles the Disposed event of the service control. - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> - static void service_Disposed(object sender, EventArgs e) - { - } - - /// <summary> - /// Installs the service. - /// </summary> - private static void InstallService(string applicationPath, ILogger logger) - { - try - { - ManagedInstallerClass.InstallHelper(new[] { applicationPath }); - - logger.Info("Service installation succeeded"); - } - catch (Exception ex) - { - logger.ErrorException("Uninstall failed", ex); - } - } - - /// <summary> /// Uninstalls the service. /// </summary> private static void UninstallService(string applicationPath, ILogger logger) @@ -495,40 +451,6 @@ namespace MediaBrowser.ServerApplication } } - private static void RunServiceInstallationIfNeeded(string applicationPath) - { - var serviceName = BackgroundService.GetExistingServiceName(); - var ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == serviceName); - - if (ctl == null) - { - RunServiceInstallation(applicationPath); - } - } - - /// <summary> - /// Runs the service installation. - /// </summary> - private static void RunServiceInstallation(string applicationPath) - { - var startInfo = new ProcessStartInfo - { - FileName = applicationPath, - - Arguments = "-installservice", - - CreateNoWindow = true, - WindowStyle = ProcessWindowStyle.Hidden, - Verb = "runas", - ErrorDialog = false - }; - - using (var process = Process.Start(startInfo)) - { - process.WaitForExit(); - } - } - /// <summary> /// Runs the service uninstallation. /// </summary> @@ -616,7 +538,7 @@ namespace MediaBrowser.ServerApplication public static void Shutdown() { - if (IsRunningAsService) + if (IsRunningAsService && IsServiceInstalled()) { ShutdownWindowsService(); } |
