Copy previous plugin settings if they don't exist.

This commit is contained in:
Greenback 2020-12-16 23:19:09 +00:00
parent 1ed25ebd9a
commit d9aaba36ec
2 changed files with 31 additions and 2 deletions

View File

@ -274,6 +274,32 @@ namespace Emby.Server.Implementations
}
}
private void CopyFiles(string source, string destination, bool overwrite, string searchPattern)
{
FileInfo[] files;
try
{
files = new DirectoryInfo(source).GetFiles(searchPattern);
}
catch (Exception ex)
{
_logger.LogDebug(ex, "Error retrieving file list.");
return;
}
foreach (FileInfo file in files)
{
try
{
file.CopyTo(Path.Combine(destination, file.Name), overwrite);
}
catch (Exception ex)
{
_logger.LogDebug(ex, "Error copying file {Name}", file.Name);
}
}
}
/// <summary>
/// Changes the status of the other versions of the plugin to "Superceded".
/// </summary>
@ -295,6 +321,9 @@ namespace Emby.Server.Implementations
return;
}
// migrate settings across from the last active version if they don't exist.
CopyFiles(predecessor.Path, plugin.Path, false, "*.xml");
if (predecessor.Manifest.Status == PluginStatus.Active && !ChangePluginState(predecessor, PluginStatus.Superceded))
{
_logger.LogError("Unable to disable version {Version} of {Name}", predecessor.Version, predecessor.Name);

View File

@ -166,14 +166,14 @@ namespace MediaBrowser.Common.Plugins
assemblyPlugin.SetId(assemblyId);
}
// TODO : Simplify this, once migration support is ceased.
// TODO : Remove 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.
// Migrate pre 10.7 settings, as different plugin versions may have different settings.
try
{
File.Copy(oldConfigFilePath, ConfigurationFilePath);