diff --git a/NzbDrone.Common/EnviromentProvider.cs b/NzbDrone.Common/EnviromentProvider.cs index 572d3460e..829781641 100644 --- a/NzbDrone.Common/EnviromentProvider.cs +++ b/NzbDrone.Common/EnviromentProvider.cs @@ -44,28 +44,42 @@ namespace NzbDrone.Common { get { - var dir = new DirectoryInfo(Environment.CurrentDirectory); + string applicationPath; - while (!ContainsIIS(dir)) - { - if (dir.Parent == null) break; - dir = dir.Parent; - } + applicationPath = GetApplicationPath(Environment.CurrentDirectory); + if (!string.IsNullOrWhiteSpace(applicationPath)) + return applicationPath; - if (ContainsIIS(dir)) return dir.FullName; + applicationPath = GetApplicationPath(StartUpPath); + if (!string.IsNullOrWhiteSpace(applicationPath)) + return applicationPath; - dir = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory; + applicationPath = GetApplicationPath(NzbDronePathFromEnviroment); + if (!string.IsNullOrWhiteSpace(applicationPath)) + return applicationPath; - while (!ContainsIIS(dir)) - { - if (dir.Parent == null) throw new ApplicationException("Can't fine IISExpress folder."); - dir = dir.Parent; - } - - return dir.FullName; + throw new ApplicationException("Can't fine IISExpress folder."); } } + private string GetApplicationPath(string dir) + { + var directoryInfo = new DirectoryInfo(dir); + + while (!ContainsIIS(directoryInfo)) + { + if (directoryInfo.Parent == null) break; + directoryInfo = directoryInfo.Parent; + } + + return directoryInfo.FullName; + } + + private static bool ContainsIIS(DirectoryInfo dir) + { + return dir.GetDirectories(IIS_FOLDER_NAME).Length != 0; + } + public virtual string StartUpPath { @@ -110,9 +124,14 @@ namespace NzbDrone.Common } } - private static bool ContainsIIS(DirectoryInfo dir) + public virtual string NzbDronePathFromEnviroment { - return dir.GetDirectories(IIS_FOLDER_NAME).Length != 0; + get + { + return Environment.GetEnvironmentVariable(NZBDRONE_PATH); + } } + + } } \ No newline at end of file diff --git a/NzbDrone/Providers/IISProvider.cs b/NzbDrone/Providers/IISProvider.cs index 42e188ef4..04256fd66 100644 --- a/NzbDrone/Providers/IISProvider.cs +++ b/NzbDrone/Providers/IISProvider.cs @@ -1,10 +1,8 @@ using System; using System.Diagnostics; -using System.IO; using NLog; using Ninject; using NzbDrone.Common; -using NzbDrone.Common.Model; namespace NzbDrone.Providers {