Fix CustomTable/@Unreal="yes" binding.
Bob Arnson committed
Jan 23, 2020 at 14:46 UTC
54c6cf7e151b4e816cedc393e9c520eb818524de
3 files changed
+56
-13
src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs
+13
-13
@@ -32,19 +32,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind
32
return this.TableDefinitions;
33
}
34
35
- private TableDefinition CreateCustomTable(WixCustomTableTuple row)
35
+ private TableDefinition CreateCustomTable(WixCustomTableTuple tuple)
36
{
37
- var columnNames = row.ColumnNames.Split('\t');
38
- var columnTypes = row.ColumnTypes.Split('\t');
39
- var primaryKeys = row.PrimaryKeys.Split('\t');
40
- var minValues = row.MinValues?.Split('\t');
41
- var maxValues = row.MaxValues?.Split('\t');
42
- var keyTables = row.KeyTables?.Split('\t');
43
- var keyColumns = row.KeyColumns?.Split('\t');
44
- var categories = row.Categories?.Split('\t');
45
- var sets = row.Sets?.Split('\t');
46
- var descriptions = row.Descriptions?.Split('\t');
47
- var modularizations = row.Modularizations?.Split('\t');
37
+ var columnNames = tuple.ColumnNames.Split('\t');
38
+ var columnTypes = tuple.ColumnTypes.Split('\t');
39
+ var primaryKeys = tuple.PrimaryKeys.Split('\t');
40
+ var minValues = tuple.MinValues?.Split('\t');
41
+ var maxValues = tuple.MaxValues?.Split('\t');
42
+ var keyTables = tuple.KeyTables?.Split('\t');
43
+ var keyColumns = tuple.KeyColumns?.Split('\t');
44
+ var categories = tuple.Categories?.Split('\t');
45
+ var sets = tuple.Sets?.Split('\t');
46
+ var descriptions = tuple.Descriptions?.Split('\t');
47
+ var modularizations = tuple.Modularizations?.Split('\t');
48
49
var currentPrimaryKey = 0;
50
@@ -206,7 +206,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
206
columns.Add(columnDefinition);
207
}
208
209
- var customTable = new TableDefinition(row.Id.Id, columns/*, unreal: bootstrapperApplicationData, bootstrapperApplicationData*/);
209
+ var customTable = new TableDefinition(tuple.Id.Id, columns, tuple.Unreal);
210
return customTable;
211
}
212
}
src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+30
@@ -384,6 +384,36 @@ namespace WixToolsetTest.CoreIntegration
384
}
385
}
386
387
+ [Fact]
388
+ public void UnrealCustomTableIsNotPresentInMsi()
389
+ {
390
+ var folder = TestData.Get(@"TestData");
391
+
392
+ using (var fs = new DisposableFileSystem())
393
+ {
394
+ var baseFolder = fs.GetFolder();
395
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
396
+ var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
397
+
398
+ var result = WixRunner.Execute(new[]
399
+ {
400
+ "build",
401
+ Path.Combine(folder, "CustomTable", "CustomTable.wxs"),
402
+ Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
403
+ Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
404
+ "-bindpath", Path.Combine(folder, "SingleFile", "data"),
405
+ "-intermediateFolder", intermediateFolder,
406
+ "-o", msiPath
407
+ });
408
+
409
+ result.AssertSuccess();
410
+
411
+ Assert.True(File.Exists(msiPath));
412
+ var results = Query.QueryDatabase(msiPath, new[] { "CustomTable2" });
413
+ Assert.Empty(results);
414
+ }
415
+ }
416
+
417
[Fact]
418
public void PopulatesDirectoryTableWithValidDefaultDir()
419
{
src/test/WixToolsetTest.CoreIntegration/TestData/CustomTable/CustomTable.wxs
+13
@@ -17,5 +17,18 @@
17
<Data Column="Component_">test.txt</Data>
18
</Row>
19
</CustomTable>
20
+
21
+ <CustomTable Id="CustomTable2" Unreal="yes">
22
+ <Column Id="ColumnA" Type="string" PrimaryKey="yes" />
23
+ <Column Id="Component_" Type="string" Width="72" KeyTable="Component" KeyColumn="1" />
24
+ <Row>
25
+ <Data Column="ColumnA">RowA</Data>
26
+ <Data Column="Component_">test.txt</Data>
27
+ </Row>
28
+ <Row>
29
+ <Data Column="ColumnA">RowB</Data>
30
+ <Data Column="Component_">test.txt</Data>
31
+ </Row>
32
+ </CustomTable>
33
</Fragment>
34
</Wix>