diff --git a/Directory.Packages.props b/Directory.Packages.props
index de21c2431b..976f971f46 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -76,8 +76,6 @@
-
-
diff --git a/src/Umbraco.Cms.Api.Management/DependencyInjection/UmbracoBuilder.BackOffice.cs b/src/Umbraco.Cms.Api.Management/DependencyInjection/UmbracoBuilder.BackOffice.cs
index 20ee572dc4..4cc22890cd 100644
--- a/src/Umbraco.Cms.Api.Management/DependencyInjection/UmbracoBuilder.BackOffice.cs
+++ b/src/Umbraco.Cms.Api.Management/DependencyInjection/UmbracoBuilder.BackOffice.cs
@@ -24,7 +24,6 @@ public static partial class UmbracoBuilderExtensions
.AddConfiguration()
.AddUmbracoCore()
.AddWebComponents()
- .AddRuntimeMinifier()
.AddBackOfficeCore()
.AddBackOfficeIdentity()
.AddBackOfficeAuthentication()
diff --git a/src/Umbraco.Cms.Api.Management/Extensions/UmbracoApplicationBuilder.BackOffice.cs b/src/Umbraco.Cms.Api.Management/Extensions/UmbracoApplicationBuilder.BackOffice.cs
index b1e3000884..7105c6bcf3 100644
--- a/src/Umbraco.Cms.Api.Management/Extensions/UmbracoApplicationBuilder.BackOffice.cs
+++ b/src/Umbraco.Cms.Api.Management/Extensions/UmbracoApplicationBuilder.BackOffice.cs
@@ -38,7 +38,6 @@ public static partial class UmbracoApplicationBuilderExtensions
BackOfficeAreaRoutes backOfficeRoutes = app.ApplicationServices.GetRequiredService();
backOfficeRoutes.CreateRoutes(app.EndpointRouteBuilder);
- app.UseUmbracoRuntimeMinificationEndpoints();
app.UseUmbracoPreviewEndpoints();
return app;
diff --git a/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeExternalLoginProviderErrorMiddleware.cs b/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeExternalLoginProviderErrorMiddleware.cs
index 95128b47f7..414d0fcb38 100644
--- a/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeExternalLoginProviderErrorMiddleware.cs
+++ b/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeExternalLoginProviderErrorMiddleware.cs
@@ -1,8 +1,8 @@
using System.Text;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
-using Newtonsoft.Json;
using Umbraco.Cms.Core.Security;
+using Umbraco.Cms.Core.Serialization;
using Umbraco.Extensions;
namespace Umbraco.Cms.Api.Management.Middleware;
@@ -18,6 +18,13 @@ namespace Umbraco.Cms.Api.Management.Middleware;
///
public class BackOfficeExternalLoginProviderErrorMiddleware : IMiddleware
{
+ private readonly IJsonSerializer _jsonSerializer;
+
+ public BackOfficeExternalLoginProviderErrorMiddleware(IJsonSerializer jsonSerializer)
+ {
+ _jsonSerializer = jsonSerializer;
+ }
+
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
var shortCircuit = false;
@@ -29,7 +36,7 @@ public class BackOfficeExternalLoginProviderErrorMiddleware : IMiddleware
{
shortCircuit = true;
- var serialized = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(errors)));
+ var serialized = Convert.ToBase64String(Encoding.UTF8.GetBytes(_jsonSerializer.Serialize(errors)));
context.Response.Cookies.Append(
ViewDataExtensions.TokenExternalSignInError,
diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs
index d4467fa3ea..bb4a4d98c3 100644
--- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs
+++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs
@@ -15,8 +15,6 @@ using Umbraco.Cms.Core.Routing;
using Umbraco.Cms.Core.Snippets;
using Umbraco.Cms.Core.Strings;
using Umbraco.Cms.Core.Tour;
-using Umbraco.Cms.Core.Trees;
-using Umbraco.Cms.Core.WebAssets;
using Umbraco.Cms.Core.Webhooks;
using Umbraco.Extensions;
@@ -97,7 +95,6 @@ public static partial class UmbracoBuilderExtensions
.Append()
.Append()
.Append();
- builder.BackOfficeAssets();
builder.SelectorHandlers().Add(() => builder.TypeLoader.GetTypes());
builder.FilterHandlers().Add(() => builder.TypeLoader.GetTypes());
builder.SortHandlers().Add(() => builder.TypeLoader.GetTypes());
@@ -244,12 +241,6 @@ public static partial class UmbracoBuilderExtensions
public static EmbedProvidersCollectionBuilder EmbedProviders(this IUmbracoBuilder builder)
=> builder.WithCollectionBuilder();
- ///
- /// Gets the back office custom assets collection builder
- ///
- public static CustomBackOfficeAssetsCollectionBuilder BackOfficeAssets(this IUmbracoBuilder builder)
- => builder.WithCollectionBuilder();
-
///
/// Gets the Delivery API selector handler collection builder
///
diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs
index c211b54c1f..9bc065993e 100644
--- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs
+++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs
@@ -18,7 +18,6 @@ using Umbraco.Cms.Core.Events;
using Umbraco.Cms.Core.Features;
using Umbraco.Cms.Core.Handlers;
using Umbraco.Cms.Core.Hosting;
-using Umbraco.Cms.Core.Install;
using Umbraco.Cms.Core.IO;
using Umbraco.Cms.Core.Logging;
using Umbraco.Cms.Core.Mail;
@@ -187,8 +186,6 @@ namespace Umbraco.Cms.Core.DependencyInjection
Services.AddSingleton();
- Services.AddSingleton();
-
Services.AddUnique();
Services.AddSingleton(f => f.GetRequiredService().CreateDictionary());
diff --git a/src/Umbraco.Core/Install/InstallStatusTracker.cs b/src/Umbraco.Core/Install/InstallStatusTracker.cs
deleted file mode 100644
index f1f92ef46c..0000000000
--- a/src/Umbraco.Core/Install/InstallStatusTracker.cs
+++ /dev/null
@@ -1,157 +0,0 @@
-using Umbraco.Cms.Core.Collections;
-using Umbraco.Cms.Core.Hosting;
-using Umbraco.Cms.Core.Install.Models;
-using Umbraco.Cms.Core.Serialization;
-using Umbraco.Extensions;
-
-namespace Umbraco.Cms.Core.Install;
-
-///
-/// An internal in-memory status tracker for the current installation
-///
-[Obsolete("This will no longer be used with the new backoffice APi, instead all steps run in one go")]
-public class InstallStatusTracker
-{
- private static ConcurrentHashSet _steps = new();
- private readonly IHostingEnvironment _hostingEnvironment;
- private readonly IJsonSerializer _jsonSerializer;
-
- public InstallStatusTracker(IHostingEnvironment hostingEnvironment, IJsonSerializer jsonSerializer)
- {
- _hostingEnvironment = hostingEnvironment;
- _jsonSerializer = jsonSerializer;
- }
-
- public static IEnumerable GetStatus() =>
- new List(_steps).OrderBy(x => x.ServerOrder);
-
- public void Reset()
- {
- _steps = new ConcurrentHashSet();
- ClearFiles();
- }
-
- private string GetFile(Guid installId)
- {
- var file = _hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.TempData.EnsureEndsWith('/') +
- "Install/"
- + "install_"
- + installId.ToString("N")
- + ".txt");
- return file;
- }
-
- public void ClearFiles()
- {
- var dir = _hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.TempData.EnsureEndsWith('/') +
- "Install/");
- if (Directory.Exists(dir))
- {
- var files = Directory.GetFiles(dir);
- foreach (var f in files)
- {
- File.Delete(f);
- }
- }
- else
- {
- Directory.CreateDirectory(dir);
- }
- }
-
- public IEnumerable InitializeFromFile(Guid installId)
- {
- // check if we have our persisted file and read it
- var file = GetFile(installId);
- if (File.Exists(file))
- {
- IEnumerable? deserialized =
- _jsonSerializer.Deserialize>(
- File.ReadAllText(file));
- if (deserialized is not null)
- {
- foreach (InstallTrackingItem item in deserialized)
- {
- _steps.Add(item);
- }
- }
- }
- else
- {
- throw new InvalidOperationException("Cannot initialize from file, the installation file with id " +
- installId + " does not exist");
- }
-
- return new List(_steps);
- }
-
- public IEnumerable Initialize(Guid installId, IEnumerable steps)
- {
- // if there are no steps in memory
- if (_steps.Count == 0)
- {
- // check if we have our persisted file and read it
- var file = GetFile(installId);
- if (File.Exists(file))
- {
- IEnumerable? deserialized =
- _jsonSerializer.Deserialize>(
- File.ReadAllText(file));
- if (deserialized is not null)
- {
- foreach (InstallTrackingItem item in deserialized)
- {
- _steps.Add(item);
- }
- }
- }
- else
- {
- ClearFiles();
-
- // otherwise just create the steps in memory (brand new install)
- foreach (InstallSetupStep step in steps.OrderBy(x => x.ServerOrder))
- {
- _steps.Add(new InstallTrackingItem(step.Name, step.ServerOrder));
- }
-
- // save the file
- var serialized = _jsonSerializer.Serialize(new List(_steps));
- Directory.CreateDirectory(Path.GetDirectoryName(file)!);
- File.WriteAllText(file, serialized);
- }
- }
- else
- {
- // ensure that the file exists with the current install id
- var file = GetFile(installId);
- if (File.Exists(file) == false)
- {
- ClearFiles();
-
- // save the correct file
- var serialized = _jsonSerializer.Serialize(new List(_steps));
- Directory.CreateDirectory(Path.GetDirectoryName(file)!);
- File.WriteAllText(file, serialized);
- }
- }
-
- return new List(_steps);
- }
-
- public void SetComplete(Guid installId, string name, IDictionary? additionalData = null)
- {
- InstallTrackingItem trackingItem = _steps.Single(x => x.Name == name);
- if (additionalData != null)
- {
- trackingItem.AdditionalData = additionalData;
- }
-
- trackingItem.IsComplete = true;
-
- // save the file
- var file = GetFile(installId);
- var serialized = _jsonSerializer.Serialize(new List(_steps));
- File.WriteAllText(file, serialized);
- }
-}
diff --git a/src/Umbraco.Core/Install/InstallSteps/FilePermissionsStep.cs b/src/Umbraco.Core/Install/InstallSteps/FilePermissionsStep.cs
deleted file mode 100644
index b6a08d55ae..0000000000
--- a/src/Umbraco.Core/Install/InstallSteps/FilePermissionsStep.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) Umbraco.
-// See LICENSE for more details.
-
-using Umbraco.Cms.Core.Install.Models;
-using Umbraco.Cms.Core.Services;
-using Umbraco.Extensions;
-
-namespace Umbraco.Cms.Core.Install.InstallSteps;
-
-///
-/// Represents a step in the installation that ensure all the required permissions on files and folders are correct.
-///
-[Obsolete("Will be replace with a new step with the new backoffice")]
-[InstallSetupStep(
- InstallationType.NewInstall | InstallationType.Upgrade,
- "Permissions",
- 0,
- "",
- PerformsAppRestart = true)]
-public class FilePermissionsStep : InstallSetupStep