From a04ddca42b2070124c63a61c661e2b96a5bddac2 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Tue, 2 Jun 2020 19:45:25 +1000 Subject: Refactor the tasks so that the in-proc code is in partial classes. --- src/WixToolset.BuildTasks/WixBuild_InProc.cs | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/WixToolset.BuildTasks/WixBuild_InProc.cs (limited to 'src/WixToolset.BuildTasks/WixBuild_InProc.cs') diff --git a/src/WixToolset.BuildTasks/WixBuild_InProc.cs b/src/WixToolset.BuildTasks/WixBuild_InProc.cs new file mode 100644 index 00000000..8e9f2fec --- /dev/null +++ b/src/WixToolset.BuildTasks/WixBuild_InProc.cs @@ -0,0 +1,53 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolset.BuildTasks +{ + using WixToolset.Data; + using WixToolset.Extensibility; + using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; + + public partial class WixBuild + { + protected override string TaskShortName => "WIX"; + + protected override int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener listener, string commandLineString) + { + var messaging = serviceProvider.GetService(); + messaging.SetListener(listener); + + var arguments = serviceProvider.GetService(); + arguments.Populate(commandLineString); + + var commandLine = serviceProvider.GetService(); + commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); + commandLine.Arguments = arguments; + var command = commandLine.ParseStandardCommandLine(); + return command?.Execute() ?? -1; + } + + private IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, IMessaging messaging, string[] extensions) + { + var extensionManager = serviceProvider.GetService(); + + foreach (var type in new[] { typeof(WixToolset.Core.Burn.WixToolsetStandardBackend), typeof(WixToolset.Core.WindowsInstaller.WixToolsetStandardBackend) }) + { + extensionManager.Add(type.Assembly); + } + + foreach (var extension in extensions) + { + try + { + extensionManager.Load(extension); + } + catch (WixException e) + { + messaging.Write(e.Error); + } + } + + return extensionManager; + } + } +} -- cgit v1.2.3-55-g6feb