diff --git a/src/Umbraco.Core/Manifest/PackageManifest.cs b/src/Umbraco.Core/Manifest/PackageManifest.cs
index c49ae3f719..56c69ebb15 100644
--- a/src/Umbraco.Core/Manifest/PackageManifest.cs
+++ b/src/Umbraco.Core/Manifest/PackageManifest.cs
@@ -1,6 +1,8 @@
using System;
+using System.IO;
using System.Runtime.Serialization;
using Umbraco.Cms.Core.PropertyEditors;
+using Umbraco.Extensions;
namespace Umbraco.Cms.Core.Manifest
{
@@ -10,10 +12,30 @@ namespace Umbraco.Cms.Core.Manifest
[DataContract]
public class PackageManifest
{
- [DataMember(Name = "name", IsRequired = false)]
- public string PackageName { get; set; }
+ private string _packageName;
- [DataMember(Name = "packageView", IsRequired = false)]
+ ///
+ /// An optional package name. If not specified then the directory name is used.
+ ///
+ [DataMember(Name = "name")]
+ public string PackageName
+ {
+ get
+ {
+ if (!_packageName.IsNullOrWhiteSpace())
+ {
+ return _packageName;
+ }
+ if (!Source.IsNullOrWhiteSpace())
+ {
+ _packageName = Path.GetFileName(Path.GetDirectoryName(Source));
+ }
+ return _packageName;
+ }
+ set => _packageName = value;
+ }
+
+ [DataMember(Name = "packageView")]
public string PackageView { get; set; }
///
diff --git a/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs b/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs
index 5b69e0374e..7d98a19091 100644
--- a/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs
+++ b/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs
@@ -170,7 +170,10 @@ namespace Umbraco.Cms.Core.Manifest
private IEnumerable GetManifestFiles()
{
if (Directory.Exists(_path) == false)
- return new string[0];
+ {
+ return Array.Empty();
+ }
+
return Directory.GetFiles(_path, "package.manifest", SearchOption.AllDirectories);
}