From 98fa23e91bca6d6a67457df056d0cb6cecf12901 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sat, 13 Jun 2020 09:42:44 -0700 Subject: Use simplified command-line parsing and update loading standard backends --- src/WixToolset.BuildTasks/HeatTask_InProc.cs | 5 +-- src/WixToolset.BuildTasks/ToolsetTask_InProc.cs | 8 ++-- src/WixToolset.BuildTasks/WixBuild_InProc.cs | 43 ++++------------------ .../WixToolsetTest.BuildTasks.v3.ncrunchproject | 3 ++ .../WixToolsetTest.MSBuild.v3.ncrunchproject | 3 ++ src/wix/Program.cs | 34 +++-------------- 6 files changed, 23 insertions(+), 73 deletions(-) (limited to 'src') diff --git a/src/WixToolset.BuildTasks/HeatTask_InProc.cs b/src/WixToolset.BuildTasks/HeatTask_InProc.cs index dd763608..a21a8409 100644 --- a/src/WixToolset.BuildTasks/HeatTask_InProc.cs +++ b/src/WixToolset.BuildTasks/HeatTask_InProc.cs @@ -6,16 +6,13 @@ namespace WixToolset.BuildTasks using System; using System.Threading; using System.Threading.Tasks; - using WixToolset.Extensibility; - using WixToolset.Extensibility.Data; using WixToolset.Extensibility.Services; - using WixToolset.Harvesters; public partial class HeatTask { protected sealed override string TaskShortName => "HEAT"; - protected sealed override Task ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken) => throw new NotImplementedException(); + protected sealed override Task ExecuteCoreAsync(IWixToolsetCoreServiceProvider coreProvider, string commandLineString, CancellationToken cancellationToken) => throw new NotImplementedException(); } } #endif diff --git a/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs b/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs index 6c83ee11..fcf4aea9 100644 --- a/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs +++ b/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs @@ -34,12 +34,12 @@ namespace WixToolset.BuildTasks try { - var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); + var coreProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); - var messaging = serviceProvider.GetService(); + var messaging = coreProvider.GetService(); messaging.SetListener(listener); - exitCode = this.ExecuteCoreAsync(serviceProvider, commandLineString, CancellationToken.None).GetAwaiter().GetResult(); + exitCode = this.ExecuteCoreAsync(coreProvider, commandLineString, CancellationToken.None).GetAwaiter().GetResult(); } catch (WixException e) { @@ -71,7 +71,7 @@ namespace WixToolset.BuildTasks } } - protected abstract Task ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken); + protected abstract Task ExecuteCoreAsync(IWixToolsetCoreServiceProvider coreProvider, string commandLineString, CancellationToken cancellationToken); protected abstract string TaskShortName { get; } } diff --git a/src/WixToolset.BuildTasks/WixBuild_InProc.cs b/src/WixToolset.BuildTasks/WixBuild_InProc.cs index 59a42431..a45d2369 100644 --- a/src/WixToolset.BuildTasks/WixBuild_InProc.cs +++ b/src/WixToolset.BuildTasks/WixBuild_InProc.cs @@ -5,52 +5,23 @@ namespace WixToolset.BuildTasks { using System.Threading; using System.Threading.Tasks; - using WixToolset.Data; - using WixToolset.Extensibility; - using WixToolset.Extensibility.Data; + using WixToolset.Core.Burn; + using WixToolset.Core.WindowsInstaller; using WixToolset.Extensibility.Services; public partial class WixBuild { protected override string TaskShortName => "WIX"; - protected override Task ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken) + protected override Task ExecuteCoreAsync(IWixToolsetCoreServiceProvider coreProvider, string commandLineString, CancellationToken cancellationToken) { - var messaging = serviceProvider.GetService(); + coreProvider.AddWindowsInstallerBackend() + .AddBundleBackend(); - 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(); + var commandLine = coreProvider.GetService(); + var command = commandLine.CreateCommand(commandLineString); return command?.ExecuteAsync(cancellationToken) ?? Task.FromResult(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; - } } } #endif diff --git a/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.v3.ncrunchproject b/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.v3.ncrunchproject index cf22dfa9..f1d03cd7 100644 --- a/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.v3.ncrunchproject +++ b/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.v3.ncrunchproject @@ -1,5 +1,8 @@  + + + \ No newline at end of file diff --git a/src/test/WixToolsetTest.MSBuild/WixToolsetTest.MSBuild.v3.ncrunchproject b/src/test/WixToolsetTest.MSBuild/WixToolsetTest.MSBuild.v3.ncrunchproject index cf22dfa9..f1d03cd7 100644 --- a/src/test/WixToolsetTest.MSBuild/WixToolsetTest.MSBuild.v3.ncrunchproject +++ b/src/test/WixToolsetTest.MSBuild/WixToolsetTest.MSBuild.v3.ncrunchproject @@ -1,5 +1,8 @@  + + + \ No newline at end of file diff --git a/src/wix/Program.cs b/src/wix/Program.cs index dcf575f7..df0e22e7 100644 --- a/src/wix/Program.cs +++ b/src/wix/Program.cs @@ -8,7 +8,9 @@ namespace WixToolset.Tools using System.Threading.Tasks; using WixToolset.Converters; using WixToolset.Core; + using WixToolset.Core.Burn; using WixToolset.Core.ExtensionCache; + using WixToolset.Core.WindowsInstaller; using WixToolset.Data; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; @@ -40,6 +42,8 @@ namespace WixToolset.Tools try { var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider() + .AddWindowsInstallerBackend() + .AddBundleBackend() .AddExtensionCacheManager() .AddConverter(); @@ -81,38 +85,10 @@ namespace WixToolset.Tools var messaging = serviceProvider.GetService(); messaging.SetListener(listener); - var arguments = serviceProvider.GetService(); - arguments.Populate(args); - var commandLine = serviceProvider.GetService(); - commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); - commandLine.Arguments = arguments; - var command = commandLine.ParseStandardCommandLine(); + var command = commandLine.CreateCommand(args); return command?.ExecuteAsync(cancellationToken) ?? Task.FromResult(1); } - private static 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