aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2019-11-25 14:44:22 +1000
committerSean Hall <r.sean.hall@gmail.com>2019-11-25 18:06:33 +1000
commit6cef9ded3d5e246285abc993950ef9964072d9e2 (patch)
treed68a3175dd0687e962d5572855989ab3f10285f2 /src
parent229a74c78a403bdd9c065bac372438968a421833 (diff)
downloadwix-6cef9ded3d5e246285abc993950ef9964072d9e2.tar.gz
wix-6cef9ded3d5e246285abc993950ef9964072d9e2.tar.bz2
wix-6cef9ded3d5e246285abc993950ef9964072d9e2.zip
Always use WiX table definitions when decompiling standard tables.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs17
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs2
2 files changed, 9 insertions, 10 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs
index 038db0fa..557500e8 100644
--- a/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs
@@ -294,6 +294,13 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
294 294
295 private TableDefinition GetTableDefinition(string tableName, View tableView, View validationView) 295 private TableDefinition GetTableDefinition(string tableName, View tableView, View validationView)
296 { 296 {
297 // Use our table definitions whenever possible since they will be used when compiling the source code anyway.
298 // This also allows us to take advantage of WiX concepts like localizable columns which current code assumes.
299 if (this.TableDefinitions.Contains(tableName))
300 {
301 return this.TableDefinitions[tableName];
302 }
303
297 ColumnDefinition[] columns; 304 ColumnDefinition[] columns;
298 using (Record columnNameRecord = tableView.GetColumnInfo(MsiInterop.MSICOLINFONAMES), 305 using (Record columnNameRecord = tableView.GetColumnInfo(MsiInterop.MSICOLINFONAMES),
299 columnTypeRecord = tableView.GetColumnInfo(MsiInterop.MSICOLINFOTYPES)) 306 columnTypeRecord = tableView.GetColumnInfo(MsiInterop.MSICOLINFOTYPES))
@@ -431,15 +438,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
431 } 438 }
432 } 439 }
433 440
434 var tableDefinition = new TableDefinition(tableName, columns, false); 441 return new TableDefinition(tableName, columns, false);
435
436 // use our table definitions if core properties are the same; this allows us to take advantage
437 // of wix concepts like localizable columns which current code assumes
438 if (this.TableDefinitions.Contains(tableName) && 0 == tableDefinition.CompareTo(this.TableDefinitions[tableName]))
439 {
440 tableDefinition = this.TableDefinitions[tableName];
441 }
442 return tableDefinition;
443 } 442 }
444 443
445 /// <summary> 444 /// <summary>
diff --git a/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs b/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
index c7c80f6e..c44393cf 100644
--- a/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
@@ -94,7 +94,7 @@ namespace WixToolsetTest.CoreIntegration
94 } 94 }
95 } 95 }
96 96
97 [Fact(Skip = "Test demonstrates failure")] 97 [Fact]
98 public void CanDecompileOldClassTableDefinition() 98 public void CanDecompileOldClassTableDefinition()
99 { 99 {
100 // The input MSI was not created using standard methods, it is an example of a real world database that needs to be decompiled. 100 // The input MSI was not created using standard methods, it is an example of a real world database that needs to be decompiled.