aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.BuildTasks/HeatTask.cs5
-rw-r--r--src/WixToolset.BuildTasks/HeatTask_InProc.cs16
-rw-r--r--src/WixToolset.BuildTasks/ToolsetTask_InProc.cs14
-rw-r--r--src/WixToolset.BuildTasks/WixBuild_InProc.cs7
-rw-r--r--src/heat/Program.cs10
-rw-r--r--src/heat/heat.csproj2
-rw-r--r--src/test/WixToolsetTest.MSBuild/MsbuildHeatFixture.cs4
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
4namespace WixToolset.BuildTasks 4namespace 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
4namespace WixToolset.BuildTasks 4namespace 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"));