Move default folder for *nix platforms to $HOME/.jellyfin
Remove dependency on System.Configuration.ConfigurationManager
This commit is contained in:
parent
b36b526f27
commit
0f5c0cca37
|
@ -1,60 +0,0 @@
|
|||
using System;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace MediaBrowser.Server.Mono
|
||||
{
|
||||
public static class ApplicationPathHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the path to the application's ProgramDataFolder
|
||||
/// </summary>
|
||||
/// <returns>System.String.</returns>
|
||||
public static string GetProgramDataPath(string applicationPath)
|
||||
{
|
||||
var useDebugPath = false;
|
||||
|
||||
#if DEBUG
|
||||
useDebugPath = true;
|
||||
#endif
|
||||
|
||||
var programDataPath = useDebugPath ?
|
||||
ConfigurationManager.AppSettings["DebugProgramDataPath"] :
|
||||
ConfigurationManager.AppSettings["ReleaseProgramDataPath"];
|
||||
|
||||
if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
programDataPath = programDataPath.Replace("%ApplicationData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
|
||||
}
|
||||
else
|
||||
{
|
||||
programDataPath = programDataPath.Replace("%ApplicationData%", "/var/lib");
|
||||
}
|
||||
|
||||
|
||||
programDataPath = programDataPath
|
||||
.Replace('/', Path.DirectorySeparatorChar)
|
||||
.Replace('\\', Path.DirectorySeparatorChar);
|
||||
|
||||
// If it's a relative path, e.g. "..\"
|
||||
if (!Path.IsPathRooted(programDataPath))
|
||||
{
|
||||
var path = Path.GetDirectoryName(applicationPath);
|
||||
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ApplicationException("Unable to determine running assembly location");
|
||||
}
|
||||
|
||||
programDataPath = Path.Combine(path, programDataPath);
|
||||
|
||||
programDataPath = Path.GetFullPath(programDataPath);
|
||||
}
|
||||
|
||||
Directory.CreateDirectory(programDataPath);
|
||||
|
||||
return programDataPath;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,7 +22,6 @@
|
|||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="1.1.11" />
|
||||
<PackageReference Include="SQLitePCLRaw.core" Version="1.1.11" />
|
||||
<PackageReference Include="SQLitePCLRaw.provider.sqlite3.netstandard11" Version="1.1.11" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -24,6 +24,7 @@ using Mono.Unix.Native;
|
|||
using ILogger = MediaBrowser.Model.Logging.ILogger;
|
||||
using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate;
|
||||
using System.Threading;
|
||||
using InteropServices = System.Runtime.InteropServices;
|
||||
|
||||
namespace MediaBrowser.Server.Mono
|
||||
{
|
||||
|
@ -87,12 +88,19 @@ namespace MediaBrowser.Server.Mono
|
|||
{
|
||||
if (string.IsNullOrEmpty(programDataPath))
|
||||
{
|
||||
programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath);
|
||||
if (InteropServices.RuntimeInformation.IsOSPlatform(InteropServices.OSPlatform.Windows))
|
||||
{
|
||||
programDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "jellyfin");
|
||||
}
|
||||
else
|
||||
{
|
||||
programDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".jellyfin");
|
||||
}
|
||||
}
|
||||
|
||||
var appFolderPath = Path.GetDirectoryName(applicationPath);
|
||||
|
||||
return new ServerApplicationPaths(programDataPath, appFolderPath, Path.GetDirectoryName(applicationPath));
|
||||
return new ServerApplicationPaths(programDataPath, appFolderPath, appFolderPath);
|
||||
}
|
||||
|
||||
private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options)
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="DebugProgramDataPath" value="%ApplicationData%/jellyfin-debug/" />
|
||||
<add key="ReleaseProgramDataPath" value="%ApplicationData%/jellyfin/" />
|
||||
</appSettings>
|
||||
</configuration>
|
Loading…
Reference in New Issue
Block a user