From 752c7593613d72bd2d0da88508b5b3e9e0857286 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Fri, 21 Feb 2020 19:31:01 -0500 Subject: Early detection of duplicate table definitions from extensions. --- .../Bind/BindDatabaseCommand.cs | 2 +- .../Bind/LoadTableDefinitionsCommand.cs | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs index 167e0bb0..fecf3efd 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs @@ -111,7 +111,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind // Load standard tables, authored custom tables, and extension custom tables. TableDefinitionCollection tableDefinitions; { - var command = new LoadTableDefinitionsCommand(section, this.BackendExtensions); + var command = new LoadTableDefinitionsCommand(this.Messaging, section, this.BackendExtensions); command.Execute(); tableDefinitions = command.TableDefinitions; diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs index 1aa4065e..fe13391b 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs @@ -10,15 +10,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind using WixToolset.Data.Tuples; using WixToolset.Data.WindowsInstaller; using WixToolset.Extensibility; + using WixToolset.Extensibility.Services; internal class LoadTableDefinitionsCommand { - public LoadTableDefinitionsCommand(IntermediateSection section, IEnumerable backendExtensions) + public LoadTableDefinitionsCommand(IMessaging messaging, IntermediateSection section, IEnumerable backendExtensions) { + this.Messaging = messaging; this.Section = section; this.BackendExtensions = backendExtensions; } + public IMessaging Messaging { get; } + private IntermediateSection Section { get; } private IEnumerable BackendExtensions { get; } @@ -39,6 +43,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind { foreach (var tableDefinition in backendExtension.TableDefinitions) { + if (tableDefinitions.Contains(tableDefinition.Name)) + { + this.Messaging.Write(ErrorMessages.DuplicateExtensionTable(backendExtension.GetType().Assembly.Location, tableDefinition.Name)); + } + tableDefinitions.Add(tableDefinition); } } -- cgit v1.2.3-55-g6feb