parent
b1e5646d7d
commit
a4a58c59f1
|
@ -17,6 +17,14 @@ namespace NzbDrone.Common.EnvironmentInfo
|
||||||
public const string UNINSTALL_SERVICE = "u";
|
public const string UNINSTALL_SERVICE = "u";
|
||||||
public const string HELP = "?";
|
public const string HELP = "?";
|
||||||
|
|
||||||
|
static StartupArguments()
|
||||||
|
{
|
||||||
|
if (RuntimeInfo.IsProduction)
|
||||||
|
{
|
||||||
|
Instance = new StartupArguments("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public StartupArguments(params string[] args)
|
public StartupArguments(params string[] args)
|
||||||
{
|
{
|
||||||
Flags = new HashSet<string>();
|
Flags = new HashSet<string>();
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
using NzbDrone.Host;
|
||||||
|
|
||||||
|
namespace NzbDrone.Console
|
||||||
|
{
|
||||||
|
public class ConsoleAlerts : IUserAlert
|
||||||
|
{
|
||||||
|
public void Alert(string message)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine();
|
||||||
|
System.Console.WriteLine(message);
|
||||||
|
System.Console.WriteLine("Press enter to continue");
|
||||||
|
System.Console.ReadLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Host;
|
||||||
|
|
||||||
namespace NzbDrone.Console
|
namespace NzbDrone.Console
|
||||||
{
|
{
|
||||||
|
@ -9,13 +10,15 @@ namespace NzbDrone.Console
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Host.Bootstrap.Start(new StartupArguments(args));
|
Bootstrap.Start(new StartupArguments(args), new ConsoleAlerts());
|
||||||
|
}
|
||||||
|
catch (TerminateApplicationException)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine(e.ToString());
|
System.Console.WriteLine(e.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Console.WriteLine("Press enter to exit...");
|
System.Console.WriteLine("Press enter to exit...");
|
||||||
System.Console.ReadLine();
|
System.Console.ReadLine();
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,6 +83,10 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net40\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="NLog, Version=2.0.1.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\NLog.2.0.1.2\lib\net40\NLog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
|
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
||||||
|
@ -94,6 +98,7 @@
|
||||||
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
||||||
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ConsoleAlerts.cs" />
|
||||||
<Compile Include="ConsoleApp.cs" />
|
<Compile Include="ConsoleApp.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -5,5 +5,6 @@
|
||||||
<package id="Microsoft.Owin" version="1.1.0-beta2" targetFramework="net40" />
|
<package id="Microsoft.Owin" version="1.1.0-beta2" targetFramework="net40" />
|
||||||
<package id="Microsoft.Owin.Hosting" version="1.1.0-beta2" targetFramework="net40" />
|
<package id="Microsoft.Owin.Hosting" version="1.1.0-beta2" targetFramework="net40" />
|
||||||
<package id="Newtonsoft.Json" version="5.0.6" targetFramework="net40" />
|
<package id="Newtonsoft.Json" version="5.0.6" targetFramework="net40" />
|
||||||
|
<package id="NLog" version="2.0.1.2" targetFramework="net40" />
|
||||||
<package id="Owin" version="1.0" targetFramework="net40" />
|
<package id="Owin" version="1.0" targetFramework="net40" />
|
||||||
</packages>
|
</packages>
|
|
@ -1,6 +1,4 @@
|
||||||
using System;
|
using System.Reflection;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Reflection;
|
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Composition;
|
using NzbDrone.Common.Composition;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
@ -12,54 +10,27 @@ namespace NzbDrone.Host
|
||||||
{
|
{
|
||||||
public static class Bootstrap
|
public static class Bootstrap
|
||||||
{
|
{
|
||||||
public static IContainer Start(StartupArguments args)
|
public static IContainer Start(StartupArguments args, IUserAlert userAlert)
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetLogger("AppMain");
|
var logger = LogManager.GetLogger("AppMain");
|
||||||
|
|
||||||
try
|
GlobalExceptionHandlers.Register();
|
||||||
|
IgnoreCertErrorPolicy.Register();
|
||||||
|
|
||||||
|
logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version);
|
||||||
|
|
||||||
|
|
||||||
|
if (!PlatformValidation.IsValidate(userAlert))
|
||||||
{
|
{
|
||||||
GlobalExceptionHandlers.Register();
|
throw new TerminateApplicationException();
|
||||||
IgnoreCertErrorPolicy.Register();
|
|
||||||
|
|
||||||
logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version);
|
|
||||||
|
|
||||||
//Check if full version .NET is installed.
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
logger.Error("It looks like you don't have full version of .NET Framework installed. Press any key and you will be directed to the download page.");
|
|
||||||
Console.Read();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Process.Start("http://www.microsoft.com/download/en/details.aspx?id=17851");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
logger.Warn("Oops. can't start default browser. Please visit http://www.microsoft.com/download/en/details.aspx?id=17851 to download .NET Framework 4.");
|
|
||||||
Console.ReadLine();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var container = MainAppContainerBuilder.BuildContainer(args);
|
|
||||||
|
|
||||||
DbFactory.RegisterDatabase(container);
|
|
||||||
container.Resolve<Router>().Route();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return container;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
logger.FatalException("Epic Fail " + e.Message, e);
|
|
||||||
throw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var container = MainAppContainerBuilder.BuildContainer(args);
|
||||||
|
|
||||||
|
DbFactory.RegisterDatabase(container);
|
||||||
|
container.Resolve<Router>().Route();
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
namespace NzbDrone.Host
|
||||||
|
{
|
||||||
|
public interface IUserAlert
|
||||||
|
{
|
||||||
|
void Alert(string message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -121,6 +121,8 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="AccessControl\FirewallAdapter.cs" />
|
<Compile Include="AccessControl\FirewallAdapter.cs" />
|
||||||
<Compile Include="AccessControl\UrlAclAdapter.cs" />
|
<Compile Include="AccessControl\UrlAclAdapter.cs" />
|
||||||
|
<Compile Include="IUserAlert.cs" />
|
||||||
|
<Compile Include="PlatformValidation.cs" />
|
||||||
<Compile Include="MainAppContainerBuilder.cs" />
|
<Compile Include="MainAppContainerBuilder.cs" />
|
||||||
<Compile Include="ApplicationModes.cs" />
|
<Compile Include="ApplicationModes.cs" />
|
||||||
<Compile Include="Bootstrap.cs" />
|
<Compile Include="Bootstrap.cs" />
|
||||||
|
@ -132,6 +134,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="PriorityMonitor.cs" />
|
<Compile Include="PriorityMonitor.cs" />
|
||||||
<Compile Include="Router.cs" />
|
<Compile Include="Router.cs" />
|
||||||
|
<Compile Include="TerminateApplicationException.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="app.config" />
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
|
||||||
|
namespace NzbDrone.Host
|
||||||
|
{
|
||||||
|
public static class PlatformValidation
|
||||||
|
{
|
||||||
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
public static bool IsValidate(IUserAlert userAlert)
|
||||||
|
{
|
||||||
|
if (OsInfo.IsMono)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsAssemblyAvailable("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))
|
||||||
|
{
|
||||||
|
userAlert.Alert("It looks like you don't have full version of .NET Framework installed. You will now be directed the download page.");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start("http://www.microsoft.com/en-ca/download/details.aspx?id=30653");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
userAlert.Alert("Oops. can't start default browser. Please visit http://www.microsoft.com/en-ca/download/details.aspx?id=30653 to download .NET Framework 4.5.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static bool IsAssemblyAvailable(string assemblyString)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Assembly.Load(assemblyString);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logger.Warn("Couldn't load {0}", e.Message);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace NzbDrone.Host
|
||||||
|
{
|
||||||
|
public class TerminateApplicationException : ApplicationException
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,7 +9,7 @@ using NzbDrone.Update.UpdateEngine;
|
||||||
namespace NzbDrone.Update.Test
|
namespace NzbDrone.Update.Test
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ProgramFixture : TestBase<Program>
|
public class ProgramFixture : TestBase<UpdateApp>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="AppType.cs" />
|
<Compile Include="AppType.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="UpdateApp.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="UpdateContainerBuilder.cs" />
|
<Compile Include="UpdateContainerBuilder.cs" />
|
||||||
<Compile Include="UpdateEngine\BackupAndRestore.cs" />
|
<Compile Include="UpdateEngine\BackupAndRestore.cs" />
|
||||||
|
|
|
@ -10,7 +10,7 @@ using NzbDrone.Update.UpdateEngine;
|
||||||
|
|
||||||
namespace NzbDrone.Update
|
namespace NzbDrone.Update
|
||||||
{
|
{
|
||||||
public class Program
|
public class UpdateApp
|
||||||
{
|
{
|
||||||
private readonly IInstallUpdateService _installUpdateService;
|
private readonly IInstallUpdateService _installUpdateService;
|
||||||
private readonly IProcessProvider _processProvider;
|
private readonly IProcessProvider _processProvider;
|
||||||
|
@ -18,7 +18,7 @@ namespace NzbDrone.Update
|
||||||
|
|
||||||
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
public Program(IInstallUpdateService installUpdateService, IProcessProvider processProvider)
|
public UpdateApp(IInstallUpdateService installUpdateService, IProcessProvider processProvider)
|
||||||
{
|
{
|
||||||
_installUpdateService = installUpdateService;
|
_installUpdateService = installUpdateService;
|
||||||
_processProvider = processProvider;
|
_processProvider = processProvider;
|
||||||
|
@ -38,7 +38,7 @@ namespace NzbDrone.Update
|
||||||
_container = UpdateContainerBuilder.Build();
|
_container = UpdateContainerBuilder.Build();
|
||||||
|
|
||||||
logger.Info("Updating NzbDrone to version {0}", BuildInfo.Version);
|
logger.Info("Updating NzbDrone to version {0}", BuildInfo.Version);
|
||||||
_container.Resolve<Program>().Start(args);
|
_container.Resolve<UpdateApp>().Start(args);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using NzbDrone.Host;
|
||||||
|
|
||||||
|
namespace NzbDrone
|
||||||
|
{
|
||||||
|
public class MessageBoxUserAlert : IUserAlert
|
||||||
|
{
|
||||||
|
public void Alert(string message)
|
||||||
|
{
|
||||||
|
MessageBox.Show(text: message, buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Warning, caption: "NzbDrone");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,6 +96,7 @@
|
||||||
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
||||||
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="MessageBoxUserAlert.cs" />
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Host;
|
||||||
using NzbDrone.SysTray;
|
using NzbDrone.SysTray;
|
||||||
|
|
||||||
namespace NzbDrone
|
namespace NzbDrone
|
||||||
|
@ -11,10 +12,13 @@ namespace NzbDrone
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var container = Host.Bootstrap.Start(new StartupArguments(args));
|
var container = Bootstrap.Start(new StartupArguments(args), new MessageBoxUserAlert());
|
||||||
container.Register<ISystemTrayApp, SystemTrayApp>();
|
container.Register<ISystemTrayApp, SystemTrayApp>();
|
||||||
container.Resolve<ISystemTrayApp>().Start();
|
container.Resolve<ISystemTrayApp>().Start();
|
||||||
}
|
}
|
||||||
|
catch (TerminateApplicationException)
|
||||||
|
{
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
var message = string.Format("{0}: {1}", e.GetType().Name, e.Message);
|
var message = string.Format("{0}: {1}", e.GetType().Name, e.Message);
|
||||||
|
|
Loading…
Reference in New Issue