Restore Unreal to CustomTable.
Sean Hall committed
Jun 19, 2020 at 14:44 UTC
89416eb8c4e7dc8ae4dd2aa27aa7c5930421f61a
5 files changed
+49
-3
src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
-2
@@ -4,7 +4,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind
4
{
5
using System;
6
using System.Collections.Generic;
7
- using System.Diagnostics;
7
using System.Globalization;
8
using System.Linq;
9
using WixToolset.Data;
@@ -979,7 +978,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind
978
979
if (customTableDefinition.Unreal)
980
{
982
- Debug.Assert(false, "CustomTableDefinition should never be unreal.");
981
continue;
982
}
983
src/WixToolset.Core.WindowsInstaller/Bind/LoadTableDefinitionsCommand.cs
+1
-1
@@ -208,7 +208,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
208
columns.Add(columnDefinition);
209
}
210
211
- var customTable = new TableDefinition(tuple.Id.Id, null, columns);
211
+ var customTable = new TableDefinition(tuple.Id.Id, null, columns, tuple.Unreal);
212
return customTable;
213
}
214
}
src/WixToolset.Core/Compiler.cs
+5
@@ -3668,6 +3668,7 @@ namespace WixToolset.Core
3668
{
3669
var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3670
string tableId = null;
3671
+ var unreal = false;
3672
var columns = new List<WixCustomTableColumnTuple>();
3673
3674
foreach (var attrib in node.Attributes())
@@ -3679,6 +3680,9 @@ namespace WixToolset.Core
3680
case "Id":
3681
tableId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3682
break;
3683
+ case "Unreal":
3684
+ unreal = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
3685
+ break;
3686
default:
3687
this.Core.UnexpectedAttribute(node, attrib);
3688
break;
@@ -3741,6 +3745,7 @@ namespace WixToolset.Core
3745
this.Core.AddTuple(new WixCustomTableTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, tableId))
3746
{
3747
ColumnNames = columnNames,
3748
+ Unreal = unreal,
3749
});
3750
}
3751
}
src/test/WixToolsetTest.CoreIntegration/CustomTableFixture.cs
+30
@@ -158,6 +158,36 @@ namespace WixToolsetTest.CoreIntegration
158
}
159
}
160
161
+ [Fact]
162
+ public void UnrealCustomTableIsNotPresentInMsi()
163
+ {
164
+ var folder = TestData.Get(@"TestData");
165
+
166
+ using (var fs = new DisposableFileSystem())
167
+ {
168
+ var baseFolder = fs.GetFolder();
169
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
170
+ var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
171
+
172
+ var result = WixRunner.Execute(new[]
173
+ {
174
+ "build",
175
+ Path.Combine(folder, "CustomTable", "CustomTable.wxs"),
176
+ Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
177
+ Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
178
+ "-bindpath", Path.Combine(folder, "SingleFile", "data"),
179
+ "-intermediateFolder", intermediateFolder,
180
+ "-o", msiPath
181
+ });
182
+
183
+ result.AssertSuccess();
184
+
185
+ Assert.True(File.Exists(msiPath));
186
+ var results = Query.QueryDatabase(msiPath, new[] { "CustomTable2" });
187
+ Assert.Empty(results);
188
+ }
189
+ }
190
+
191
[Fact]
192
public void CanCompileAndDecompile()
193
{
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>