@joebigelow / wix / commits / 98fa23e9

Use simplified command-line parsing and update loading standard backends

Rob Mensching committed Jun 13, 2020 at 09:42 UTC 98fa23e91bca6d6a67457df056d0cb6cecf12901
6 files changed +23 -73
src/WixToolset.BuildTasks/HeatTask_InProc.cs
+1 -4
@@ -6,16 +6,13 @@ namespace WixToolset.BuildTasks
6 using System;
7 using System.Threading;
8 using System.Threading.Tasks;
9 - using WixToolset.Extensibility;
10 - using WixToolset.Extensibility.Data;
9 using WixToolset.Extensibility.Services;
12 - using WixToolset.Harvesters;
10
11 public partial class HeatTask
12 {
13 protected sealed override string TaskShortName => "HEAT";
14
18 - protected sealed override Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken) => throw new NotImplementedException();
15 + protected sealed override Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider coreProvider, string commandLineString, CancellationToken cancellationToken) => throw new NotImplementedException();
16 }
17 }
18 #endif
src/WixToolset.BuildTasks/ToolsetTask_InProc.cs
+4 -4
@@ -34,12 +34,12 @@ namespace WixToolset.BuildTasks
34
35 try
36 {
37 - var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
37 + var coreProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
38
39 - var messaging = serviceProvider.GetService<IMessaging>();
39 + var messaging = coreProvider.GetService<IMessaging>();
40 messaging.SetListener(listener);
41
42 - exitCode = this.ExecuteCoreAsync(serviceProvider, commandLineString, CancellationToken.None).GetAwaiter().GetResult();
42 + exitCode = this.ExecuteCoreAsync(coreProvider, commandLineString, CancellationToken.None).GetAwaiter().GetResult();
43 }
44 catch (WixException e)
45 {
@@ -71,7 +71,7 @@ namespace WixToolset.BuildTasks
71 }
72 }
73
74 - protected abstract Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken);
74 + protected abstract Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider coreProvider, string commandLineString, CancellationToken cancellationToken);
75
76 protected abstract string TaskShortName { get; }
77 }
src/WixToolset.BuildTasks/WixBuild_InProc.cs
+7 -36
@@ -5,52 +5,23 @@ namespace WixToolset.BuildTasks
5 {
6 using System.Threading;
7 using System.Threading.Tasks;
8 - using WixToolset.Data;
9 - using WixToolset.Extensibility;
10 - using WixToolset.Extensibility.Data;
8 + using WixToolset.Core.Burn;
9 + using WixToolset.Core.WindowsInstaller;
10 using WixToolset.Extensibility.Services;
11
12 public partial class WixBuild
13 {
14 protected override string TaskShortName => "WIX";
15
17 - protected override Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken)
16 + protected override Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider coreProvider, string commandLineString, CancellationToken cancellationToken)
17 {
19 - var messaging = serviceProvider.GetService<IMessaging>();
18 + coreProvider.AddWindowsInstallerBackend()
19 + .AddBundleBackend();
20
21 - var arguments = serviceProvider.GetService<ICommandLineArguments>();
22 - arguments.Populate(commandLineString);
23 -
24 - var commandLine = serviceProvider.GetService<ICommandLine>();
25 - commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions);
26 - commandLine.Arguments = arguments;
27 - var command = commandLine.ParseStandardCommandLine();
21 + var commandLine = coreProvider.GetService<ICommandLine>();
22 + var command = commandLine.CreateCommand(commandLineString);
23 return command?.ExecuteAsync(cancellationToken) ?? Task.FromResult(1);
24 }
30 -
31 - private IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, IMessaging messaging, string[] extensions)
32 - {
33 - var extensionManager = serviceProvider.GetService<IExtensionManager>();
34 -
35 - foreach (var type in new[] { typeof(WixToolset.Core.Burn.WixToolsetStandardBackend), typeof(WixToolset.Core.WindowsInstaller.WixToolsetStandardBackend) })
36 - {
37 - extensionManager.Add(type.Assembly);
38 - }
39 -
40 - foreach (var extension in extensions)
41 - {
42 - try
43 - {
44 - extensionManager.Load(extension);
45 - }
46 - catch (WixException e)
47 - {
48 - messaging.Write(e.Error);
49 - }
50 - }
51 -
52 - return extensionManager;
53 - }
25 }
26 }
27 #endif
src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.v3.ncrunchproject
+3
@@ -1,5 +1,8 @@
1 <ProjectConfiguration>
2 <Settings>
3 <HiddenComponentWarnings />
4 + <IgnoredTests>
5 + <AllTestsSelector />
6 + </IgnoredTests>
7 </Settings>
8 </ProjectConfiguration>
\ No newline at end of file
src/test/WixToolsetTest.MSBuild/WixToolsetTest.MSBuild.v3.ncrunchproject
+3
@@ -1,5 +1,8 @@
1 <ProjectConfiguration>
2 <Settings>
3 <HiddenComponentWarnings />
4 + <IgnoredTests>
5 + <AllTestsSelector />
6 + </IgnoredTests>
7 </Settings>
8 </ProjectConfiguration>
\ No newline at end of file
src/wix/Program.cs
+5 -29
@@ -8,7 +8,9 @@ namespace WixToolset.Tools
8 using System.Threading.Tasks;
9 using WixToolset.Converters;
10 using WixToolset.Core;
11 + using WixToolset.Core.Burn;
12 using WixToolset.Core.ExtensionCache;
13 + using WixToolset.Core.WindowsInstaller;
14 using WixToolset.Data;
15 using WixToolset.Extensibility;
16 using WixToolset.Extensibility.Data;
@@ -40,6 +42,8 @@ namespace WixToolset.Tools
42 try
43 {
44 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider()
45 + .AddWindowsInstallerBackend()
46 + .AddBundleBackend()
47 .AddExtensionCacheManager()
48 .AddConverter();
49
@@ -81,38 +85,10 @@ namespace WixToolset.Tools
85 var messaging = serviceProvider.GetService<IMessaging>();
86 messaging.SetListener(listener);
87
84 - var arguments = serviceProvider.GetService<ICommandLineArguments>();
85 - arguments.Populate(args);
86 -
88 var commandLine = serviceProvider.GetService<ICommandLine>();
88 - commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions);
89 - commandLine.Arguments = arguments;
90 - var command = commandLine.ParseStandardCommandLine();
89 + var command = commandLine.CreateCommand(args);
90 return command?.ExecuteAsync(cancellationToken) ?? Task.FromResult(1);
91 }
92
94 - private static IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, IMessaging messaging, string[] extensions)
95 - {
96 - var extensionManager = serviceProvider.GetService<IExtensionManager>();
97 -
98 - foreach (var type in new[] { typeof(WixToolset.Core.Burn.WixToolsetStandardBackend), typeof(WixToolset.Core.WindowsInstaller.WixToolsetStandardBackend) })
99 - {
100 - extensionManager.Add(type.Assembly);
101 - }
102 -
103 - foreach (var extension in extensions)
104 - {
105 - try
106 - {
107 - extensionManager.Load(extension);
108 - }
109 - catch (WixException e)
110 - {
111 - messaging.Write(e.Error);
112 - }
113 - }
114 -
115 - return extensionManager;
116 - }
93 }
94 }