Skip to content

Commit

Permalink
Catch unhandled exceptions at the top to provide useful debug info
Browse files Browse the repository at this point in the history
  • Loading branch information
robmen committed Dec 27, 2018
1 parent c82991d commit d26af21
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 20 deletions.
22 changes: 12 additions & 10 deletions src/WixToolset.BuildTasks/DoIt.cs
Expand Up @@ -4,8 +4,6 @@ namespace WixToolset.BuildTasks
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
Expand Down Expand Up @@ -111,9 +109,17 @@ public sealed class DoIt : Task

public override bool Execute()
{
var serviceProvider = new WixToolsetServiceProvider();

var listener = new MsbuildMessageListener(this.Log, "WIX", this.BuildEngine.ProjectFileOfTaskNode);

try
{
this.ExecuteCore();
this.ExecuteCore(serviceProvider, listener);
}
catch (WixException e)
{
listener.Write(e.Error);
}
catch (Exception e)
{
Expand All @@ -128,10 +134,8 @@ public override bool Execute()
return !this.Log.HasLoggedErrors;
}

private void ExecuteCore()
private void ExecuteCore(IServiceProvider serviceProvider, IMessageListener listener)
{
var listener = new MsbuildMessageListener(this.Log, "WIX", this.BuildEngine.ProjectFileOfTaskNode);

var commandLineBuilder = new WixCommandLineBuilder();

commandLineBuilder.AppendTextUnquoted("build");
Expand Down Expand Up @@ -164,8 +168,6 @@ private void ExecuteCore()

this.Log.LogMessage(MessageImportance.Normal, "wix.exe " + commandLineString);

var serviceProvider = new WixToolsetServiceProvider();

var messaging = serviceProvider.GetService<IMessaging>();
messaging.SetListener(listener);

Expand Down Expand Up @@ -194,9 +196,9 @@ private IExtensionManager CreateExtensionManagerWithStandardBackends(IServicePro
{
extensionManager.Load(extension);
}
catch (ReflectionTypeLoadException e)
catch (WixException e)
{
messaging.Write(ErrorMessages.InvalidExtension(extension, String.Join(Environment.NewLine, e.LoaderExceptions.Select(le => le.ToString()))));
messaging.Write(e.Error);
}
}

Expand Down
1 change: 0 additions & 1 deletion src/WixToolset.BuildTasks/WixToolset.BuildTasks.csproj
Expand Up @@ -32,7 +32,6 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="WixToolset.Core" Version="4.0.*" />
<PackageReference Include="WixToolset.Core.Burn" Version="4.0.*" />
<PackageReference Include="WixToolset.Core.WindowsInstaller" Version="4.0.*" />
</ItemGroup>
Expand Down
2 changes: 0 additions & 2 deletions src/WixToolset.Tools.Core/WixToolset.Tools.Core.csproj
Expand Up @@ -11,8 +11,6 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="WixToolset.Data" Version="4.0.*" />
<PackageReference Include="WixToolset.Extensibility" Version="4.0.*" />
<PackageReference Include="WixToolset.Core" Version="4.0.*" />
</ItemGroup>

Expand Down
31 changes: 25 additions & 6 deletions src/wix/Program.cs
Expand Up @@ -3,8 +3,7 @@
namespace WixToolset.Tools
{
using System;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using WixToolset.Core;
using WixToolset.Data;
using WixToolset.Extensibility;
Expand All @@ -29,8 +28,28 @@ public static int Main(string[] args)

var listener = new ConsoleMessageListener("WIX", "wix.exe");

var program = new Program();
return program.Run(serviceProvider, listener, args);
try
{
var program = new Program();
return program.Run(serviceProvider, listener, args);
}
catch (WixException e)
{
listener.Write(e.Error);

return e.Error.Id;
}
catch (Exception e)
{
listener.Write(ErrorMessages.UnexpectedException(e.Message, e.GetType().ToString(), e.StackTrace));

if (e is NullReferenceException || e is SEHException)
{
throw;
}

return e.HResult;
}
}

/// <summary>
Expand Down Expand Up @@ -69,9 +88,9 @@ private static IExtensionManager CreateExtensionManagerWithStandardBackends(ISer
{
extensionManager.Load(extension);
}
catch (ReflectionTypeLoadException e)
catch (WixException e)
{
messaging.Write(ErrorMessages.InvalidExtension(extension, String.Join(Environment.NewLine, e.LoaderExceptions.Select(le => le.ToString()))));
messaging.Write(e.Error);
}
}

Expand Down
1 change: 0 additions & 1 deletion src/wix/wix.csproj
Expand Up @@ -21,7 +21,6 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="WixToolset.Core" Version="4.0.*" />
<PackageReference Include="WixToolset.Core.Burn" Version="4.0.*" />
<PackageReference Include="WixToolset.Core.WindowsInstaller" Version="4.0.*" />
</ItemGroup>
Expand Down

0 comments on commit d26af21

Please sign in to comment.