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
}