Files
Umbraco-CMS/src/Umbraco.Core/Packaging/InstalledPackage.cs
Ronald Barendse 41e51d6e71 Add PackageId to package manifest and PackageMigrationPlan (#14047)
* Add VersionAssemblyName to package manifest

* Fix/improve nullability

* Ensure package version from manifest is set when package migration exists

* Set versionAssemblyName in umbracopackage template

* Use Assembly.Load instead of ITypeFinder

* Use AssemblyLoadContext to get asesmbly by name

* Add PackageId to package manifest

* Show ID on installed packages overview

* Fallback to package ID to get assembly version

* Include package ID in telemetry data

* Set id in umbracopackage template

* Add PackageId to PackageMigrationPlan

* Get version from package migration assembly

* Hide unknown package version

* Always use package name from manifest

* Use IPackagingService to return package telemety data

* Set versionAssemblyName in umbracopackage-rcl template

* Set id in umbracopackage-rcl template
2023-05-31 11:31:37 +02:00

46 lines
1.5 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace Umbraco.Cms.Core.Packaging;
[DataContract(Name = "installedPackage")]
public class InstalledPackage
{
[DataMember(Name = "id")]
public string? PackageId { get; set; }
[DataMember(Name = "name", IsRequired = true)]
[Required]
public string? PackageName { get; set; }
[DataMember(Name = "packageView")]
public string? PackageView { get; set; }
[DataMember(Name = "version")]
public string? Version { get; set; }
[DataMember(Name = "allowPackageTelemetry")]
public bool AllowPackageTelemetry { get; set; } = true;
[DataMember(Name = "plans")]
public IEnumerable<InstalledPackageMigrationPlans> PackageMigrationPlans { get; set; } = Enumerable.Empty<InstalledPackageMigrationPlans>();
/// <summary>
/// Gets a value indicating whether this package has migrations.
/// </summary>
/// <value>
/// <c>true</c> if this package has migrations; otherwise, <c>false</c>.
/// </value>
[DataMember(Name = "hasMigrations")]
public bool HasMigrations => PackageMigrationPlans.Any();
/// <summary>
/// Gets a value indicating whether this package has pending migrations.
/// </summary>
/// <value>
/// <c>true</c> if this package has pending migrations; otherwise, <c>false</c>.
/// </value>
[DataMember(Name = "hasPendingMigrations")]
public bool HasPendingMigrations => PackageMigrationPlans.Any(x => x.HasPendingMigrations);
}