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>
|
/// <summary>
|
||||||
/// The _data directory
|
/// The _data directory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -9,5 +9,7 @@ namespace MediaBrowser.Common.Constants
|
||||||
public static class Constants
|
public static class Constants
|
||||||
{
|
{
|
||||||
public const string MBAdminUrl = "http://www.mb3admin.com/admin/";
|
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>
|
/// <value>The program data path.</value>
|
||||||
string ProgramDataPath { get; }
|
string ProgramDataPath { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the path to the program system folder
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The program data path.</value>
|
||||||
|
string ProgramSystemPath { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the folder path to the data directory
|
/// Gets the folder path to the data directory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -104,6 +104,7 @@
|
||||||
<Compile Include="ScheduledTasks\IntervalTrigger.cs" />
|
<Compile Include="ScheduledTasks\IntervalTrigger.cs" />
|
||||||
<Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
|
<Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
|
||||||
<Compile Include="Security\ISecurityManager.cs" />
|
<Compile Include="Security\ISecurityManager.cs" />
|
||||||
|
<Compile Include="Updates\ApplicationUpdater.cs" />
|
||||||
<Compile Include="Updates\IPackageManager.cs" />
|
<Compile Include="Updates\IPackageManager.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<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.Kernel;
|
||||||
|
using MediaBrowser.Common.Updates;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
using MediaBrowser.Server.Implementations;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
@ -27,6 +30,25 @@ namespace MediaBrowser.ServerApplication
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main()
|
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();
|
var application = new App();
|
||||||
|
|
||||||
application.Run();
|
application.Run();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using MediaBrowser.Api;
|
using MediaBrowser.Api;
|
||||||
|
using MediaBrowser.Common.Constants;
|
||||||
using MediaBrowser.Common.Implementations;
|
using MediaBrowser.Common.Implementations;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Common.Implementations.HttpServer;
|
||||||
using MediaBrowser.Common.Implementations.Logging;
|
using MediaBrowser.Common.Implementations.Logging;
|
||||||
|
@ -180,7 +181,7 @@ namespace MediaBrowser.ServerApplication
|
||||||
{
|
{
|
||||||
var pkgManager = Resolve<IPackageManager>();
|
var pkgManager = Resolve<IPackageManager>();
|
||||||
var availablePackages = await pkgManager.GetAvailablePackages(Resolve<IHttpClient>(), Resolve<INetworkManager>(), Kernel.SecurityManager, Kernel.ResourcePools, Resolve<IJsonSerializer>(), CancellationToken.None).ConfigureAwait(false);
|
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 } :
|
return version != null ? new CheckForUpdateResult { AvailableVersion = version.version, IsUpdateAvailable = version.version > ApplicationVersion, Package = version } :
|
||||||
new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };
|
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.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\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.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
|
xcopy "$(TargetDir)$(TargetFileName).config" "$(SolutionDir)..\Deploy\Server\System\" /y
|
||||||
|
|
||||||
|
|
|
@ -253,7 +253,4 @@ Global
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(Performance) = preSolution
|
|
||||||
HasPerformanceSessions = true
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
Loading…
Reference in New Issue
Block a user