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.bundle_e_sqlite3" Version="1.1.11" />
|
||||||
<PackageReference Include="SQLitePCLRaw.core" Version="1.1.11" />
|
<PackageReference Include="SQLitePCLRaw.core" Version="1.1.11" />
|
||||||
<PackageReference Include="SQLitePCLRaw.provider.sqlite3.netstandard11" 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>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -24,6 +24,7 @@ using Mono.Unix.Native;
|
||||||
using ILogger = MediaBrowser.Model.Logging.ILogger;
|
using ILogger = MediaBrowser.Model.Logging.ILogger;
|
||||||
using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate;
|
using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using InteropServices = System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace MediaBrowser.Server.Mono
|
namespace MediaBrowser.Server.Mono
|
||||||
{
|
{
|
||||||
|
@ -87,12 +88,19 @@ namespace MediaBrowser.Server.Mono
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(programDataPath))
|
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);
|
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)
|
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