aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.TestPackage/WixRunner.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core.TestPackage/WixRunner.cs')
-rw-r--r--src/WixToolset.Core.TestPackage/WixRunner.cs39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs
index ca0a6fb8..45c7ab3d 100644
--- a/src/WixToolset.Core.TestPackage/WixRunner.cs
+++ b/src/WixToolset.Core.TestPackage/WixRunner.cs
@@ -2,9 +2,11 @@
2 2
3namespace WixToolset.Core.TestPackage 3namespace WixToolset.Core.TestPackage
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using WixToolset.Data; 7 using WixToolset.Data;
7 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Services;
8 10
9 public static class WixRunner 11 public static class WixRunner
10 { 12 {
@@ -12,12 +14,41 @@ namespace WixToolset.Core.TestPackage
12 { 14 {
13 var listener = new TestListener(); 15 var listener = new TestListener();
14 16
15 var program = new Program();
16 var result = program.Run(new WixToolsetServiceProvider(), listener, args);
17
18 messages = listener.Messages; 17 messages = listener.Messages;
19 18
20 return result; 19 var serviceProvider = new WixToolsetServiceProvider();
20
21 var messaging = serviceProvider.GetService<IMessaging>();
22 messaging.SetListener(listener);
23
24 var arguments = serviceProvider.GetService<ICommandLineArguments>();
25 arguments.Populate(args);
26
27 var context = serviceProvider.GetService<ICommandLineContext>();
28 context.Messaging = messaging;
29 context.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions);
30 context.Arguments = arguments;
31
32 var commandLine = serviceProvider.GetService<ICommandLine>();
33 var command = commandLine.ParseStandardCommandLine(context);
34 return command?.Execute() ?? 1;
35 }
36
37 private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions)
38 {
39 var extensionManager = serviceProvider.GetService<IExtensionManager>();
40
41 foreach (var type in new[] { typeof(WixToolset.Core.Burn.WixToolsetStandardBackend), typeof(WixToolset.Core.WindowsInstaller.WixToolsetStandardBackend) })
42 {
43 extensionManager.Add(type.Assembly);
44 }
45
46 foreach (var extension in extensions)
47 {
48 extensionManager.Load(extension);
49 }
50
51 return extensionManager;
21 } 52 }
22 53
23 private class TestListener : IMessageListener 54 private class TestListener : IMessageListener