Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
This commit is contained in:
commit
71fe785c6d
|
@ -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>
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
MediaBrowser.Common/Updates/ApplicationUpdater.cs
Normal file
37
MediaBrowser.Common/Updates/ApplicationUpdater.cs
Normal file
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -253,7 +253,4 @@ Global
|
|||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(Performance) = preSolution
|
||||
HasPerformanceSessions = true
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
Loading…
Reference in New Issue
Block a user