Fixed: Removal of previous service

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
This commit is contained in:
Qstick 2021-03-07 10:54:23 -05:00
parent 52dbcfe852
commit e9e034d193
3 changed files with 23 additions and 12 deletions

View File

@ -62,9 +62,9 @@ Name: "{userstartup}\{#AppName}"; Filename: "{app}\Radarr.exe"; WorkingDir: "{ap
Name: "{app}"; Type: filesandordirs Name: "{app}"; Type: filesandordirs
[Run] [Run]
Filename: "{app}\Radarr.Console.exe"; StatusMsg: "Removing previous Windows Service"; Parameters: "/u"; Flags: runhidden waituntilterminated; Filename: "{app}\Radarr.Console.exe"; StatusMsg: "Removing previous Windows Service"; Parameters: "/u /exitimmediately"; Flags: runhidden waituntilterminated;
Filename: "{app}\Radarr.Console.exe"; Description: "Enable Access from Other Devices"; StatusMsg: "Enabling Remote access"; Parameters: "/registerurl"; Flags: postinstall runascurrentuser runhidden waituntilterminated; Tasks: startupShortcut none; Filename: "{app}\Radarr.Console.exe"; Description: "Enable Access from Other Devices"; StatusMsg: "Enabling Remote access"; Parameters: "/registerurl /exitimmediately"; Flags: postinstall runascurrentuser runhidden waituntilterminated; Tasks: startupShortcut none;
Filename: "{app}\Radarr.Console.exe"; StatusMsg: "Installing Windows Service"; Parameters: "/i"; Flags: runhidden waituntilterminated; Tasks: windowsService Filename: "{app}\Radarr.Console.exe"; StatusMsg: "Installing Windows Service"; Parameters: "/i /exitimmediately"; Flags: runhidden waituntilterminated; Tasks: windowsService
Filename: "{app}\Radarr.exe"; Description: "Open Radarr Web UI"; Flags: postinstall skipifsilent nowait; Tasks: windowsService; Filename: "{app}\Radarr.exe"; Description: "Open Radarr Web UI"; Flags: postinstall skipifsilent nowait; Tasks: windowsService;
Filename: "{app}\Radarr.exe"; Description: "Start Radarr"; Flags: postinstall skipifsilent nowait; Tasks: startupShortcut none; Filename: "{app}\Radarr.exe"; Description: "Start Radarr"; Flags: postinstall skipifsilent nowait; Tasks: startupShortcut none;

View File

