Early detection of duplicate table definitions from extensions.
Bob Arnson committed
Feb 21, 2020 at 19:31 UTC
752c7593613d72bd2d0da88508b5b3e9e0857286
2 files changed
+11
-2
src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
+1
-1
@@ -111,7 +111,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
111
// Load standard tables, authored custom tables, and extension custom tables.
112
TableDefinitionCollection tableDefinitions;
113
{
114
- var command = new LoadTableDefinitionsCommand(section, this.BackendExtensions);
114
+ var command = new LoadTableDefinitionsCommand(this.Messaging, section, this.BackendExtensions);
115
command.Execute();
116
117
tableDefinitions = command.TableDefinitions;
src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs
+10
-1
@@ -10,15 +10,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind
10
using WixToolset.Data.Tuples;
11
using WixToolset.Data.WindowsInstaller;
12
using WixToolset.Extensibility;
13
+ using WixToolset.Extensibility.Services;
14
15
internal class LoadTableDefinitionsCommand
16
{
16
- public LoadTableDefinitionsCommand(IntermediateSection section, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
17
+ public LoadTableDefinitionsCommand(IMessaging messaging, IntermediateSection section, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
18
{
19
+ this.Messaging = messaging;
20
this.Section = section;
21
this.BackendExtensions = backendExtensions;
22
}
23
24
+ public IMessaging Messaging { get; }
25
+
26
private IntermediateSection Section { get; }
27
28
private IEnumerable<IWindowsInstallerBackendBinderExtension> BackendExtensions { get; }
@@ -39,6 +43,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
43
{
44
foreach (var tableDefinition in backendExtension.TableDefinitions)
45
{
46
+ if (tableDefinitions.Contains(tableDefinition.Name))
47
+ {
48
+ this.Messaging.Write(ErrorMessages.DuplicateExtensionTable(backendExtension.GetType().Assembly.Location, tableDefinition.Name));
49
+ }
50
+
51
tableDefinitions.Add(tableDefinition);
52
}
53
}