Add special handling for numeric Error ids.
Bob Arnson committed
Jan 6, 2020 at 20:38 UTC
1f57a3f457f60b4a1bfdc76b47f5e14044ec5f2c
3 files changed
+15
-4
src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
+12
@@ -100,6 +100,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
100
this.AddEnvironmentTuple((EnvironmentTuple)tuple, output);
101
break;
102
103
+ case TupleDefinitionType.Error:
104
+ this.AddErrorTuple((ErrorTuple)tuple, output);
105
+ break;
106
+
107
case TupleDefinitionType.Feature:
108
this.AddFeatureTuple((FeatureTuple)tuple, output);
109
break;
@@ -488,6 +492,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
492
row[3] = tuple.ComponentRef;
493
}
494
495
+ private void AddErrorTuple(ErrorTuple tuple, WindowsInstallerData output)
496
+ {
497
+ var table = output.EnsureTable(this.TableDefinitions["Error"]);
498
+ var row = table.CreateRow(tuple.SourceLineNumbers);
499
+ row[0] = Convert.ToInt32(tuple.Id.Id);
500
+ row[1] = tuple.Message;
501
+ }
502
+
503
private void AddFeatureTuple(FeatureTuple tuple, WindowsInstallerData output)
504
{
505
var attributes = tuple.DisallowAbsent ? WindowsInstallerConstants.MsidbFeatureAttributesUIDisallowAbsent : 0;
src/WixToolset.Core/Compiler.cs
-1
@@ -5299,7 +5299,6 @@ namespace WixToolset.Core
5299
{
5300
var tuple = new ErrorTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id))
5301
{
5302
- Error = id,
5302
Message = Common.GetInnerText(node)
5303
};
5304
src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+3
-3
@@ -277,9 +277,9 @@ namespace WixToolsetTest.CoreIntegration
277
var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb"));
278
var section = intermediate.Sections.Single();
279
280
- var errors = section.Tuples.OfType<ErrorTuple>().ToDictionary(t => t.Error);
281
- Assert.Equal("Category 55 Emergency Doomsday Crisis", errors[1234].Message.Trim());
282
- Assert.Equal(" ", errors[5678].Message);
280
+ var errors = section.Tuples.OfType<ErrorTuple>().ToDictionary(t => t.Id.Id);
281
+ Assert.Equal("Category 55 Emergency Doomsday Crisis", errors["1234"].Message.Trim());
282
+ Assert.Equal(" ", errors["5678"].Message);
283
284
var customAction1 = section.Tuples.OfType<CustomActionTuple>().Where(t => t.Id.Id == "CanWeReferenceAnError_YesWeCan").Single();
285
Assert.Equal("1234", customAction1.Target);