mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-31 20:24:21 -04:00
Plugin setting migration to folders.
This commit is contained in:
parent
494ace7984
commit
fbb20ebef6
@ -406,10 +406,7 @@ namespace Emby.Server.Implementations
|
|||||||
Logger.LogError("Called from: {stack}", entry.FullName);
|
Logger.LogError("Called from: {stack}", entry.FullName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type is IPlugin)
|
_pluginManager.FailPlugin(type.Assembly);
|
||||||
{
|
|
||||||
_pluginManager.FailPlugin(type.Assembly);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new ExternalException("DI Loop detected.");
|
throw new ExternalException("DI Loop detected.");
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,7 @@ namespace Emby.Server.Implementations
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ChangePluginState(predecessor, PluginStatus.Superceded))
|
if (predecessor.Manifest.Status == PluginStatus.Active && !ChangePluginState(predecessor, PluginStatus.Superceded))
|
||||||
{
|
{
|
||||||
_logger.LogError("Unable to disable version {Version} of {Name}", predecessor.Version, predecessor.Name);
|
_logger.LogError("Unable to disable version {Version} of {Name}", predecessor.Version, predecessor.Name);
|
||||||
}
|
}
|
||||||
@ -314,7 +314,10 @@ namespace Emby.Server.Implementations
|
|||||||
throw new ArgumentNullException(nameof(assembly));
|
throw new ArgumentNullException(nameof(assembly));
|
||||||
}
|
}
|
||||||
|
|
||||||
var plugin = _plugins.Where(p => assembly.Equals(p.Assembly)).FirstOrDefault();
|
var plugin = _plugins.Where(
|
||||||
|
p => assembly.Equals(p.Assembly)
|
||||||
|
|| string.Equals(assembly.Location, assembly.Location, StringComparison.OrdinalIgnoreCase))
|
||||||
|
.FirstOrDefault();
|
||||||
if (plugin == null)
|
if (plugin == null)
|
||||||
{
|
{
|
||||||
// A plugin's assembly didn't cause this issue, so ignore it.
|
// A plugin's assembly didn't cause this issue, so ignore it.
|
||||||
@ -403,6 +406,10 @@ namespace Emby.Server.Implementations
|
|||||||
{
|
{
|
||||||
// Find the record for this plugin.
|
// Find the record for this plugin.
|
||||||
var plugin = GetPluginByType(type);
|
var plugin = GetPluginByType(type);
|
||||||
|
if (plugin?.Manifest.Status < PluginStatus.Active)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -134,7 +134,26 @@ namespace MediaBrowser.Common.Plugins
|
|||||||
var assemblyName = assembly.GetName();
|
var assemblyName = assembly.GetName();
|
||||||
var assemblyFilePath = assembly.Location;
|
var assemblyFilePath = assembly.Location;
|
||||||
|
|
||||||
var dataFolderPath = Path.Combine(ApplicationPaths.PluginsPath, Path.GetFileNameWithoutExtension(assemblyFilePath));
|
// Find out the plugin folder.
|
||||||
|
bool inPluginFolder = assemblyFilePath.StartsWith(ApplicationPaths.PluginsPath, StringComparison.OrdinalIgnoreCase);
|
||||||
|
string path, dataFolderPath;
|
||||||
|
|
||||||
|
var configurationFileName = Path.ChangeExtension(Path.GetFileName(assemblyFilePath), ".xml");
|
||||||
|
if (inPluginFolder)
|
||||||
|
{
|
||||||
|
// Normal plugin.
|
||||||
|
path = assemblyFilePath.Substring(ApplicationPaths.PluginsPath.Length).Split('\\', StringSplitOptions.RemoveEmptyEntries)[0];
|
||||||
|
dataFolderPath = Path.Combine(
|
||||||
|
Path.Combine(ApplicationPaths.PluginsPath, path),
|
||||||
|
configurationFileName);
|
||||||
|
ConfigurationFilePath = dataFolderPath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Provider
|
||||||
|
dataFolderPath = Path.Combine(ApplicationPaths.PluginsPath, Path.GetFileNameWithoutExtension(assemblyFilePath));
|
||||||
|
ConfigurationFilePath = Path.Combine(ApplicationPaths.PluginConfigurationsPath, configurationFileName);
|
||||||
|
}
|
||||||
|
|
||||||
assemblyPlugin.SetAttributes(assemblyFilePath, dataFolderPath, assemblyName.Version);
|
assemblyPlugin.SetAttributes(assemblyFilePath, dataFolderPath, assemblyName.Version);
|
||||||
|
|
||||||
@ -146,6 +165,25 @@ namespace MediaBrowser.Common.Plugins
|
|||||||
|
|
||||||
assemblyPlugin.SetId(assemblyId);
|
assemblyPlugin.SetId(assemblyId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO : Simplify this, once migration support is ceased.
|
||||||
|
if (inPluginFolder)
|
||||||
|
{
|
||||||
|
var oldConfigFilePath = Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
|
||||||
|
|
||||||
|
if (!File.Exists(ConfigurationFilePath) && File.Exists(oldConfigFilePath))
|
||||||
|
{
|
||||||
|
// Migrate settings, as different plugin versions may have different settings.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Copy(oldConfigFilePath, ConfigurationFilePath);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Unable to migrate settings.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this is IHasPluginConfiguration hasPluginConfiguration)
|
if (this is IHasPluginConfiguration hasPluginConfiguration)
|
||||||
@ -219,7 +257,7 @@ namespace MediaBrowser.Common.Plugins
|
|||||||
/// Gets the full path to the configuration file.
|
/// Gets the full path to the configuration file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The configuration file path.</value>
|
/// <value>The configuration file path.</value>
|
||||||
public string ConfigurationFilePath => Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
|
public string ConfigurationFilePath { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the plugin configuration.
|
/// Gets the plugin configuration.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user