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> /// <summary>
/// Changes the status of the other versions of the plugin to "Superceded". /// Changes the status of the other versions of the plugin to "Superceded".
/// </summary> /// </summary>
@ -295,6 +321,9 @@ namespace Emby.Server.Implementations
return; 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)) 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);

View File

@ -166,14 +166,14 @@ namespace MediaBrowser.Common.Plugins
assemblyPlugin.SetId(assemblyId); assemblyPlugin.SetId(assemblyId);
} }
// TODO : Simplify this, once migration support is ceased. // TODO : Remove this, once migration support is ceased.
if (inPluginFolder) if (inPluginFolder)
{ {
var oldConfigFilePath = Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName); var oldConfigFilePath = Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
if (!File.Exists(ConfigurationFilePath) && File.Exists(oldConfigFilePath)) 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 try
{ {
File.Copy(oldConfigFilePath, ConfigurationFilePath); File.Copy(oldConfigFilePath, ConfigurationFilePath);