@joebigelow / wix / commits / 1f57a3f4

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);