aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2020-02-21 19:31:01 -0500
committerBob Arnson <bob@firegiant.com>2020-02-21 19:40:41 -0500
commit752c7593613d72bd2d0da88508b5b3e9e0857286 (patch)
tree4fa917e05edf297c721a1ceca925682429896d52
parent34ef0f821f84d4598df14cd8e2f863248eddc325 (diff)
downloadwix-752c7593613d72bd2d0da88508b5b3e9e0857286.tar.gz
wix-752c7593613d72bd2d0da88508b5b3e9e0857286.tar.bz2
wix-752c7593613d72bd2d0da88508b5b3e9e0857286.zip
Early detection of duplicate table definitions from extensions.
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs11
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
111 // Load standard tables, authored custom tables, and extension custom tables. 111 // Load standard tables, authored custom tables, and extension custom tables.
112 TableDefinitionCollection tableDefinitions; 112 TableDefinitionCollection tableDefinitions;
113 { 113 {
114 var command = new LoadTableDefinitionsCommand(section, this.BackendExtensions); 114 var command = new LoadTableDefinitionsCommand(this.Messaging, section, this.BackendExtensions);
115 command.Execute(); 115 command.Execute();
116 116
117 tableDefinitions = command.TableDefinitions; 117 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
10 using WixToolset.Data.Tuples; 10 using WixToolset.Data.Tuples;
11 using WixToolset.Data.WindowsInstaller; 11 using WixToolset.Data.WindowsInstaller;
12 using WixToolset.Extensibility; 12 using WixToolset.Extensibility;
13 using WixToolset.Extensibility.Services;
13 14
14 internal class LoadTableDefinitionsCommand 15 internal class LoadTableDefinitionsCommand
15 { 16 {
16 public LoadTableDefinitionsCommand(IntermediateSection section, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions) 17 public LoadTableDefinitionsCommand(IMessaging messaging, IntermediateSection section, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
17 { 18 {
19 this.Messaging = messaging;
18 this.Section = section; 20 this.Section = section;
19 this.BackendExtensions = backendExtensions; 21 this.BackendExtensions = backendExtensions;
20 } 22 }
21 23
24 public IMessaging Messaging { get; }
25
22 private IntermediateSection Section { get; } 26 private IntermediateSection Section { get; }
23 27
24 private IEnumerable<IWindowsInstallerBackendBinderExtension> BackendExtensions { get; } 28 private IEnumerable<IWindowsInstallerBackendBinderExtension> BackendExtensions { get; }
@@ -39,6 +43,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
39 { 43 {
40 foreach (var tableDefinition in backendExtension.TableDefinitions) 44 foreach (var tableDefinition in backendExtension.TableDefinitions)
41 { 45 {
46 if (tableDefinitions.Contains(tableDefinition.Name))
47 {
48 this.Messaging.Write(ErrorMessages.DuplicateExtensionTable(backendExtension.GetType().Assembly.Location, tableDefinition.Name));
49 }
50
42 tableDefinitions.Add(tableDefinition); 51 tableDefinitions.Add(tableDefinition);
43 } 52 }
44 } 53 }