Bladeren bron

Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser

LukePulverenti 12 jaren geleden
bovenliggende
commit
71fe785c6d

+ 5 - 0
MediaBrowser.Common.Implementations/BaseApplicationPaths.cs

@@ -42,6 +42,11 @@ namespace MediaBrowser.Common.Implementations
             }
         }
 
+        /// <summary>
+        /// Gets the path to the system folder
+        /// </summary>
+        public string ProgramSystemPath { get { return Path.Combine(ProgramDataPath, "System"); }}
+
         /// <summary>
         /// The _data directory
         /// </summary>

+ 2 - 0
MediaBrowser.Common/Constants/Constants.cs

@@ -9,5 +9,7 @@ namespace MediaBrowser.Common.Constants
     public static class Constants
     {
         public const string MBAdminUrl = "http://www.mb3admin.com/admin/";
+        public const string MBServerPkgName = "MBServer";
+        public const string MBTheaterPkgName = "MBTheater";
     }
 }

+ 6 - 0
MediaBrowser.Common/Kernel/IApplicationPaths.cs

@@ -12,6 +12,12 @@ namespace MediaBrowser.Common.Kernel
         /// <value>The program data path.</value>
         string ProgramDataPath { get; }
 
+        /// <summary>
+        /// Gets the path to the program system folder
+        /// </summary>
+        /// <value>The program data path.</value>
+        string ProgramSystemPath { get; }
+
         /// <summary>
         /// Gets the folder path to the data directory
         /// </summary>

+ 1 - 0
MediaBrowser.Common/MediaBrowser.Common.csproj

@@ -104,6 +104,7 @@
     <Compile Include="ScheduledTasks\IntervalTrigger.cs" />
     <Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
     <Compile Include="Security\ISecurityManager.cs" />
+    <Compile Include="Updates\ApplicationUpdater.cs" />
     <Compile Include="Updates\IPackageManager.cs" />
   </ItemGroup>
   <ItemGroup>

+ 37 - 0
MediaBrowser.Common/Updates/ApplicationUpdater.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.IO;
+using MediaBrowser.Common.Kernel;
+
+namespace MediaBrowser.Common.Updates
+{
+    public enum MBApplication
+    {
+        MBServer,
+        MBTheater
+    }
+
+    /// <summary>
+    /// Update the specified application using the specified archive
+    /// </summary>
+    public class ApplicationUpdater
+    {
+        private const string UpdaterExe = "Mediabrowser.Installer.exe";
+        public void UpdateApplication(MBApplication app, IApplicationPaths appPaths, string archive)
+        {
+            // Use our installer passing it the specific archive
+            // We need to copy to a temp directory and execute it there
+            var source = Path.Combine(appPaths.ProgramSystemPath, UpdaterExe);
+            var target = Path.Combine(Path.GetTempPath(), UpdaterExe);
+            var product = app == MBApplication.MBTheater ? "mbt" : "server";
+            File.Copy(source, target, true);
+            Process.Start(UpdaterExe, string.Format("product={0} archive=\"{1}\" caller={2}", product, archive, Process.GetCurrentProcess().Id));
+
+            // That's it.  The installer will do the work once we exit
+        }
+    }
+}

+ 23 - 1
MediaBrowser.ServerApplication/App.xaml.cs

@@ -1,8 +1,11 @@
-using MediaBrowser.ClickOnce;
+using System.IO;
+using MediaBrowser.Common.Constants;
 using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Updates;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Model.Logging;
+using MediaBrowser.Server.Implementations;
 using Microsoft.Win32;
 using System;
 using System.Diagnostics;
@@ -27,6 +30,25 @@ namespace MediaBrowser.ServerApplication
         [STAThread]
         public static void Main()
         {
+            // Look for the existence of an update archive
+            var appPaths = new ServerApplicationPaths();
+            var updateArchive = Path.Combine(appPaths.TempUpdatePath, Constants.MBServerPkgName + ".zip");
+            if (File.Exists(updateArchive))
+            {
+                // Update is there - execute update
+                try
+                {
+                    new ApplicationUpdater().UpdateApplication(MBApplication.MBServer, appPaths, updateArchive);
+
+                    // And just let the app exit so it can update
+                    return;
+                }
+                catch (Exception e)
+                {
+                    MessageBox.Show(string.Format("Error attempting to update application.\n\n{0}\n\n{1}", e.GetType().Name, e.Message));
+                }
+            }
+
             var application = new App();
 
             application.Run();

+ 2 - 1
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -1,4 +1,5 @@
 using MediaBrowser.Api;
+using MediaBrowser.Common.Constants;
 using MediaBrowser.Common.Implementations;
 using MediaBrowser.Common.Implementations.HttpServer;
 using MediaBrowser.Common.Implementations.Logging;
@@ -180,7 +181,7 @@ namespace MediaBrowser.ServerApplication
         {
             var pkgManager = Resolve<IPackageManager>();
             var availablePackages = await pkgManager.GetAvailablePackages(Resolve<IHttpClient>(), Resolve<INetworkManager>(), Kernel.SecurityManager, Kernel.ResourcePools, Resolve<IJsonSerializer>(), CancellationToken.None).ConfigureAwait(false);
-            var version = Kernel.InstallationManager.GetLatestCompatibleVersion(availablePackages, "MBServer", Kernel.Configuration.SystemUpdateLevel);
+            var version = Kernel.InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MBServerPkgName, Kernel.Configuration.SystemUpdateLevel);
 
             return version != null ? new CheckForUpdateResult { AvailableVersion = version.version, IsUpdateAvailable = version.version > ApplicationVersion, Package = version } :
                        new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };

+ 1 - 0
MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj

@@ -375,6 +375,7 @@ xcopy "$(SolutionDir)Mediabrowser.Uninstaller\bin\Release\MediaBrowser.Uninstall
 xcopy "$(SolutionDir)Mediabrowser.Uninstaller.Execute\bin\Release\MediaBrowser.Uninstaller.Execute.exe.config" "$(SolutionDir)..\Deploy\Server\System\" /y
 xcopy "$(SolutionDir)Mediabrowser.Uninstaller\bin\Release\MediaBrowser.Uninstaller.exe" "$(SolutionDir)..\Deploy\Server\System\" /y
 xcopy "$(SolutionDir)Mediabrowser.Uninstaller.Execute\bin\Release\MediaBrowser.Uninstaller.Execute.exe" "$(SolutionDir)..\Deploy\Server\System\" /y
+xcopy "$(SolutionDir)Mediabrowser.Installer\bin\Release\MediaBrowser.Installer.exe" "$(SolutionDir)..\Deploy\Server\System\" /y
 
 xcopy "$(TargetDir)$(TargetFileName).config" "$(SolutionDir)..\Deploy\Server\System\" /y
 

+ 0 - 3
MediaBrowser.sln

@@ -253,7 +253,4 @@ Global
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
 EndGlobal