diff options
Diffstat (limited to 'src/WixToolset.Core.TestPackage/WixRunner.cs')
-rw-r--r-- | src/WixToolset.Core.TestPackage/WixRunner.cs | 39 |
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 | ||
3 | namespace WixToolset.Core.TestPackage | 3 | namespace 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 |