diff options
Diffstat (limited to 'src/WixToolset.BuildTasks/ToolsetTask.cs')
-rw-r--r-- | src/WixToolset.BuildTasks/ToolsetTask.cs | 73 |
1 files changed, 5 insertions, 68 deletions
diff --git a/src/WixToolset.BuildTasks/ToolsetTask.cs b/src/WixToolset.BuildTasks/ToolsetTask.cs index fe6812fc..4fd7af3f 100644 --- a/src/WixToolset.BuildTasks/ToolsetTask.cs +++ b/src/WixToolset.BuildTasks/ToolsetTask.cs | |||
@@ -4,15 +4,9 @@ namespace WixToolset.BuildTasks | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.IO; | 6 | using System.IO; |
7 | using System.Runtime.InteropServices; | ||
8 | using Microsoft.Build.Framework; | ||
9 | using Microsoft.Build.Utilities; | 7 | using Microsoft.Build.Utilities; |
10 | using WixToolset.Core; | ||
11 | using WixToolset.Data; | ||
12 | using WixToolset.Extensibility; | ||
13 | using WixToolset.Extensibility.Services; | ||
14 | 8 | ||
15 | public abstract class ToolsetTask : ToolTask | 9 | public abstract partial class ToolsetTask : ToolTask |
16 | { | 10 | { |
17 | /// <summary> | 11 | /// <summary> |
18 | /// Gets or sets additional options that are appended the the tool command-line. | 12 | /// Gets or sets additional options that are appended the the tool command-line. |
@@ -59,49 +53,6 @@ namespace WixToolset.BuildTasks | |||
59 | /// </summary> | 53 | /// </summary> |
60 | public bool VerboseOutput { get; set; } | 54 | public bool VerboseOutput { get; set; } |
61 | 55 | ||
62 | protected sealed override int ExecuteTool(string pathToTool, string responseFileCommands, string commandLineCommands) | ||
63 | { | ||
64 | if (this.RunAsSeparateProcess) | ||
65 | { | ||
66 | return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands); | ||
67 | } | ||
68 | |||
69 | return this.ExecuteInProc($"{commandLineCommands} {responseFileCommands}"); | ||
70 | } | ||
71 | |||
72 | private int ExecuteInProc(string commandLineString) | ||
73 | { | ||
74 | this.Log.LogMessage(MessageImportance.Normal, $"({this.ToolName}){commandLineString}"); | ||
75 | |||
76 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | ||
77 | var listener = new MsbuildMessageListener(this.Log, this.TaskShortName, this.BuildEngine.ProjectFileOfTaskNode); | ||
78 | int exitCode = -1; | ||
79 | |||
80 | try | ||
81 | { | ||
82 | exitCode = this.ExecuteCore(serviceProvider, listener, commandLineString); | ||
83 | } | ||
84 | catch (WixException e) | ||
85 | { | ||
86 | listener.Write(e.Error); | ||
87 | } | ||
88 | catch (Exception e) | ||
89 | { | ||
90 | this.Log.LogErrorFromException(e, showStackTrace: true, showDetail: true, null); | ||
91 | |||
92 | if (e is NullReferenceException || e is SEHException) | ||
93 | { | ||
94 | throw; | ||
95 | } | ||
96 | } | ||
97 | |||
98 | if (exitCode == 0 && this.Log.HasLoggedErrors) | ||
99 | { | ||
100 | exitCode = -1; | ||
101 | } | ||
102 | return exitCode; | ||
103 | } | ||
104 | |||
105 | /// <summary> | 56 | /// <summary> |
106 | /// Get the path to the executable. | 57 | /// Get the path to the executable. |
107 | /// </summary> | 58 | /// </summary> |
@@ -113,13 +64,12 @@ namespace WixToolset.BuildTasks | |||
113 | protected sealed override string GenerateFullPathToTool() | 64 | protected sealed override string GenerateFullPathToTool() |
114 | { | 65 | { |
115 | var thisDllPath = new Uri(typeof(ToolsetTask).Assembly.CodeBase).AbsolutePath; | 66 | var thisDllPath = new Uri(typeof(ToolsetTask).Assembly.CodeBase).AbsolutePath; |
116 | if (this.RunAsSeparateProcess) | 67 | if (!this.RunAsSeparateProcess) |
117 | { | 68 | { |
118 | return Path.Combine(Path.GetDirectoryName(thisDllPath), this.ToolExe); | 69 | // We need to return a path that exists, so if we're not actually going to run the tool then just return this dll path. |
70 | return thisDllPath; | ||
119 | } | 71 | } |
120 | 72 | return Path.Combine(Path.GetDirectoryName(thisDllPath), this.ToolExe); | |
121 | // We need to return a path that exists, so if we're not actually going to run the tool then just return this dll path. | ||
122 | return thisDllPath; | ||
123 | } | 73 | } |
124 | 74 | ||
125 | protected sealed override string GenerateResponseFileCommands() | 75 | protected sealed override string GenerateResponseFileCommands() |
@@ -129,15 +79,6 @@ namespace WixToolset.BuildTasks | |||
129 | return commandLineBuilder.ToString(); | 79 | return commandLineBuilder.ToString(); |
130 | } | 80 | } |
131 | 81 | ||
132 | protected sealed override void LogToolCommand(string message) | ||
133 | { | ||
134 | // Only log this if we're actually going to do it. | ||
135 | if (this.RunAsSeparateProcess) | ||
136 | { | ||
137 | base.LogToolCommand(message); | ||
138 | } | ||
139 | } | ||
140 | |||
141 | /// <summary> | 82 | /// <summary> |
142 | /// Builds a command line from options in this and derivative tasks. | 83 | /// Builds a command line from options in this and derivative tasks. |
143 | /// </summary> | 84 | /// </summary> |
@@ -153,9 +94,5 @@ namespace WixToolset.BuildTasks | |||
153 | commandLineBuilder.AppendArrayIfNotNull("-wx ", this.TreatSpecificWarningsAsErrors); | 94 | commandLineBuilder.AppendArrayIfNotNull("-wx ", this.TreatSpecificWarningsAsErrors); |
154 | commandLineBuilder.AppendIfTrue("-wx", this.TreatWarningsAsErrors); | 95 | commandLineBuilder.AppendIfTrue("-wx", this.TreatWarningsAsErrors); |
155 | } | 96 | } |
156 | |||
157 | protected abstract int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener messageListener, string commandLineString); | ||
158 | |||
159 | protected abstract string TaskShortName { get; } | ||
160 | } | 97 | } |
161 | } | 98 | } |