Small tuple based fixes
Rob Mensching committed
Oct 18, 2019 at 11:30 UTC
6155da0bc9e7faa97612d15def98dd68ea2557cd
5 files changed
+58
-39
src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
+43
-7
@@ -50,13 +50,17 @@ namespace WixToolset.Core.WindowsInstaller.Bind
50
switch (tuple.Definition.Type)
51
{
52
case TupleDefinitionType.Binary:
53
- this.AddTupleDefaultly(tuple, output, true);
53
+ this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true);
54
break;
55
56
case TupleDefinitionType.BBControl:
57
this.AddBBControlTuple((BBControlTuple)tuple, output);
58
break;
59
60
+ case TupleDefinitionType.Class:
61
+ this.AddClassTuple((ClassTuple)tuple, output);
62
+ break;
63
+
64
case TupleDefinitionType.Control:
65
this.AddControlTuple((ControlTuple)tuple, output);
66
break;
@@ -89,6 +93,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
93
this.AddFileTuple((FileTuple)tuple, output);
94
break;
95
96
+ case TupleDefinitionType.Icon:
97
+ this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true);
98
+ break;
99
+
100
case TupleDefinitionType.IniFile:
101
this.AddIniFileTuple((IniFileTuple)tuple, output);
102
break;
@@ -118,7 +126,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
126
break;
127
128
case TupleDefinitionType.MsiShortcutProperty:
121
- this.AddTupleDefaultly(tuple, output, true);
129
+ this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true);
130
break;
131
132
case TupleDefinitionType.MoveFile:
@@ -146,7 +154,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
154
break;
155
156
case TupleDefinitionType.ReserveCost:
149
- this.AddTupleDefaultly(tuple, output, true);
157
+ this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true);
158
break;
159
160
case TupleDefinitionType.ServiceControl:
@@ -162,7 +170,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
170
break;
171
172
case TupleDefinitionType.Signature:
165
- this.AddTupleDefaultly(tuple, output, true);
173
+ this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true);
174
break;
175
176
case TupleDefinitionType.SummaryInformation:
@@ -228,6 +236,25 @@ namespace WixToolset.Core.WindowsInstaller.Bind
236
row[8] = tuple.Text;
237
}
238
239
+ private void AddClassTuple(ClassTuple tuple, Output output)
240
+ {
241
+ var table = output.EnsureTable(this.TableDefinitions["Class"]);
242
+ var row = table.CreateRow(tuple.SourceLineNumbers);
243
+ row[0] = tuple.CLSID;
244
+ row[1] = tuple.Context;
245
+ row[2] = tuple.ComponentRef;
246
+ row[3] = tuple.DefaultProgIdRef;
247
+ row[4] = tuple.Description;
248
+ row[5] = tuple.AppIdRef;
249
+ row[6] = tuple.FileTypeMask;
250
+ row[7] = tuple.IconRef;
251
+ row[8] = tuple.IconIndex;
252
+ row[9] = tuple.DefInprocHandler;
253
+ row[10] = tuple.Argument;
254
+ row[11] = tuple.FeatureRef;
255
+ row[12] = tuple.RelativePath ? (int?)1 : null;
256
+ }
257
+
258
private void AddControlTuple(ControlTuple tuple, Output output)
259
{
260
var text = tuple.Text;
@@ -326,7 +353,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
353
row[1] = type;
354
row[2] = tuple.Source;
355
row[3] = tuple.Target;
329
- row[4] = tuple.PatchUninstall ? WindowsInstallerConstants.MsidbCustomActionTypePatchUninstall : 0;
356
+ row[4] = tuple.PatchUninstall ? (int?)WindowsInstallerConstants.MsidbCustomActionTypePatchUninstall : null;
357
}
358
359
private void AddDialogTuple(DialogTuple tuple, Output output)
@@ -775,13 +802,22 @@ namespace WixToolset.Core.WindowsInstaller.Bind
802
styleBits |= tuple.Strike ? WindowsInstallerConstants.MsidbTextStyleStyleBitsStrike : 0;
803
styleBits |= tuple.Underline ? WindowsInstallerConstants.MsidbTextStyleStyleBitsUnderline : 0;
804
805
+ long? color = null;
806
+
807
+ if (tuple.Red.HasValue || tuple.Green.HasValue || tuple.Blue.HasValue)
808
+ {
809
+ color = tuple.Red ?? 0;
810
+ color += (long)(tuple.Green ?? 0) * 256;
811
+ color += (long)(tuple.Blue ?? 0) * 65536;
812
+ }
813
+
814
var table = output.EnsureTable(this.TableDefinitions["TextStyle"]);
815
var row = table.CreateRow(tuple.SourceLineNumbers);
816
row[0] = tuple.Id.Id;
817
row[1] = tuple.FaceName;
818
row[2] = tuple.Size;
783
- row[3] = tuple.Color;
784
- row[4] = styleBits;
819
+ row[3] = color;
820
+ row[4] = styleBits == 0 ? null : (int?)styleBits;
821
}
822
823
private void AddUpgradeTuple(UpgradeTuple tuple, Output output)
src/WixToolset.Core/Compiler_2.cs
+1
-1
@@ -27,7 +27,7 @@ namespace WixToolset.Core
27
{
28
var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
29
var codepage = 65001;
30
- string productCode = "*";
30
+ var productCode = "*";
31
string upgradeCode = null;
32
string manufacturer = null;
33
string version = null;
src/WixToolset.Core/Compiler_UI.cs
+10
-27
@@ -746,7 +746,9 @@ namespace WixToolset.Core
746
{
747
var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
748
Identifier id = null;
749
- var color = CompilerConstants.IntegerNotSet;
749
+ int? red = null;
750
+ int? green = null;
751
+ int? blue = null;
752
var bold = false;
753
var italic = false;
754
var strike = false;
@@ -769,42 +771,21 @@ namespace WixToolset.Core
771
var redColor = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Byte.MaxValue);
772
if (CompilerConstants.IllegalInteger != redColor)
773
{
772
- if (CompilerConstants.IntegerNotSet == color)
773
- {
774
- color = redColor;
775
- }
776
- else
777
- {
778
- color += redColor;
779
- }
774
+ red = redColor;
775
}
776
break;
777
case "Green":
778
var greenColor = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Byte.MaxValue);
779
if (CompilerConstants.IllegalInteger != greenColor)
780
{
786
- if (CompilerConstants.IntegerNotSet == color)
787
- {
788
- color = greenColor * 256;
789
- }
790
- else
791
- {
792
- color += greenColor * 256;
793
- }
781
+ green = greenColor;
782
}
783
break;
784
case "Blue":
785
var blueColor = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Byte.MaxValue);
786
if (CompilerConstants.IllegalInteger != blueColor)
787
{
800
- if (CompilerConstants.IntegerNotSet == color)
801
- {
802
- color = blueColor * 65536;
803
- }
804
- else
805
- {
806
- color += blueColor * 65536;
807
- }
788
+ blue = blueColor;
789
}
790
break;
791
@@ -843,7 +824,7 @@ namespace WixToolset.Core
824
825
if (null == id)
826
{
846
- this.Core.CreateIdentifier("txs", faceName, size.ToString(), color.ToString(), bold.ToString(), italic.ToString(), strike.ToString(), underline.ToString());
827
+ this.Core.CreateIdentifier("txs", faceName, size.ToString(), (red ?? 0).ToString(), (green ?? 0).ToString(), (blue ?? 0).ToString(), bold.ToString(), italic.ToString(), strike.ToString(), underline.ToString());
828
}
829
830
if (null == faceName)
@@ -858,7 +839,9 @@ namespace WixToolset.Core
839
var tuple = new TextStyleTuple(sourceLineNumbers, id)
840
{
841
FaceName = faceName,
861
- Color = color,
842
+ Red = red,
843
+ Green = green,
844
+ Blue = blue,
845
Bold = bold,
846
Italic = italic,
847
Strike = strike,
src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+3
-3
@@ -146,7 +146,7 @@ namespace WixToolsetTest.CoreIntegration
146
}
147
}
148
149
- [Fact(Skip = "Test demonstrates failure")]
149
+ [Fact]
150
public void PopulatesClassTablesWhenIconIndexIsZero()
151
{
152
var folder = TestData.Get(@"TestData");
@@ -218,7 +218,7 @@ namespace WixToolsetTest.CoreIntegration
218
}
219
}
220
221
- [Fact(Skip = "Test demonstrates failure")]
221
+ [Fact]
222
public void PopulatesCustomActionTable()
223
{
224
var folder = TestData.Get(@"TestData");
@@ -647,7 +647,7 @@ namespace WixToolsetTest.CoreIntegration
647
}
648
}
649
650
- [Fact(Skip = "Test demonstrates failure")]
650
+ [Fact]
651
public void PopulatesTextStyleTableWhenColorIsNull()
652
{
653
var folder = TestData.Get(@"TestData");
src/test/WixToolsetTest.CoreIntegration/WixlibQueryFixture.cs
+1
-1
@@ -43,7 +43,7 @@ namespace WixToolsetTest.CoreIntegration
43
}
44
}
45
46
- [Fact(Skip = "Test demonstrates failure")]
46
+ [Fact]
47
public void TypeLibLanguageAsStringReturnsZero()
48
{
49
var folder = TestData.Get(@"TestData\TypeLib");