aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs35
-rw-r--r--Emby.Server.Implementations/Plugins/PlugInManifest.cs20
2 files changed, 33 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 878ea30fc..d1e28cce5 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -1051,27 +1051,38 @@ namespace Emby.Server.Implementations
var dllList = new List<string>();
var versions = new List<(Version PluginVersion, string Name, string Path)>();
var directories = Directory.EnumerateDirectories(path, "*.*", SearchOption.TopDirectoryOnly);
+ string metafile;
foreach (var dir in directories)
{
try
{
- var manifest = _jsonSerializer.DeserializeFromFile<PlugInManifest>(Path.Combine(dir, "meta.json"));
-
- if (!Version.TryParse(manifest.TargetAbi, out var targetAbi))
+ metafile = Path.Combine(dir, "meta.json");
+ if (File.Exists(metafile))
{
- targetAbi = new Version(0, 0, 0, 1);
- }
+ var manifest = _jsonSerializer.DeserializeFromFile<PluginManifest>(metafile);
- if (!Version.TryParse(manifest.Version, out var version))
- {
- version = new Version(0, 0, 0, 1);
- }
+ if (!Version.TryParse(manifest.TargetAbi, out var targetAbi))
+ {
+ targetAbi = new Version(0, 0, 0, 1);
+ }
- if (targetAbi >= ApplicationVersion)
+ if (!Version.TryParse(manifest.Version, out var version))
+ {
+ version = new Version(0, 0, 0, 1);
+ }
+
+ if (ApplicationVersion <= targetAbi)
+ {
+ // Only load Plugins if the plugin is built for this version or below.
+ versions.Add((version, manifest.Name, dir));
+ }
+ }
+ else
{
- // Only load Plugins for this version or below.
- versions.Add((version, manifest.Name, dir));
+ metafile = dir.Split(new char[] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
+ // Add it under the path name and version 0.0.0.1.
+ versions.Add((new Version("0.0.0.1"), metafile, dir));
}
}
catch
diff --git a/Emby.Server.Implementations/Plugins/PlugInManifest.cs b/Emby.Server.Implementations/Plugins/PlugInManifest.cs
index b874676d8..33762791b 100644
--- a/Emby.Server.Implementations/Plugins/PlugInManifest.cs
+++ b/Emby.Server.Implementations/Plugins/PlugInManifest.cs
@@ -9,52 +9,52 @@ namespace Emby.Server.Implementations.Plugins
{
/// <summary>
/// Gets or sets the category of the plugin.
- /// </summary>
+ /// </summary>
public string Category { get; set; }
/// <summary>
/// Gets or sets the changelog information.
- /// </summary>
+ /// </summary>
public string Changelog { get; set; }
/// <summary>
/// Gets or sets the description of the plugin.
- /// </summary>
+ /// </summary>
public string Description { get; set; }
/// <summary>
/// Gets or sets the Global Unique Identifier for the plugin.
- /// </summary>
+ /// </summary>
public Guid Guid { get; set; }
/// <summary>
/// Gets or sets the Name of the plugin.
- /// </summary>
+ /// </summary>
public string Name { get; set; }
/// <summary>
/// Gets or sets an overview of the plugin.
- /// </summary>
+ /// </summary>
public string Overview { get; set; }
/// <summary>
/// Gets or sets the owner of the plugin.
- /// </summary>
+ /// </summary>
public string Owner { get; set; }
/// <summary>
/// Gets or sets the compatibility version for the plugin.
- /// </summary>
+ /// </summary>
public string TargetAbi { get; set; }
/// <summary>
/// Gets or sets the timestamp of the plugin.
- /// </summary>
+ /// </summary>
public DateTime Timestamp { get; set; }
/// <summary>
/// Gets or sets the Version number of the plugin.
- /// </summary>
+ /// </summary>
public string Version { get; set; }
}
}