diff --git a/src/Umbraco.Web/Install/Controllers/InstallApiController.cs b/src/Umbraco.Web/Install/Controllers/InstallApiController.cs
index a63484fb39..c8e862abcb 100644
--- a/src/Umbraco.Web/Install/Controllers/InstallApiController.cs
+++ b/src/Umbraco.Web/Install/Controllers/InstallApiController.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
+using System.Threading.Tasks;
using System.Web.Http;
using Newtonsoft.Json.Linq;
using Umbraco.Core;
@@ -75,7 +76,7 @@ namespace Umbraco.Web.Install.Controllers
///
/// Installs.
///
- public InstallProgressResultModel PostPerformInstall(InstallInstructions installModel)
+ public async Task PostPerformInstall(InstallInstructions installModel)
{
if (installModel == null) throw new ArgumentNullException(nameof(installModel));
@@ -94,8 +95,7 @@ namespace Umbraco.Web.Install.Controllers
var step = _installSteps.GetAllSteps().Single(x => x.Name == item.Name);
// if this step has any instructions then extract them
- JToken instruction;
- installModel.Instructions.TryGetValue(item.Name, out instruction); // else null
+ installModel.Instructions.TryGetValue(item.Name, out var instruction); // else null
// if this step doesn't require execution then continue to the next one, this is just a fail-safe check.
if (StepRequiresExecution(step, instruction) == false)
@@ -107,7 +107,7 @@ namespace Umbraco.Web.Install.Controllers
try
{
- var setupData = ExecuteStep(step, instruction);
+ var setupData = await ExecuteStepAsync(step, instruction);
// update the status
InstallStatusTracker.SetComplete(installModel.InstallId, step.Name, setupData?.SavedStepData);
@@ -222,7 +222,7 @@ namespace Umbraco.Web.Install.Controllers
}
// executes the step
- internal InstallSetupResult ExecuteStep(InstallSetupStep step, JToken instruction)
+ internal async Task ExecuteStepAsync(InstallSetupStep step, JToken instruction)
{
using (_proflog.TraceDuration($"Executing installation step: '{step.Name}'.", "Step completed"))
{
@@ -232,8 +232,9 @@ namespace Umbraco.Web.Install.Controllers
var typedStepType = genericStepType.MakeGenericType(typeArgs);
try
{
- var method = typedStepType.GetMethods().Single(x => x.Name == "Execute");
- return (InstallSetupResult) method.Invoke(step, new[] { model });
+ var method = typedStepType.GetMethods().Single(x => x.Name == "ExecuteAsync");
+ var task = (Task) method.Invoke(step, new[] { model });
+ return await task;
}
catch (Exception ex)
{
diff --git a/src/Umbraco.Web/Install/Models/InstallSetupStep.cs b/src/Umbraco.Web/Install/Models/InstallSetupStep.cs
index 3b017368f9..fd50d7855c 100644
--- a/src/Umbraco.Web/Install/Models/InstallSetupStep.cs
+++ b/src/Umbraco.Web/Install/Models/InstallSetupStep.cs
@@ -82,8 +82,6 @@ namespace Umbraco.Web.Install.Models
///
[IgnoreDataMember]
public abstract Type StepType { get; }
-
- [IgnoreDataMember]
- public bool HasUIElement => View.IsNullOrWhiteSpace() == false;
+
}
}