@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
namespace NzbDrone.Common.EnvironmentInfo namespace NzbDrone.Common.EnvironmentInfo
{ {
@ -25,6 +25,7 @@ namespace NzbDrone.Common.EnvironmentInfo
public const string RESTART = "restart"; public const string RESTART = "restart";
public const string REGISTER_URL = "registerurl"; public const string REGISTER_URL = "registerurl";
public const string NO_SINGLE_INSTANCE_CHECK = "nosingleinstancecheck"; public const string NO_SINGLE_INSTANCE_CHECK = "nosingleinstancecheck";
public const string EXIT_IMMEDIATELY = "exitimmediately";
public StartupContext(params string[] args) public StartupContext(params string[] args)
{ {
@ -55,6 +56,7 @@ namespace NzbDrone.Common.EnvironmentInfo
public bool InstallService => Flags.Contains(INSTALL_SERVICE); public bool InstallService => Flags.Contains(INSTALL_SERVICE);
public bool UninstallService => Flags.Contains(UNINSTALL_SERVICE); public bool UninstallService => Flags.Contains(UNINSTALL_SERVICE);
public bool RegisterUrl => Flags.Contains(REGISTER_URL); public bool RegisterUrl => Flags.Contains(REGISTER_URL);
public bool ExitImmediately => Flags.Contains(EXIT_IMMEDIATELY);
public string PreservedArguments public string PreservedArguments
{ {

View File

@ -25,9 +25,11 @@ namespace NzbDrone.Console
public static void Main(string[] args) public static void Main(string[] args)
{ {
StartupContext startupArgs = null;
try try
{ {
var startupArgs = new StartupContext(args); startupArgs = new StartupContext(args);
try try
{ {
NzbDroneLogger.Register(startupArgs, false, true); NzbDroneLogger.Register(startupArgs, false, true);
@ -45,14 +47,14 @@ namespace NzbDrone.Console
System.Console.WriteLine(""); System.Console.WriteLine("");
System.Console.WriteLine(""); System.Console.WriteLine("");
Logger.Fatal(ex, "EPIC FAIL!"); Logger.Fatal(ex, "EPIC FAIL!");
Exit(ExitCodes.NonRecoverableFailure); Exit(ExitCodes.NonRecoverableFailure, startupArgs);
} }
catch (SocketException ex) catch (SocketException ex)
{ {
System.Console.WriteLine(""); System.Console.WriteLine("");
System.Console.WriteLine(""); System.Console.WriteLine("");
Logger.Fatal(ex.Message + " This can happen if another instance of Radarr is already running another application is using the same port (default: 7878) or the user has insufficient permissions"); Logger.Fatal(ex.Message + " This can happen if another instance of Radarr is already running another application is using the same port (default: 7878) or the user has insufficient permissions");
Exit(ExitCodes.RecoverableFailure); Exit(ExitCodes.RecoverableFailure, startupArgs);
} }
catch (IOException ex) catch (IOException ex)
{ {
@ -61,7 +63,7 @@ namespace NzbDrone.Console
System.Console.WriteLine(""); System.Console.WriteLine("");
System.Console.WriteLine(""); System.Console.WriteLine("");
Logger.Fatal(ex.Message + " This can happen if another instance of Radarr is already running another application is using the same port (default: 7878) or the user has insufficient permissions"); Logger.Fatal(ex.Message + " This can happen if another instance of Radarr is already running another application is using the same port (default: 7878) or the user has insufficient permissions");
Exit(ExitCodes.RecoverableFailure); Exit(ExitCodes.RecoverableFailure, startupArgs);
} }
else else
{ {
@ -73,22 +75,22 @@ namespace NzbDrone.Console
System.Console.WriteLine(""); System.Console.WriteLine("");
System.Console.WriteLine(""); System.Console.WriteLine("");
Logger.Fatal(ex, "EPIC FAIL!"); Logger.Fatal(ex, "EPIC FAIL!");
Exit(ExitCodes.Normal); Exit(ExitCodes.Normal, startupArgs);
} }
catch (Exception ex) catch (Exception ex)
{ {
System.Console.WriteLine(""); System.Console.WriteLine("");
System.Console.WriteLine(""); System.Console.WriteLine("");
Logger.Fatal(ex, "EPIC FAIL!"); Logger.Fatal(ex, "EPIC FAIL!");
Exit(ExitCodes.UnknownFailure); Exit(ExitCodes.UnknownFailure, startupArgs);
} }
Logger.Info("Exiting main."); Logger.Info("Exiting main.");
Exit(ExitCodes.Normal); Exit(ExitCodes.Normal, startupArgs);
} }
private static void Exit(ExitCodes exitCode) private static void Exit(ExitCodes exitCode, StartupContext startupArgs)
{ {
LogManager.Shutdown(); LogManager.Shutdown();
@ -100,6 +102,13 @@ namespace NzbDrone.Console
if (exitCode == ExitCodes.NonRecoverableFailure) if (exitCode == ExitCodes.NonRecoverableFailure)
{ {
if (startupArgs?.ExitImmediately == true)
{
System.Console.WriteLine("Non-recoverable failure, but set to exit immediately");
Environment.Exit((int)exitCode);
}
System.Console.WriteLine("Non-recoverable failure, waiting for user intervention..."); System.Console.WriteLine("Non-recoverable failure, waiting for user intervention...");
for (int i = 0; i < 3600; i++) for (int i = 0; i < 3600; i++)
{ {