diff --git a/MediaBrowser.Model/System/SystemInfo.cs b/MediaBrowser.Model/System/SystemInfo.cs
index d736298b8f..9491139dbc 100644
--- a/MediaBrowser.Model/System/SystemInfo.cs
+++ b/MediaBrowser.Model/System/SystemInfo.cs
@@ -67,7 +67,13 @@ namespace MediaBrowser.Model.System
///
/// true if this instance can self restart; otherwise, false.
public bool CanSelfRestart { get; set; }
-
+
+ ///
+ /// Gets or sets a value indicating whether this instance can self update.
+ ///
+ /// true if this instance can self update; otherwise, false.
+ public bool CanSelfUpdate { get; set; }
+
///
/// Gets or sets plugin assemblies that failed to load.
///
diff --git a/MediaBrowser.Mono.userprefs b/MediaBrowser.Mono.userprefs
index a4119f6271..f07c9fbcf0 100644
--- a/MediaBrowser.Mono.userprefs
+++ b/MediaBrowser.Mono.userprefs
@@ -1,10 +1,13 @@
-
+
+
+
+
diff --git a/MediaBrowser.Server.Mono/Native/NativeApp.cs b/MediaBrowser.Server.Mono/Native/NativeApp.cs
index 4cc2dcebf3..b8c4447e5f 100644
--- a/MediaBrowser.Server.Mono/Native/NativeApp.cs
+++ b/MediaBrowser.Server.Mono/Native/NativeApp.cs
@@ -21,6 +21,30 @@ namespace MediaBrowser.ServerApplication.Native
public static void Restart()
{
MainClass.Restart ();
- }
+ }
+
+ ///
+ /// Determines whether this instance [can self restart].
+ ///
+ /// true if this instance [can self restart]; otherwise, false.
+ public static bool CanSelfRestart
+ {
+ get
+ {
+ return MainClass.CanSelfRestart;
+ }
+ }
+
+ ///
+ /// Gets a value indicating whether this instance can self update.
+ ///
+ /// true if this instance can self update; otherwise, false.
+ public static bool CanSelfUpdate
+ {
+ get
+ {
+ return MainClass.CanSelfUpdate;
+ }
+ }
}
}
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index 2e86afad70..fddf9706d0 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -82,6 +82,30 @@ namespace MediaBrowser.Server.Mono
return new ServerApplicationPaths();
}
+ ///
+ /// Determines whether this instance [can self restart].
+ ///
+ /// true if this instance [can self restart]; otherwise, false.
+ public static bool CanSelfRestart
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+ ///
+ /// Gets a value indicating whether this instance can self update.
+ ///
+ /// true if this instance can self update; otherwise, false.
+ public static bool CanSelfUpdate
+ {
+ get
+ {
+ return false;
+ }
+ }
+
private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager)
{
// TODO: Show splash here
diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs
index b74fd8a739..ed9179b076 100644
--- a/MediaBrowser.ServerApplication/ApplicationHost.cs
+++ b/MediaBrowser.ServerApplication/ApplicationHost.cs
@@ -530,7 +530,7 @@ namespace MediaBrowser.ServerApplication
#if DEBUG
return false;
#endif
- return true;
+ return NativeApp.CanSelfUpdate;
}
}
@@ -603,7 +603,8 @@ namespace MediaBrowser.ServerApplication
MacAddress = GetMacAddress(),
HttpServerPortNumber = ServerConfigurationManager.Configuration.HttpServerPortNumber,
OperatingSystem = Environment.OSVersion.ToString(),
- CanSelfRestart = CanSelfRestart
+ CanSelfRestart = CanSelfRestart,
+ CanSelfUpdate = CanSelfUpdate
};
}
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index b4b2cf1071..f61b0f1d13 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/MediaBrowser.ServerApplication/MainStartup.cs
@@ -114,7 +114,7 @@ namespace MediaBrowser.ServerApplication
/// true if [is already running] [the specified current process]; otherwise, false.
private static bool IsAlreadyRunning(Process currentProcess)
{
- var runningPath = Process.GetCurrentProcess().MainModule.FileName;
+ var runningPath = currentProcess.MainModule.FileName;
var duplicate = Process.GetProcesses().FirstOrDefault(i =>
{
@@ -151,13 +151,11 @@ namespace MediaBrowser.ServerApplication
{
if (runAsService)
{
-#if (RELEASE)
var systemPath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
var programDataPath = Path.GetDirectoryName(systemPath);
return new ServerApplicationPaths(programDataPath);
-#endif
}
return new ServerApplicationPaths();
@@ -171,7 +169,19 @@ namespace MediaBrowser.ServerApplication
{
get
{
- return true;
+ return !_isRunningAsService;
+ }
+ }
+
+ ///
+ /// Gets a value indicating whether this instance can self update.
+ ///
+ /// true if this instance can self update; otherwise, false.
+ public static bool CanSelfUpdate
+ {
+ get
+ {
+ return !_isRunningAsService;
}
}
@@ -188,6 +198,9 @@ namespace MediaBrowser.ServerApplication
logger.Info("Server: {0}", Environment.MachineName);
logger.Info("Operating system: {0}", Environment.OSVersion.ToString());
logger.Info("Program data path: {0}", appPaths.ProgramDataPath);
+
+ var runningPath = Process.GetCurrentProcess().MainModule.FileName;
+ logger.Info("Executable: {0}", runningPath);
}
///
@@ -276,11 +289,6 @@ namespace MediaBrowser.ServerApplication
{
ManagedInstallerClass.InstallHelper(new[] { runningPath });
- using (var process = Process.Start("cmd.exe", "/c sc failure " + BackgroundService.Name + " reset= 0 actions= restart/1000/restart/1000/restart/60000"))
- {
- process.WaitForExit();
- }
-
logger.Info("Service installation succeeded");
}
catch (Exception ex)
@@ -458,19 +466,11 @@ namespace MediaBrowser.ServerApplication
if (!_isRunningAsService)
{
- _logger.Info("Starting server application");
- RestartWindowsApplication();
- }
- else
- {
- _logger.Info("Calling Enviornment.Exit to tell Windows to restart the server.");
- Environment.Exit(1);
- }
- }
+ _logger.Info("Executing windows forms restart");
+ System.Windows.Forms.Application.Restart();
- private static void RestartWindowsApplication()
- {
- System.Windows.Forms.Application.Restart();
+ ShutdownWindowsApplication();
+ }
}
private static void ShutdownWindowsApplication()
diff --git a/MediaBrowser.ServerApplication/Native/NativeApp.cs b/MediaBrowser.ServerApplication/Native/NativeApp.cs
index 0e114b166d..c0d3e876a5 100644
--- a/MediaBrowser.ServerApplication/Native/NativeApp.cs
+++ b/MediaBrowser.ServerApplication/Native/NativeApp.cs
@@ -33,5 +33,17 @@ namespace MediaBrowser.ServerApplication.Native
return MainStartup.CanSelfRestart;
}
}
+
+ ///
+ /// Gets a value indicating whether this instance can self update.
+ ///
+ /// true if this instance can self update; otherwise, false.
+ public static bool CanSelfUpdate
+ {
+ get
+ {
+ return MainStartup.CanSelfUpdate;
+ }
+ }
}
}