aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.BuildTasks/WixBuild_InProc.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WixToolset.BuildTasks/WixBuild_InProc.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/WixToolset.BuildTasks/WixBuild_InProc.cs b/src/WixToolset.BuildTasks/WixBuild_InProc.cs
new file mode 100644
index 00000000..8e9f2fec
--- /dev/null
+++ b/src/WixToolset.BuildTasks/WixBuild_InProc.cs
@@ -0,0 +1,53 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.BuildTasks
4{
5 using WixToolset.Data;
6 using WixToolset.Extensibility;
7 using WixToolset.Extensibility.Data;
8 using WixToolset.Extensibility.Services;
9
10 public partial class WixBuild
11 {
12 protected override string TaskShortName => "WIX";
13
14 protected override int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener listener, string commandLineString)
15 {
16 var messaging = serviceProvider.GetService<IMessaging>();
17 messaging.SetListener(listener);
18
19 var arguments = serviceProvider.GetService<ICommandLineArguments>();
20 arguments.Populate(commandLineString);
21
22 var commandLine = serviceProvider.GetService<ICommandLine>();
23 commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions);
24 commandLine.Arguments = arguments;
25 var command = commandLine.ParseStandardCommandLine();
26 return command?.Execute() ?? -1;
27 }
28
29 private IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, IMessaging messaging, string[] extensions)
30 {
31 var extensionManager = serviceProvider.GetService<IExtensionManager>();
32
33 foreach (var type in new[] { typeof(WixToolset.Core.Burn.WixToolsetStandardBackend), typeof(WixToolset.Core.WindowsInstaller.WixToolsetStandardBackend) })
34 {
35 extensionManager.Add(type.Assembly);
36 }
37
38 foreach (var extension in extensions)
39 {
40 try
41 {
42 extensionManager.Load(extension);
43 }
44 catch (WixException e)
45 {
46 messaging.Write(e.Error);
47 }
48 }
49
50 return extensionManager;
51 }
52 }
53}