diff options
-rw-r--r-- | src/WixToolset.BuildTasks/HeatTask.cs | 5 | ||||
-rw-r--r-- | src/WixToolset.BuildTasks/HeatTask_InProc.cs | 16 | ||||
-rw-r--r-- | src/WixToolset.BuildTasks/ToolsetTask_InProc.cs | 14 | ||||
-rw-r--r-- | src/WixToolset.BuildTasks/WixBuild_InProc.cs | 7 | ||||
-rw-r--r-- | src/heat/Program.cs | 10 | ||||
-rw-r--r-- | src/heat/heat.csproj | 2 | ||||
-rw-r--r-- | src/test/WixToolsetTest.MSBuild/MsbuildHeatFixture.cs | 4 |
7 files changed, 32 insertions, 26 deletions
diff --git a/src/WixToolset.BuildTasks/HeatTask.cs b/src/WixToolset.BuildTasks/HeatTask.cs index 99cbae77..18c08342 100644 --- a/src/WixToolset.BuildTasks/HeatTask.cs +++ b/src/WixToolset.BuildTasks/HeatTask.cs | |||
@@ -17,6 +17,11 @@ namespace WixToolset.BuildTasks | |||
17 | private bool suppressUniqueIds; | 17 | private bool suppressUniqueIds; |
18 | private string[] transforms; | 18 | private string[] transforms; |
19 | 19 | ||
20 | public HeatTask() | ||
21 | { | ||
22 | this.RunAsSeparateProcess = true; | ||
23 | } | ||
24 | |||
20 | public bool AutogenerateGuids | 25 | public bool AutogenerateGuids |
21 | { | 26 | { |
22 | get { return this.autogenerageGuids; } | 27 | get { return this.autogenerageGuids; } |
diff --git a/src/WixToolset.BuildTasks/HeatTask_InProc.cs b/src/WixToolset.BuildTasks/HeatTask_InProc.cs index eb6feafc..dd763608 100644 --- a/src/WixToolset.BuildTasks/HeatTask_InProc.cs +++ b/src/WixToolset.BuildTasks/HeatTask_InProc.cs | |||
@@ -3,6 +3,9 @@ | |||
3 | #if !NETCOREAPP | 3 | #if !NETCOREAPP |
4 | namespace WixToolset.BuildTasks | 4 | namespace WixToolset.BuildTasks |
5 | { | 5 | { |
6 | using System; | ||
7 | using System.Threading; | ||
8 | using System.Threading.Tasks; | ||
6 | using WixToolset.Extensibility; | 9 | using WixToolset.Extensibility; |
7 | using WixToolset.Extensibility.Data; | 10 | using WixToolset.Extensibility.Data; |
8 | using WixToolset.Extensibility.Services; | 11 | using WixToolset.Extensibility.Services; |
@@ -12,18 +15,7 @@ namespace WixToolset.BuildTasks | |||
12 | { | 15 | { |
13 | protected sealed override string TaskShortName => "HEAT"; | 16 | protected sealed override string TaskShortName => "HEAT"; |
14 | 17 | ||
15 | protected sealed override int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener listener, string commandLineString) | 18 | protected sealed override Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken) => throw new NotImplementedException(); |
16 | { | ||
17 | var messaging = serviceProvider.GetService<IMessaging>(); | ||
18 | messaging.SetListener(listener); | ||
19 | |||
20 | var arguments = serviceProvider.GetService<ICommandLineArguments>(); | ||
21 | arguments.Populate(commandLineString); | ||
22 | |||
23 | var commandLine = HeatCommandLineFactory.CreateCommandLine(serviceProvider, true); | ||
24 | var command = commandLine.ParseStandardCommandLine(arguments); | ||
25 | return command?.Execute() ?? -1; | ||
26 | } | ||
27 | } | 19 | } |
28 | } | 20 | } |
29 | #endif | 21 | #endif |
diff --git a/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs b/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs index a3290e60..6c83ee11 100644 --- a/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs +++ b/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs | |||
@@ -5,6 +5,8 @@ namespace WixToolset.BuildTasks | |||
5 | { | 5 | { |
6 | using System; | 6 | using System; |
7 | using System.Runtime.InteropServices; | 7 | using System.Runtime.InteropServices; |
8 | using System.Threading; | ||
9 | using System.Threading.Tasks; | ||
8 | using Microsoft.Build.Framework; | 10 | using Microsoft.Build.Framework; |
9 | using WixToolset.Core; | 11 | using WixToolset.Core; |
10 | using WixToolset.Data; | 12 | using WixToolset.Data; |
@@ -27,13 +29,17 @@ namespace WixToolset.BuildTasks | |||
27 | { | 29 | { |
28 | this.Log.LogMessage(MessageImportance.Normal, $"({this.ToolName}){commandLineString}"); | 30 | this.Log.LogMessage(MessageImportance.Normal, $"({this.ToolName}){commandLineString}"); |
29 | 31 | ||
30 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | ||
31 | var listener = new MsbuildMessageListener(this.Log, this.TaskShortName, this.BuildEngine.ProjectFileOfTaskNode); | 32 | var listener = new MsbuildMessageListener(this.Log, this.TaskShortName, this.BuildEngine.ProjectFileOfTaskNode); |
32 | int exitCode = -1; | 33 | var exitCode = -1; |
33 | 34 | ||
34 | try | 35 | try |
35 | { | 36 | { |
36 | exitCode = this.ExecuteCore(serviceProvider, listener, commandLineString); | 37 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); |
38 | |||
39 | var messaging = serviceProvider.GetService<IMessaging>(); | ||
40 | messaging.SetListener(listener); | ||
41 | |||
42 | exitCode = this.ExecuteCoreAsync(serviceProvider, commandLineString, CancellationToken.None).GetAwaiter().GetResult(); | ||
37 | } | 43 | } |
38 | catch (WixException e) | 44 | catch (WixException e) |
39 | { | 45 | { |
@@ -65,7 +71,7 @@ namespace WixToolset.BuildTasks | |||
65 | } | 71 | } |
66 | } | 72 | } |
67 | 73 | ||
68 | protected abstract int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener messageListener, string commandLineString); | 74 | protected abstract Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken); |
69 | 75 | ||
70 | protected abstract string TaskShortName { get; } | 76 | protected abstract string TaskShortName { get; } |
71 | } | 77 | } |
diff --git a/src/WixToolset.BuildTasks/WixBuild_InProc.cs b/src/WixToolset.BuildTasks/WixBuild_InProc.cs index 49148c8a..59a42431 100644 --- a/src/WixToolset.BuildTasks/WixBuild_InProc.cs +++ b/src/WixToolset.BuildTasks/WixBuild_InProc.cs | |||
@@ -3,6 +3,8 @@ | |||
3 | #if !NETCOREAPP | 3 | #if !NETCOREAPP |
4 | namespace WixToolset.BuildTasks | 4 | namespace WixToolset.BuildTasks |
5 | { | 5 | { |
6 | using System.Threading; | ||
7 | using System.Threading.Tasks; | ||
6 | using WixToolset.Data; | 8 | using WixToolset.Data; |
7 | using WixToolset.Extensibility; | 9 | using WixToolset.Extensibility; |
8 | using WixToolset.Extensibility.Data; | 10 | using WixToolset.Extensibility.Data; |
@@ -12,10 +14,9 @@ namespace WixToolset.BuildTasks | |||
12 | { | 14 | { |
13 | protected override string TaskShortName => "WIX"; | 15 | protected override string TaskShortName => "WIX"; |
14 | 16 | ||
15 | protected override int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener listener, string commandLineString) | 17 | protected override Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken) |
16 | { | 18 | { |
17 | var messaging = serviceProvider.GetService<IMessaging>(); | 19 | var messaging = serviceProvider.GetService<IMessaging>(); |
18 | messaging.SetListener(listener); | ||
19 | 20 | ||
20 | var arguments = serviceProvider.GetService<ICommandLineArguments>(); | 21 | var arguments = serviceProvider.GetService<ICommandLineArguments>(); |
21 | arguments.Populate(commandLineString); | 22 | arguments.Populate(commandLineString); |
@@ -24,7 +25,7 @@ namespace WixToolset.BuildTasks | |||
24 | commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); | 25 | commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); |
25 | commandLine.Arguments = arguments; | 26 | commandLine.Arguments = arguments; |
26 | var command = commandLine.ParseStandardCommandLine(); | 27 | var command = commandLine.ParseStandardCommandLine(); |
27 | return command?.Execute() ?? -1; | 28 | return command?.ExecuteAsync(cancellationToken) ?? Task.FromResult(1); |
28 | } | 29 | } |
29 | 30 | ||
30 | private IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, IMessaging messaging, string[] extensions) | 31 | private IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, IMessaging messaging, string[] extensions) |
diff --git a/src/heat/Program.cs b/src/heat/Program.cs index 38d6d401..30a82511 100644 --- a/src/heat/Program.cs +++ b/src/heat/Program.cs | |||
@@ -4,6 +4,8 @@ namespace WixToolset.Tools.Heat | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.Runtime.InteropServices; | 6 | using System.Runtime.InteropServices; |
7 | using System.Threading; | ||
8 | using System.Threading.Tasks; | ||
7 | using WixToolset.Core; | 9 | using WixToolset.Core; |
8 | using WixToolset.Data; | 10 | using WixToolset.Data; |
9 | using WixToolset.Extensibility; | 11 | using WixToolset.Extensibility; |
@@ -23,7 +25,7 @@ namespace WixToolset.Tools.Heat | |||
23 | /// <param name="args">Commandline arguments for the application.</param> | 25 | /// <param name="args">Commandline arguments for the application.</param> |
24 | /// <returns>Returns the application error code.</returns> | 26 | /// <returns>Returns the application error code.</returns> |
25 | [MTAThread] | 27 | [MTAThread] |
26 | public static int Main(string[] args) | 28 | public static async Task<int> Main(string[] args) |
27 | { | 29 | { |
28 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | 30 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); |
29 | var listener = new ConsoleMessageListener("HEAT", "heat.exe"); | 31 | var listener = new ConsoleMessageListener("HEAT", "heat.exe"); |
@@ -31,7 +33,7 @@ namespace WixToolset.Tools.Heat | |||
31 | try | 33 | try |
32 | { | 34 | { |
33 | var program = new Program(); | 35 | var program = new Program(); |
34 | return program.Run(serviceProvider, listener, args); | 36 | return await program.Run(serviceProvider, listener, args); |
35 | } | 37 | } |
36 | catch (WixException e) | 38 | catch (WixException e) |
37 | { | 39 | { |
@@ -58,7 +60,7 @@ namespace WixToolset.Tools.Heat | |||
58 | /// <param name="serviceProvider">Service provider to use throughout this execution.</param> | 60 | /// <param name="serviceProvider">Service provider to use throughout this execution.</param> |
59 | /// <param name="args">The commandline arguments.</param> | 61 | /// <param name="args">The commandline arguments.</param> |
60 | /// <returns>Returns the application error code.</returns> | 62 | /// <returns>Returns the application error code.</returns> |
61 | public int Run(IWixToolsetServiceProvider serviceProvider, IMessageListener listener, string[] args) | 63 | public Task<int> Run(IWixToolsetServiceProvider serviceProvider, IMessageListener listener, string[] args) |
62 | { | 64 | { |
63 | var messaging = serviceProvider.GetService<IMessaging>(); | 65 | var messaging = serviceProvider.GetService<IMessaging>(); |
64 | messaging.SetListener(listener); | 66 | messaging.SetListener(listener); |
@@ -68,7 +70,7 @@ namespace WixToolset.Tools.Heat | |||
68 | 70 | ||
69 | var commandLine = HeatCommandLineFactory.CreateCommandLine(serviceProvider); | 71 | var commandLine = HeatCommandLineFactory.CreateCommandLine(serviceProvider); |
70 | var command = commandLine.ParseStandardCommandLine(arguments); | 72 | var command = commandLine.ParseStandardCommandLine(arguments); |
71 | return command?.Execute() ?? 1; | 73 | return command?.ExecuteAsync(CancellationToken.None) ?? Task.FromResult(1); |
72 | } | 74 | } |
73 | } | 75 | } |
74 | } | 76 | } |
diff --git a/src/heat/heat.csproj b/src/heat/heat.csproj index 9d6eeaa7..bdcb4e3b 100644 --- a/src/heat/heat.csproj +++ b/src/heat/heat.csproj | |||
@@ -21,7 +21,7 @@ | |||
21 | </PropertyGroup> | 21 | </PropertyGroup> |
22 | 22 | ||
23 | <ItemGroup> | 23 | <ItemGroup> |
24 | <Compile Include="..\WixToolset.Tools.Core\ConsoleMessageListener.cs" Link="ConsoleMessageListener.cs" /> | 24 | <Compile Include="..\wix\ConsoleMessageListener.cs" Link="ConsoleMessageListener.cs" /> |
25 | </ItemGroup> | 25 | </ItemGroup> |
26 | 26 | ||
27 | <ItemGroup> | 27 | <ItemGroup> |
diff --git a/src/test/WixToolsetTest.MSBuild/MsbuildHeatFixture.cs b/src/test/WixToolsetTest.MSBuild/MsbuildHeatFixture.cs index f5f03be0..3b4457be 100644 --- a/src/test/WixToolsetTest.MSBuild/MsbuildHeatFixture.cs +++ b/src/test/WixToolsetTest.MSBuild/MsbuildHeatFixture.cs | |||
@@ -33,7 +33,7 @@ namespace WixToolsetTest.MSBuild | |||
33 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); | 33 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); |
34 | result.AssertSuccess(); | 34 | result.AssertSuccess(); |
35 | 35 | ||
36 | var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem); | 36 | var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem, true); |
37 | Assert.Single(heatCommandLines); | 37 | Assert.Single(heatCommandLines); |
38 | 38 | ||
39 | var warnings = result.Output.Where(line => line.Contains(": warning")); | 39 | var warnings = result.Output.Where(line => line.Contains(": warning")); |
@@ -89,7 +89,7 @@ namespace WixToolsetTest.MSBuild | |||
89 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); | 89 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); |
90 | result.AssertSuccess(); | 90 | result.AssertSuccess(); |
91 | 91 | ||
92 | var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem); | 92 | var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem, true); |
93 | Assert.Equal(2, heatCommandLines.Count()); | 93 | Assert.Equal(2, heatCommandLines.Count()); |
94 | 94 | ||
95 | var warnings = result.Output.Where(line => line.Contains(": warning")); | 95 | var warnings = result.Output.Where(line => line.Contains(": warning")); |