aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.BuildTasks
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.BuildTasks')
-rw-r--r--src/WixToolset.BuildTasks/DoIt.cs65
-rw-r--r--src/WixToolset.BuildTasks/WixToolTask.cs2
2 files changed, 61 insertions, 6 deletions
diff --git a/src/WixToolset.BuildTasks/DoIt.cs b/src/WixToolset.BuildTasks/DoIt.cs
index dddf433c..aabd92b5 100644
--- a/src/WixToolset.BuildTasks/DoIt.cs
+++ b/src/WixToolset.BuildTasks/DoIt.cs
@@ -9,6 +9,7 @@ namespace WixToolset.BuildTasks
9 using Microsoft.Build.Utilities; 9 using Microsoft.Build.Utilities;
10 using WixToolset.Core; 10 using WixToolset.Core;
11 using WixToolset.Data; 11 using WixToolset.Data;
12 using WixToolset.Extensibility;
12 using WixToolset.Extensibility.Services; 13 using WixToolset.Extensibility.Services;
13 14
14 /// <summary> 15 /// <summary>
@@ -16,11 +17,13 @@ namespace WixToolset.BuildTasks
16 /// </summary> 17 /// </summary>
17 public sealed class DoIt : Task 18 public sealed class DoIt : Task
18 { 19 {
19 public DoIt() 20 public DoIt() : this(null)
20 { 21 {
21 Messaging.Instance.InitializeAppName("WIX", "wix.exe"); 22 }
22 23
23 Messaging.Instance.Display += this.DisplayMessage; 24 public DoIt(IMessageListener listener)
25 {
26 this.Listener = listener ?? new MsbuildMessageListener(this.Log, "WIX", "wix.exe");
24 } 27 }
25 28
26 public string AdditionalOptions { get; set; } 29 public string AdditionalOptions { get; set; }
@@ -112,6 +115,8 @@ namespace WixToolset.BuildTasks
112 public string[] SuppressIces { get; set; } 115 public string[] SuppressIces { get; set; }
113 public string AdditionalCub { get; set; } 116 public string AdditionalCub { get; set; }
114 117
118 private IMessageListener Listener { get; }
119
115 public override bool Execute() 120 public override bool Execute()
116 { 121 {
117 try 122 try
@@ -168,7 +173,11 @@ namespace WixToolset.BuildTasks
168 var serviceProvider = new WixToolsetServiceProvider(); 173 var serviceProvider = new WixToolsetServiceProvider();
169 174
170 var context = serviceProvider.GetService<ICommandLineContext>(); 175 var context = serviceProvider.GetService<ICommandLineContext>();
171 context.Messaging = Messaging.Instance; 176
177 var messaging = serviceProvider.GetService<IMessaging>();
178 messaging.SetListener(this.Listener);
179
180 context.Messaging = messaging;
172 context.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider); 181 context.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider);
173 context.Arguments = commandLineString; 182 context.Arguments = commandLineString;
174 183
@@ -284,5 +293,53 @@ namespace WixToolset.BuildTasks
284 // commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); 293 // commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " ");
285 // } 294 // }
286 //} 295 //}
296
297 private class MsbuildMessageListener : IMessageListener
298 {
299 public MsbuildMessageListener(TaskLoggingHelper logger, string longName, string shortName)
300 {
301 this.Logger = logger;
302 this.LongAppName = longName;
303 this.ShortAppName = shortName;
304 }
305
306 public string ShortAppName { get; }
307
308 public string LongAppName { get; }
309
310 private TaskLoggingHelper Logger { get; }
311
312 public void Write(Message message)
313 {
314 switch (message.Level)
315 {
316 case MessageLevel.Error:
317 this.Logger.LogError(null, this.ShortAppName + message.Id.ToString(), null, message.SourceLineNumbers?.FileName ?? this.LongAppName, message.SourceLineNumbers?.LineNumber ?? 0, 0, 0, 0, message.ResourceNameOrFormat, message.MessageArgs);
318 break;
319
320 case MessageLevel.Warning:
321 this.Logger.LogWarning(null, this.ShortAppName + message.Id.ToString(), null, message.SourceLineNumbers?.FileName ?? this.LongAppName, message.SourceLineNumbers?.LineNumber ?? 0, 0, 0, 0, message.ResourceNameOrFormat, message.MessageArgs);
322 break;
323
324 default:
325 // TODO: Revisit this because something is going horribly awry. The commented out LogMessage call is crashing saying that the "message" parameter is null. When you look at the call stack, the code
326 // is in the wrong LogMessage override and the "null" subcategory was passed in as the message. Not clear why it is picking the wrong overload.
327 //if (message.Id > 0)
328 //{
329 // this.Logger.LogMessage(null, code, null, message.SourceLineNumber?.FileName, message.SourceLineNumber?.LineNumber ?? 0, 0, 0, 0, MessageImportance.Normal, message.Format, message.FormatData);
330 //}
331 //else
332 //{
333 this.Logger.LogMessage(MessageImportance.Normal, message.ResourceNameOrFormat, message.MessageArgs);
334 //}
335 break;
336 }
337 }
338
339 public void Write(string message)
340 {
341 this.Logger.LogMessage(MessageImportance.Low, message);
342 }
343 }
287 } 344 }
288} 345}
diff --git a/src/WixToolset.BuildTasks/WixToolTask.cs b/src/WixToolset.BuildTasks/WixToolTask.cs
index 2e5e8705..69c837c3 100644
--- a/src/WixToolset.BuildTasks/WixToolTask.cs
+++ b/src/WixToolset.BuildTasks/WixToolTask.cs
@@ -184,8 +184,6 @@ namespace WixToolset.BuildTasks
184 this.messagesAvailable = new ManualResetEvent(false); 184 this.messagesAvailable = new ManualResetEvent(false);
185 this.toolExited = new ManualResetEvent(false); 185 this.toolExited = new ManualResetEvent(false);
186 186
187 Util.RunningInMsBuild = true;
188
189 WixToolTaskLogger logger = new WixToolTaskLogger(this.messageQueue, this.messagesAvailable); 187 WixToolTaskLogger logger = new WixToolTaskLogger(this.messageQueue, this.messagesAvailable);
190 TextWriter saveConsoleOut = Console.Out; 188 TextWriter saveConsoleOut = Console.Out;
191 TextWriter saveConsoleError = Console.Error; 189 TextWriter saveConsoleError = Console.Error;