|
@@ -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
|