aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Compiler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/Compiler.cs')
-rw-r--r--src/WixToolset.Core/Compiler.cs415
1 files changed, 168 insertions, 247 deletions
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index 9db938e1..d4ad3279 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -12,6 +12,7 @@ namespace WixToolset.Core
12 using System.Xml.Linq; 12 using System.Xml.Linq;
13 using WixToolset.Data; 13 using WixToolset.Data;
14 using WixToolset.Data.Tuples; 14 using WixToolset.Data.Tuples;
15 using WixToolset.Data.WindowsInstaller;
15 using WixToolset.Extensibility; 16 using WixToolset.Extensibility;
16 using WixToolset.Extensibility.Data; 17 using WixToolset.Extensibility.Data;
17 using WixToolset.Extensibility.Services; 18 using WixToolset.Extensibility.Services;
@@ -163,7 +164,7 @@ namespace WixToolset.Core
163 this.Core = null; 164 this.Core = null;
164 } 165 }
165 166
166 target.UpdateLevel(IntermediateLevels.Compiled); 167 target.UpdateLevel(Data.IntermediateLevels.Compiled);
167 168
168 return this.Messaging.EncounteredError ? null : target; 169 return this.Messaging.EncounteredError ? null : target;
169 } 170 }
@@ -324,13 +325,11 @@ namespace WixToolset.Core
324 this.Core.Write(ErrorMessages.SearchPropertyNotUppercase(sourceLineNumbers, "Property", "Id", propertyId.Id)); 325 this.Core.Write(ErrorMessages.SearchPropertyNotUppercase(sourceLineNumbers, "Property", "Id", propertyId.Id));
325 } 326 }
326 327
327 var tuple = new AppSearchTuple(sourceLineNumbers, new Identifier(propertyId.Access, propertyId.Id, signature)) 328 this.Core.AddTuple(new AppSearchTuple(sourceLineNumbers, new Identifier(propertyId.Access, propertyId.Id, signature))
328 { 329 {
329 PropertyRef = propertyId.Id, 330 PropertyRef = propertyId.Id,
330 SignatureRef = signature 331 SignatureRef = signature
331 }; 332 });
332
333 this.Core.AddTuple(tuple);
334 } 333 }
335 } 334 }
336 335
@@ -371,7 +370,7 @@ namespace WixToolset.Core
371 { 370 {
372 var section = this.Core.ActiveSection; 371 var section = this.Core.ActiveSection;
373 372
374 // Add the row to a separate section if requested. 373 // Add the tuple to a separate section if requested.
375 if (fragment) 374 if (fragment)
376 { 375 {
377 var id = String.Concat(this.Core.ActiveSection.Id, ".", propertyId.Id); 376 var id = String.Concat(this.Core.ActiveSection.Id, ".", propertyId.Id);
@@ -379,26 +378,24 @@ namespace WixToolset.Core
379 section = this.Core.CreateSection(id, SectionType.Fragment, this.Core.ActiveSection.Codepage, this.Context.CompilationId); 378 section = this.Core.CreateSection(id, SectionType.Fragment, this.Core.ActiveSection.Codepage, this.Context.CompilationId);
380 379
381 // Reference the property in the active section. 380 // Reference the property in the active section.
382 this.Core.CreateSimpleReference(sourceLineNumbers, "Property", propertyId.Id); 381 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, propertyId.Id);
383 } 382 }
384 383
385 // Allow row to exist with no value so that PropertyRefs can be made for *Search elements 384 // Allow tuple to exist with no value so that PropertyRefs can be made for *Search elements
386 // the linker will remove these rows before the final output is created. 385 // the linker will remove these tuples before the final output is created.
387 var tuple = new PropertyTuple(sourceLineNumbers, propertyId) 386 section.AddTuple(new PropertyTuple(sourceLineNumbers, propertyId)
388 { 387 {
389 Value = value, 388 Value = value,
390 }; 389 });
391
392 section.Tuples.Add(tuple);
393 390
394 if (admin || hidden || secure) 391 if (admin || hidden || secure)
395 { 392 {
396 this.AddWixPropertyRow(sourceLineNumbers, propertyId, admin, secure, hidden, section); 393 this.AddWixPropertyTuple(sourceLineNumbers, propertyId, admin, secure, hidden, section);
397 } 394 }
398 } 395 }
399 } 396 }
400 397
401 private void AddWixPropertyRow(SourceLineNumber sourceLineNumbers, Identifier property, bool admin, bool secure, bool hidden, IntermediateSection section = null) 398 private void AddWixPropertyTuple(SourceLineNumber sourceLineNumbers, Identifier property, bool admin, bool secure, bool hidden, IntermediateSection section = null)
402 { 399 {
403 if (secure && property.Id != property.Id.ToUpperInvariant()) 400 if (secure && property.Id != property.Id.ToUpperInvariant())
404 { 401 {
@@ -409,18 +406,16 @@ namespace WixToolset.Core
409 { 406 {
410 section = this.Core.ActiveSection; 407 section = this.Core.ActiveSection;
411 408
412 this.Core.EnsureTable(sourceLineNumbers, "Property"); // Property table is always required when using WixProperty table. 409 this.Core.EnsureTable(sourceLineNumbers, WindowsInstallerTableDefinitions.Property); // Property table is always required when using WixProperty table.
413 } 410 }
414 411
415 var tuple = new WixPropertyTuple(sourceLineNumbers) 412 section.AddTuple(new WixPropertyTuple(sourceLineNumbers)
416 { 413 {
417 PropertyRef = property.Id, 414 PropertyRef = property.Id,
418 Admin = admin, 415 Admin = admin,
419 Hidden = hidden, 416 Hidden = hidden,
420 Secure = secure 417 Secure = secure
421 }; 418 });
422
423 section.Tuples.Add(tuple);
424 } 419 }
425 420
426 /// <summary> 421 /// <summary>
@@ -550,7 +545,7 @@ namespace WixToolset.Core
550 545
551 if (!this.Core.EncounteredError) 546 if (!this.Core.EncounteredError)
552 { 547 {
553 var tuple = new AppIdTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, appId)) 548 this.Core.AddTuple(new AppIdTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, appId))
554 { 549 {
555 AppId = appId, 550 AppId = appId,
556 RemoteServerName = remoteServerName, 551 RemoteServerName = remoteServerName,
@@ -558,10 +553,8 @@ namespace WixToolset.Core
558 ServiceParameters = serviceParameters, 553 ServiceParameters = serviceParameters,
559 DllSurrogate = dllSurrogate, 554 DllSurrogate = dllSurrogate,
560 ActivateAtStorage = activateAtStorage, 555 ActivateAtStorage = activateAtStorage,
561 RunAsInteractiveUser = runAsInteractiveUser 556 RunAsInteractiveUser = runAsInteractiveUser,
562 }; 557 });
563
564 this.Core.AddTuple(tuple);
565 } 558 }
566 } 559 }
567 else if (YesNoType.No == advertise) 560 else if (YesNoType.No == advertise)
@@ -650,14 +643,12 @@ namespace WixToolset.Core
650 643
651 if (!this.Core.EncounteredError) 644 if (!this.Core.EncounteredError)
652 { 645 {
653 var tuple = new MsiAssemblyNameTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, componentId, id)) 646 this.Core.AddTuple(new MsiAssemblyNameTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, componentId, id))
654 { 647 {
655 ComponentRef = componentId, 648 ComponentRef = componentId,
656 Name = id, 649 Name = id,
657 Value = value 650 Value = value,
658 }; 651 });
659
660 this.Core.AddTuple(tuple);
661 } 652 }
662 } 653 }
663 654
@@ -739,12 +730,10 @@ namespace WixToolset.Core
739 730
740 if (!this.Core.EncounteredError) 731 if (!this.Core.EncounteredError)
741 { 732 {
742 var tuple = new BinaryTuple(sourceLineNumbers, id) 733 var tuple = this.Core.AddTuple(new BinaryTuple(sourceLineNumbers, id)
743 { 734 {
744 Data = new IntermediateFieldPathValue { Path = sourceFile } 735 Data = new IntermediateFieldPathValue { Path = sourceFile }
745 }; 736 });
746
747 this.Core.AddTuple(tuple);
748 737
749 if (YesNoType.Yes == suppressModularization) 738 if (YesNoType.Yes == suppressModularization)
750 { 739 {
@@ -820,7 +809,7 @@ namespace WixToolset.Core
820 { 809 {
821 this.Core.AddTuple(new IconTuple(sourceLineNumbers, id) 810 this.Core.AddTuple(new IconTuple(sourceLineNumbers, id)
822 { 811 {
823 Data = new IntermediateFieldPathValue { Path = sourceFile } 812 Data = new IntermediateFieldPathValue { Path = sourceFile },
824 }); 813 });
825 } 814 }
826 815
@@ -844,7 +833,7 @@ namespace WixToolset.Core
844 { 833 {
845 case "Property": 834 case "Property":
846 property = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 835 property = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
847 this.Core.CreateSimpleReference(sourceLineNumbers, "Property", property); 836 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, property);
848 break; 837 break;
849 default: 838 default:
850 this.Core.UnexpectedAttribute(node, attrib); 839 this.Core.UnexpectedAttribute(node, attrib);
@@ -940,15 +929,13 @@ namespace WixToolset.Core
940 929
941 if (!this.Core.EncounteredError) 930 if (!this.Core.EncounteredError)
942 { 931 {
943 var tuple = new WixInstanceTransformsTuple(sourceLineNumbers, id) 932 this.Core.AddTuple(new WixInstanceTransformsTuple(sourceLineNumbers, id)
944 { 933 {
945 PropertyId = propertyId, 934 PropertyId = propertyId,
946 ProductCode = productCode, 935 ProductCode = productCode,
947 ProductName = productName, 936 ProductName = productName,
948 UpgradeCode = upgradeCode 937 UpgradeCode = upgradeCode
949 }; 938 });
950
951 this.Core.AddTuple(tuple);
952 } 939 }
953 } 940 }
954 941
@@ -979,7 +966,7 @@ namespace WixToolset.Core
979 break; 966 break;
980 case "Feature": 967 case "Feature":
981 feature = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 968 feature = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
982 this.Core.CreateSimpleReference(sourceLineNumbers, "Feature", feature); 969 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Feature, feature);
983 break; 970 break;
984 case "Qualifier": 971 case "Qualifier":
985 qualifier = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 972 qualifier = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -1009,16 +996,14 @@ namespace WixToolset.Core
1009 996
1010 if (!this.Core.EncounteredError) 997 if (!this.Core.EncounteredError)
1011 { 998 {
1012 var tuple = new PublishComponentTuple(sourceLineNumbers) 999 this.Core.AddTuple(new PublishComponentTuple(sourceLineNumbers)
1013 { 1000 {
1014 ComponentId = id, 1001 ComponentId = id,
1015 Qualifier = qualifier, 1002 Qualifier = qualifier,
1016 ComponentRef = componentId, 1003 ComponentRef = componentId,
1017 AppData = appData, 1004 AppData = appData,
1018 FeatureRef = feature ?? Guid.Empty.ToString("B"), 1005 FeatureRef = feature ?? Guid.Empty.ToString("B"),
1019 }; 1006 });
1020
1021 this.Core.AddTuple(tuple);
1022 } 1007 }
1023 } 1008 }
1024 1009
@@ -1195,7 +1180,7 @@ namespace WixToolset.Core
1195 1180
1196 if (!String.IsNullOrEmpty(localFileServer)) 1181 if (!String.IsNullOrEmpty(localFileServer))
1197 { 1182 {
1198 this.Core.CreateSimpleReference(sourceLineNumbers, "File", localFileServer); 1183 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, localFileServer);
1199 } 1184 }
1200 1185
1201 // Local variables used strictly for child node processing. 1186 // Local variables used strictly for child node processing.
@@ -1268,7 +1253,7 @@ namespace WixToolset.Core
1268 { 1253 {
1269 foreach (var context in contexts) 1254 foreach (var context in contexts)
1270 { 1255 {
1271 var tuple = new ClassTuple(sourceLineNumbers) 1256 var tuple = this.Core.AddTuple(new ClassTuple(sourceLineNumbers)
1272 { 1257 {
1273 CLSID = classId, 1258 CLSID = classId,
1274 Context = context, 1259 Context = context,
@@ -1280,26 +1265,24 @@ namespace WixToolset.Core
1280 Argument = argument, 1265 Argument = argument,
1281 FeatureRef = Guid.Empty.ToString("B"), 1266 FeatureRef = Guid.Empty.ToString("B"),
1282 RelativePath = YesNoType.Yes == relativePath, 1267 RelativePath = YesNoType.Yes == relativePath,
1283 }; 1268 });
1284 1269
1285 if (null != appId) 1270 if (null != appId)
1286 { 1271 {
1287 tuple.AppIdRef = appId; 1272 tuple.AppIdRef = appId;
1288 this.Core.CreateSimpleReference(sourceLineNumbers, "AppId", appId); 1273 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.AppId, appId);
1289 } 1274 }
1290 1275
1291 if (null != icon) 1276 if (null != icon)
1292 { 1277 {
1293 tuple.IconRef = icon; 1278 tuple.IconRef = icon;
1294 this.Core.CreateSimpleReference(sourceLineNumbers, "Icon", icon); 1279 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Icon, icon);
1295 } 1280 }
1296 1281
1297 if (CompilerConstants.IntegerNotSet != iconIndex) 1282 if (CompilerConstants.IntegerNotSet != iconIndex)
1298 { 1283 {
1299 tuple.IconIndex = iconIndex; 1284 tuple.IconIndex = iconIndex;
1300 } 1285 }
1301
1302 this.Core.AddTuple(tuple);
1303 } 1286 }
1304 } 1287 }
1305 } 1288 }
@@ -1379,7 +1362,7 @@ namespace WixToolset.Core
1379 1362
1380 if (null != icon) // ClassId default icon 1363 if (null != icon) // ClassId default icon
1381 { 1364 {
1382 this.Core.CreateSimpleReference(sourceLineNumbers, "File", icon); 1365 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, icon);
1383 1366
1384 icon = String.Format(CultureInfo.InvariantCulture, "\"[#{0}]\"", icon); 1367 icon = String.Format(CultureInfo.InvariantCulture, "\"[#{0}]\"", icon);
1385 1368
@@ -1709,7 +1692,7 @@ namespace WixToolset.Core
1709 1692
1710 if (!this.Core.EncounteredError) 1693 if (!this.Core.EncounteredError)
1711 { 1694 {
1712 var tuple = new UpgradeTuple(sourceLineNumbers) 1695 this.Core.AddTuple(new UpgradeTuple(sourceLineNumbers)
1713 { 1696 {
1714 UpgradeCode = upgradeCode, 1697 UpgradeCode = upgradeCode,
1715 VersionMin = minimum, 1698 VersionMin = minimum,
@@ -1720,9 +1703,7 @@ namespace WixToolset.Core
1720 ExcludeLanguages = excludeLanguages, 1703 ExcludeLanguages = excludeLanguages,
1721 VersionMaxInclusive = maxInclusive, 1704 VersionMaxInclusive = maxInclusive,
1722 VersionMinInclusive = minInclusive, 1705 VersionMinInclusive = minInclusive,
1723 }; 1706 });
1724
1725 this.Core.AddTuple(tuple);
1726 } 1707 }
1727 } 1708 }
1728 1709
@@ -1862,7 +1843,7 @@ namespace WixToolset.Core
1862 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 1843 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1863 } 1844 }
1864 oneChild = true; 1845 oneChild = true;
1865 var newId = this.ParseSimpleRefElement(child, "Signature"); // FileSearch signatures override parent signatures 1846 var newId = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); // FileSearch signatures override parent signatures
1866 id = new Identifier(AccessModifier.Private, newId); 1847 id = new Identifier(AccessModifier.Private, newId);
1867 signature = null; 1848 signature = null;
1868 break; 1849 break;
@@ -1879,16 +1860,14 @@ namespace WixToolset.Core
1879 1860
1880 if (!this.Core.EncounteredError) 1861 if (!this.Core.EncounteredError)
1881 { 1862 {
1882 var tuple = new RegLocatorTuple(sourceLineNumbers, id) 1863 this.Core.AddTuple(new RegLocatorTuple(sourceLineNumbers, id)
1883 { 1864 {
1884 Root = root.Value, 1865 Root = root.Value,
1885 Key = key, 1866 Key = key,
1886 Name = name, 1867 Name = name,
1887 Type = type.Value, 1868 Type = type.Value,
1888 Win64 = search64bit 1869 Win64 = search64bit,
1889 }; 1870 });
1890
1891 this.Core.AddTuple(tuple);
1892 } 1871 }
1893 1872
1894 return signature; 1873 return signature;
@@ -1912,7 +1891,7 @@ namespace WixToolset.Core
1912 { 1891 {
1913 case "Id": 1892 case "Id":
1914 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1893 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1915 this.Core.CreateSimpleReference(sourceLineNumbers, "RegLocator", id); 1894 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.RegLocator, id);
1916 break; 1895 break;
1917 default: 1896 default:
1918 this.Core.UnexpectedAttribute(node, attrib); 1897 this.Core.UnexpectedAttribute(node, attrib);
@@ -2524,7 +2503,7 @@ namespace WixToolset.Core
2524 // finally add the Component table row 2503 // finally add the Component table row
2525 if (!this.Core.EncounteredError) 2504 if (!this.Core.EncounteredError)
2526 { 2505 {
2527 var tuple = new ComponentTuple(sourceLineNumbers, id) 2506 this.Core.AddTuple(new ComponentTuple(sourceLineNumbers, id)
2528 { 2507 {
2529 ComponentId = guid, 2508 ComponentId = guid,
2530 DirectoryRef = directoryId, 2509 DirectoryRef = directoryId,
@@ -2539,10 +2518,8 @@ namespace WixToolset.Core
2539 Shared = shared, 2518 Shared = shared,
2540 Transitive = transitive, 2519 Transitive = transitive,
2541 UninstallWhenSuperseded = uninstallWhenSuperseded, 2520 UninstallWhenSuperseded = uninstallWhenSuperseded,
2542 Win64 = win64 2521 Win64 = win64,
2543 }; 2522 });
2544
2545 this.Core.AddTuple(tuple);
2546 2523
2547 if (multiInstance) 2524 if (multiInstance)
2548 { 2525 {
@@ -2554,26 +2531,22 @@ namespace WixToolset.Core
2554 2531
2555 if (0 < symbols.Count) 2532 if (0 < symbols.Count)
2556 { 2533 {
2557 var tupleDelaPatch = new WixDeltaPatchSymbolPathsTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, SymbolPathType.Component, id.Id)) 2534 this.Core.AddTuple(new WixDeltaPatchSymbolPathsTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, SymbolPathType.Component, id.Id))
2558 { 2535 {
2559 SymbolType = SymbolPathType.Component, 2536 SymbolType = SymbolPathType.Component,
2560 SymbolId = id.Id, 2537 SymbolId = id.Id,
2561 SymbolPaths = String.Join(";", symbols) 2538 SymbolPaths = String.Join(";", symbols),
2562 }; 2539 });
2563
2564 this.Core.AddTuple(tupleDelaPatch);
2565 } 2540 }
2566 2541
2567 // Complus 2542 // Complus
2568 if (CompilerConstants.IntegerNotSet != comPlusBits) 2543 if (CompilerConstants.IntegerNotSet != comPlusBits)
2569 { 2544 {
2570 var complusTuple = new ComplusTuple(sourceLineNumbers) 2545 this.Core.AddTuple(new ComplusTuple(sourceLineNumbers)
2571 { 2546 {
2572 ComponentRef = id.Id, 2547 ComponentRef = id.Id,
2573 ExpType = comPlusBits, 2548 ExpType = comPlusBits,
2574 }; 2549 });
2575
2576 this.Core.AddTuple(complusTuple);
2577 } 2550 }
2578 2551
2579 // if this is a module, automatically add this component to the references to ensure it gets in the ModuleComponents table 2552 // if this is a module, automatically add this component to the references to ensure it gets in the ModuleComponents table
@@ -2698,7 +2671,7 @@ namespace WixToolset.Core
2698 { 2671 {
2699 case "Id": 2672 case "Id":
2700 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 2673 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2701 this.Core.CreateSimpleReference(sourceLineNumbers, "WixComponentGroup", id); 2674 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixComponentGroup, id);
2702 break; 2675 break;
2703 case "Primary": 2676 case "Primary":
2704 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 2677 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -2747,7 +2720,7 @@ namespace WixToolset.Core
2747 { 2720 {
2748 case "Id": 2721 case "Id":
2749 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 2722 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2750 this.Core.CreateSimpleReference(sourceLineNumbers, "Component", id); 2723 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Component, id);
2751 break; 2724 break;
2752 case "Primary": 2725 case "Primary":
2753 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 2726 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -2871,7 +2844,7 @@ namespace WixToolset.Core
2871 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 2844 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2872 } 2845 }
2873 oneChild = true; 2846 oneChild = true;
2874 var newId = this.ParseSimpleRefElement(child, "Signature"); // FileSearch signatures override parent signatures 2847 var newId = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); // FileSearch signatures override parent signatures
2875 id = new Identifier(AccessModifier.Private, newId); 2848 id = new Identifier(AccessModifier.Private, newId);
2876 signature = null; 2849 signature = null;
2877 break; 2850 break;
@@ -2888,18 +2861,12 @@ namespace WixToolset.Core
2888 2861
2889 if (!this.Core.EncounteredError) 2862 if (!this.Core.EncounteredError)
2890 { 2863 {
2891 var tuple = new CompLocatorTuple(sourceLineNumbers, id) 2864 this.Core.AddTuple(new CompLocatorTuple(sourceLineNumbers, id)
2892 { 2865 {
2893 SignatureRef = id.Id, 2866 SignatureRef = id.Id,
2894 ComponentId = componentId, 2867 ComponentId = componentId,
2895 Type = type, 2868 Type = type,
2896 }; 2869 });
2897
2898 this.Core.AddTuple(tuple);
2899
2900 //var row = this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.CompLocator, id);
2901 //row.Set(1, componentId);
2902 //row.Set(2, type);
2903 } 2870 }
2904 2871
2905 return signature; 2872 return signature;
@@ -2965,13 +2932,11 @@ namespace WixToolset.Core
2965 2932
2966 if (!this.Core.EncounteredError) 2933 if (!this.Core.EncounteredError)
2967 { 2934 {
2968 var tuple = new CreateFolderTuple(sourceLineNumbers) 2935 this.Core.AddTuple(new CreateFolderTuple(sourceLineNumbers)
2969 { 2936 {
2970 DirectoryRef = directoryId, 2937 DirectoryRef = directoryId,
2971 ComponentRef = componentId 2938 ComponentRef = componentId,
2972 }; 2939 });
2973
2974 this.Core.AddTuple(tuple);
2975 } 2940 }
2976 2941
2977 return directoryId; 2942 return directoryId;
@@ -3027,7 +2992,7 @@ namespace WixToolset.Core
3027 this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName)); 2992 this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
3028 } 2993 }
3029 fileId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 2994 fileId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3030 this.Core.CreateSimpleReference(sourceLineNumbers, "File", fileId); 2995 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, fileId);
3031 break; 2996 break;
3032 case "SourceDirectory": 2997 case "SourceDirectory":
3033 sourceDirectory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null); 2998 sourceDirectory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null);
@@ -3092,17 +3057,15 @@ namespace WixToolset.Core
3092 3057
3093 if (!this.Core.EncounteredError) 3058 if (!this.Core.EncounteredError)
3094 { 3059 {
3095 var tuple = new MoveFileTuple(sourceLineNumbers, id) 3060 this.Core.AddTuple(new MoveFileTuple(sourceLineNumbers, id)
3096 { 3061 {
3097 ComponentRef = componentId, 3062 ComponentRef = componentId,
3098 SourceName = sourceName, 3063 SourceName = sourceName,
3099 DestName= String.IsNullOrEmpty(destinationShortName) && String.IsNullOrEmpty(destinationName) ? null : this.GetMsiFilenameValue(destinationShortName, destinationName), 3064 DestName= String.IsNullOrEmpty(destinationShortName) && String.IsNullOrEmpty(destinationName) ? null : this.GetMsiFilenameValue(destinationShortName, destinationName),
3100 SourceFolder = sourceDirectory ?? sourceProperty, 3065 SourceFolder = sourceDirectory ?? sourceProperty,
3101 DestFolder = destinationDirectory ?? destinationProperty, 3066 DestFolder = destinationDirectory ?? destinationProperty,
3102 Delete = delete 3067 Delete = delete,
3103 }; 3068 });
3104
3105 this.Core.AddTuple(tuple);
3106 } 3069 }
3107 } 3070 }
3108 else // copy the file 3071 else // copy the file
@@ -3139,15 +3102,13 @@ namespace WixToolset.Core
3139 3102
3140 if (!this.Core.EncounteredError) 3103 if (!this.Core.EncounteredError)
3141 { 3104 {
3142 var tuple = new DuplicateFileTuple(sourceLineNumbers, id) 3105 this.Core.AddTuple(new DuplicateFileTuple(sourceLineNumbers, id)
3143 { 3106 {
3144 ComponentRef = componentId, 3107 ComponentRef = componentId,
3145 FileRef = fileId, 3108 FileRef = fileId,
3146 DestinationName = String.IsNullOrEmpty(destinationShortName) && String.IsNullOrEmpty(destinationName) ? null : this.GetMsiFilenameValue(destinationShortName, destinationName), 3109 DestinationName = String.IsNullOrEmpty(destinationShortName) && String.IsNullOrEmpty(destinationName) ? null : this.GetMsiFilenameValue(destinationShortName, destinationName),
3147 DestinationFolder = destinationDirectory ?? destinationProperty 3110 DestinationFolder = destinationDirectory ?? destinationProperty,
3148 }; 3111 });
3149
3150 this.Core.AddTuple(tuple);
3151 } 3112 }
3152 } 3113 }
3153 } 3114 }
@@ -3194,7 +3155,7 @@ namespace WixToolset.Core
3194 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3155 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3195 //sourceBits = MsiInterop.MsidbCustomActionTypeBinaryData; 3156 //sourceBits = MsiInterop.MsidbCustomActionTypeBinaryData;
3196 sourceType = CustomActionSourceType.Binary; 3157 sourceType = CustomActionSourceType.Binary;
3197 this.Core.CreateSimpleReference(sourceLineNumbers, "Binary", source); // add a reference to the appropriate Binary 3158 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Binary, source); // add a reference to the appropriate Binary
3198 break; 3159 break;
3199 case "Directory": 3160 case "Directory":
3200 if (null != source) 3161 if (null != source)
@@ -3229,7 +3190,7 @@ namespace WixToolset.Core
3229 // to add a reference. No need to look at the value. 3190 // to add a reference. No need to look at the value.
3230 if (Int32.TryParse(target, out var ignored)) 3191 if (Int32.TryParse(target, out var ignored))
3231 { 3192 {
3232 this.Core.CreateSimpleReference(sourceLineNumbers, "Error", target); 3193 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Error, target);
3233 } 3194 }
3234 break; 3195 break;
3235 case "ExeCommand": 3196 case "ExeCommand":
@@ -3285,7 +3246,7 @@ namespace WixToolset.Core
3285 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3246 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3286 //sourceBits = MsiInterop.MsidbCustomActionTypeSourceFile; 3247 //sourceBits = MsiInterop.MsidbCustomActionTypeSourceFile;
3287 sourceType = CustomActionSourceType.File; 3248 sourceType = CustomActionSourceType.File;
3288 this.Core.CreateSimpleReference(sourceLineNumbers, "File", source); // add a reference to the appropriate File 3249 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, source); // add a reference to the appropriate File
3289 break; 3250 break;
3290 case "HideTarget": 3251 case "HideTarget":
3291 hidden = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 3252 hidden = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -3533,7 +3494,7 @@ namespace WixToolset.Core
3533 3494
3534 if (!this.Core.EncounteredError) 3495 if (!this.Core.EncounteredError)
3535 { 3496 {
3536 var tuple = new CustomActionTuple(sourceLineNumbers, id) 3497 this.Core.AddTuple(new CustomActionTuple(sourceLineNumbers, id)
3537 { 3498 {
3538 ExecutionType = executionType, 3499 ExecutionType = executionType,
3539 Source = source, 3500 Source = source,
@@ -3547,9 +3508,7 @@ namespace WixToolset.Core
3547 TSAware = tsAware, 3508 TSAware = tsAware,
3548 Win64 = win64, 3509 Win64 = win64,
3549 Hidden = hidden, 3510 Hidden = hidden,
3550 }; 3511 });
3551
3552 this.Core.AddTuple(tuple);
3553 3512
3554 if (YesNoType.Yes == suppressModularization) 3513 if (YesNoType.Yes == suppressModularization)
3555 { 3514 {
@@ -3562,9 +3521,9 @@ namespace WixToolset.Core
3562 /// Parses a simple reference element. 3521 /// Parses a simple reference element.
3563 /// </summary> 3522 /// </summary>
3564 /// <param name="node">Element to parse.</param> 3523 /// <param name="node">Element to parse.</param>
3565 /// <param name="table">Table which contains the target of the simple reference.</param> 3524 /// <param name="tupleDefinition">Tuple which contains the target of the simple reference.</param>
3566 /// <returns>Id of the referenced element.</returns> 3525 /// <returns>Id of the referenced element.</returns>
3567 private string ParseSimpleRefElement(XElement node, string table) 3526 private string ParseSimpleRefElement(XElement node, IntermediateTupleDefinition tupleDefinition)
3568 { 3527 {
3569 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 3528 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3570 string id = null; 3529 string id = null;
@@ -3577,7 +3536,7 @@ namespace WixToolset.Core
3577 { 3536 {
3578 case "Id": 3537 case "Id":
3579 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3538 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3580 this.Core.CreateSimpleReference(sourceLineNumbers, table, id); 3539 this.Core.CreateSimpleReference(sourceLineNumbers, tupleDefinition.Name, id);
3581 break; 3540 break;
3582 default: 3541 default:
3583 this.Core.UnexpectedAttribute(node, attrib); 3542 this.Core.UnexpectedAttribute(node, attrib);
@@ -3640,7 +3599,7 @@ namespace WixToolset.Core
3640 this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); 3599 this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3641 } 3600 }
3642 3601
3643 this.Core.CreateSimpleReference(sourceLineNumbers, "MsiPatchSequence", primaryKeys); 3602 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.MsiPatchSequence, primaryKeys);
3644 3603
3645 this.Core.ParseForExtensionElements(node); 3604 this.Core.ParseForExtensionElements(node);
3646 3605
@@ -3932,14 +3891,14 @@ namespace WixToolset.Core
3932 } 3891 }
3933 } 3892 }
3934 3893
3935 this.Core.CreateSimpleReference(sourceLineNumbers, "WixCustomTable", tableId); 3894 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixCustomTable, tableId);
3936 3895
3937 if (!this.Core.EncounteredError) 3896 if (!this.Core.EncounteredError)
3938 { 3897 {
3939 this.Core.AddTuple(new WixCustomRowTuple(childSourceLineNumbers) 3898 this.Core.AddTuple(new WixCustomRowTuple(childSourceLineNumbers)
3940 { 3899 {
3941 Table = tableId, 3900 Table = tableId,
3942 FieldData = dataValue 3901 FieldData = dataValue,
3943 }); 3902 });
3944 } 3903 }
3945 break; 3904 break;
@@ -3963,7 +3922,7 @@ namespace WixToolset.Core
3963 3922
3964 if (!this.Core.EncounteredError) 3923 if (!this.Core.EncounteredError)
3965 { 3924 {
3966 var tuple = new WixCustomTableTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, tableId)) 3925 this.Core.AddTuple(new WixCustomTableTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, tableId))
3967 { 3926 {
3968 ColumnCount = columnCount, 3927 ColumnCount = columnCount,
3969 ColumnNames = columnNames, 3928 ColumnNames = columnNames,
@@ -3977,10 +3936,8 @@ namespace WixToolset.Core
3977 Sets = sets, 3936 Sets = sets,
3978 Descriptions = descriptions, 3937 Descriptions = descriptions,
3979 Modularizations = modularizations, 3938 Modularizations = modularizations,
3980 Unreal = bootstrapperApplicationData 3939 Unreal = bootstrapperApplicationData,
3981 }; 3940 });
3982
3983 this.Core.AddTuple(tuple);
3984 } 3941 }
3985 } 3942 }
3986 } 3943 }
@@ -4079,7 +4036,7 @@ namespace WixToolset.Core
4079 if (inlineSyntax[0].EndsWith(":")) 4036 if (inlineSyntax[0].EndsWith(":"))
4080 { 4037 {
4081 parentId = inlineSyntax[0].TrimEnd(':'); 4038 parentId = inlineSyntax[0].TrimEnd(':');
4082 this.Core.CreateSimpleReference(sourceLineNumbers, "Directory", parentId); 4039 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Directory, parentId);
4083 4040
4084 pathStartsAt = 1; 4041 pathStartsAt = 1;
4085 } 4042 }
@@ -4224,7 +4181,7 @@ namespace WixToolset.Core
4224 4181
4225 if (!this.Core.EncounteredError) 4182 if (!this.Core.EncounteredError)
4226 { 4183 {
4227 var tuple = new DirectoryTuple(sourceLineNumbers, id) 4184 this.Core.AddTuple(new DirectoryTuple(sourceLineNumbers, id)
4228 { 4185 {
4229 ParentDirectoryRef = parentId, 4186 ParentDirectoryRef = parentId,
4230 Name = name, 4187 Name = name,
@@ -4232,9 +4189,7 @@ namespace WixToolset.Core
4232 SourceName = sourceName, 4189 SourceName = sourceName,
4233 SourceShortName = shortSourceName, 4190 SourceShortName = shortSourceName,
4234 ComponentGuidGenerationSeed = componentGuidGenerationSeed 4191 ComponentGuidGenerationSeed = componentGuidGenerationSeed
4235 }; 4192 });
4236
4237 this.Core.AddTuple(tuple);
4238 4193
4239 if (null != symbols) 4194 if (null != symbols)
4240 { 4195 {
@@ -4268,7 +4223,7 @@ namespace WixToolset.Core
4268 { 4223 {
4269 case "Id": 4224 case "Id":
4270 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 4225 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
4271 this.Core.CreateSimpleReference(sourceLineNumbers, "Directory", id); 4226 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Directory, id);
4272 break; 4227 break;
4273 case "DiskId": 4228 case "DiskId":
4274 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue); 4229 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue);
@@ -4415,7 +4370,7 @@ namespace WixToolset.Core
4415 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 4370 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4416 } 4371 }
4417 oneChild = true; 4372 oneChild = true;
4418 signature = this.ParseSimpleRefElement(child, "Signature"); 4373 signature = this.ParseSimpleRefElement(child, TupleDefinitions.Signature);
4419 break; 4374 break;
4420 default: 4375 default:
4421 this.Core.UnexpectedElement(node, child); 4376 this.Core.UnexpectedElement(node, child);
@@ -4460,19 +4415,17 @@ namespace WixToolset.Core
4460 signature = id.Id; 4415 signature = id.Id;
4461 } 4416 }
4462 4417
4463 var tuple = new DrLocatorTuple(sourceLineNumbers, new Identifier(access, rowId, parentSignature, path)) 4418 var tuple = this.Core.AddTuple(new DrLocatorTuple(sourceLineNumbers, new Identifier(access, rowId, parentSignature, path))
4464 { 4419 {
4465 SignatureRef = rowId, 4420 SignatureRef = rowId,
4466 Parent = parentSignature, 4421 Parent = parentSignature,
4467 Path = path, 4422 Path = path,
4468 }; 4423 });
4469 4424
4470 if (CompilerConstants.IntegerNotSet != depth) 4425 if (CompilerConstants.IntegerNotSet != depth)
4471 { 4426 {
4472 tuple.Depth = depth; 4427 tuple.Depth = depth;
4473 } 4428 }
4474
4475 this.Core.AddTuple(tuple);
4476 } 4429 }
4477 4430
4478 return signature; 4431 return signature;
@@ -4575,7 +4528,7 @@ namespace WixToolset.Core
4575 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 4528 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4576 } 4529 }
4577 oneChild = true; 4530 oneChild = true;
4578 signature = this.ParseSimpleRefElement(child, "Signature"); 4531 signature = this.ParseSimpleRefElement(child, TupleDefinitions.Signature);
4579 break; 4532 break;
4580 default: 4533 default:
4581 this.Core.UnexpectedElement(node, child); 4534 this.Core.UnexpectedElement(node, child);
@@ -4589,7 +4542,7 @@ namespace WixToolset.Core
4589 } 4542 }
4590 4543
4591 4544
4592 this.Core.CreateSimpleReference(sourceLineNumbers, "DrLocator", id.Id, parentSignature, path); 4545 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.DrLocator, id.Id, parentSignature, path);
4593 4546
4594 return signature; 4547 return signature;
4595 } 4548 }
@@ -4829,7 +4782,7 @@ namespace WixToolset.Core
4829 4782
4830 if (!this.Core.EncounteredError) 4783 if (!this.Core.EncounteredError)
4831 { 4784 {
4832 var tuple = new FeatureTuple(sourceLineNumbers, id) 4785 this.Core.AddTuple(new FeatureTuple(sourceLineNumbers, id)
4833 { 4786 {
4834 ParentFeatureRef = null, // this field is set in the linker 4787 ParentFeatureRef = null, // this field is set in the linker
4835 Title = title, 4788 Title = title,
@@ -4841,9 +4794,7 @@ namespace WixToolset.Core
4841 DisallowAdvertise = disallowAdvertise, 4794 DisallowAdvertise = disallowAdvertise,
4842 InstallDefault = installDefault, 4795 InstallDefault = installDefault,
4843 TypicalDefault = typicalDefault, 4796 TypicalDefault = typicalDefault,
4844 }; 4797 });
4845
4846 this.Core.AddTuple(tuple);
4847 4798
4848 if (ComplexReferenceParentType.Unknown != parentType) 4799 if (ComplexReferenceParentType.Unknown != parentType)
4849 { 4800 {
@@ -4873,7 +4824,7 @@ namespace WixToolset.Core
4873 { 4824 {
4874 case "Id": 4825 case "Id":
4875 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 4826 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
4876 this.Core.CreateSimpleReference(sourceLineNumbers, "Feature", id); 4827 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Feature, id);
4877 break; 4828 break;
4878 case "IgnoreParent": 4829 case "IgnoreParent":
4879 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 4830 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -5053,7 +5004,7 @@ namespace WixToolset.Core
5053 { 5004 {
5054 case "Id": 5005 case "Id":
5055 id = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 5006 id = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
5056 this.Core.CreateSimpleReference(sourceLineNumbers, "WixFeatureGroup", id); 5007 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixFeatureGroup, id);
5057 break; 5008 break;
5058 case "IgnoreParent": 5009 case "IgnoreParent":
5059 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 5010 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -5222,7 +5173,7 @@ namespace WixToolset.Core
5222 5173
5223 if (!this.Core.EncounteredError) 5174 if (!this.Core.EncounteredError)
5224 { 5175 {
5225 var tuple = new EnvironmentTuple(sourceLineNumbers, id) 5176 this.Core.AddTuple(new EnvironmentTuple(sourceLineNumbers, id)
5226 { 5177 {
5227 Name = name, 5178 Name = name,
5228 Value = value, 5179 Value = value,
@@ -5232,14 +5183,7 @@ namespace WixToolset.Core
5232 Permanent = permanent, 5183 Permanent = permanent,
5233 System = system, 5184 System = system,
5234 ComponentRef = componentId 5185 ComponentRef = componentId
5235 }; 5186 });
5236
5237 this.Core.AddTuple(tuple);
5238
5239 //var row = this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.Environment, id);
5240 //row.Set(1, String.Concat(action, uninstall, system ? "*" : String.Empty, name));
5241 //row.Set(2, text);
5242 //row.Set(3, componentId);
5243 } 5187 }
5244 } 5188 }
5245 5189
@@ -5282,12 +5226,10 @@ namespace WixToolset.Core
5282 5226
5283 if (!this.Core.EncounteredError) 5227 if (!this.Core.EncounteredError)
5284 { 5228 {
5285 var tuple = new ErrorTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id)) 5229 this.Core.AddTuple(new ErrorTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id))
5286 { 5230 {
5287 Message = Common.GetInnerText(node) 5231 Message = Common.GetInnerText(node)
5288 }; 5232 });
5289
5290 this.Core.AddTuple(tuple);
5291 } 5233 }
5292 } 5234 }
5293 5235
@@ -5373,18 +5315,16 @@ namespace WixToolset.Core
5373 { 5315 {
5374 if (!this.Core.EncounteredError) 5316 if (!this.Core.EncounteredError)
5375 { 5317 {
5376 var tuple = new ExtensionTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, extension, componentId)) 5318 this.Core.AddTuple(new ExtensionTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, extension, componentId))
5377 { 5319 {
5378 Extension = extension, 5320 Extension = extension,
5379 ComponentRef = componentId, 5321 ComponentRef = componentId,
5380 ProgIdRef = progId, 5322 ProgIdRef = progId,
5381 MimeRef = mime, 5323 MimeRef = mime,
5382 FeatureRef = Guid.Empty.ToString("B") 5324 FeatureRef = Guid.Empty.ToString("B"),
5383 }; 5325 });
5384
5385 this.Core.AddTuple(tuple);
5386 5326
5387 this.Core.EnsureTable(sourceLineNumbers, "Verb"); 5327 this.Core.EnsureTable(sourceLineNumbers, WindowsInstallerTableDefinitions.Verb);
5388 } 5328 }
5389 } 5329 }
5390 else if (YesNoType.No == advertise) 5330 else if (YesNoType.No == advertise)
@@ -5481,11 +5421,11 @@ namespace WixToolset.Core
5481 break; 5421 break;
5482 case "AssemblyApplication": 5422 case "AssemblyApplication":
5483 assemblyApplication = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 5423 assemblyApplication = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
5484 this.Core.CreateSimpleReference(sourceLineNumbers, "File", assemblyApplication); 5424 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, assemblyApplication);
5485 break; 5425 break;
5486 case "AssemblyManifest": 5426 case "AssemblyManifest":
5487 assemblyManifest = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 5427 assemblyManifest = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
5488 this.Core.CreateSimpleReference(sourceLineNumbers, "File", assemblyManifest); 5428 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, assemblyManifest);
5489 break; 5429 break;
5490 case "BindPath": 5430 case "BindPath":
5491 bindPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); 5431 bindPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty);
@@ -5499,7 +5439,7 @@ namespace WixToolset.Core
5499 break; 5439 break;
5500 case "CompanionFile": 5440 case "CompanionFile":
5501 companionFile = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 5441 companionFile = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
5502 this.Core.CreateSimpleReference(sourceLineNumbers, "File", companionFile); 5442 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, companionFile);
5503 break; 5443 break;
5504 case "Compressed": 5444 case "Compressed":
5505 var compressedValue = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib); 5445 var compressedValue = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib);
@@ -5797,7 +5737,7 @@ namespace WixToolset.Core
5797 attributes |= compressed.HasValue && compressed == false ? FileTupleAttributes.Uncompressed : 0; 5737 attributes |= compressed.HasValue && compressed == false ? FileTupleAttributes.Uncompressed : 0;
5798 attributes |= generatedShortFileName ? FileTupleAttributes.GeneratedShortFileName : 0; 5738 attributes |= generatedShortFileName ? FileTupleAttributes.GeneratedShortFileName : 0;
5799 5739
5800 var tuple = new FileTuple(sourceLineNumbers, id) 5740 this.Core.AddTuple(new FileTuple(sourceLineNumbers, id)
5801 { 5741 {
5802 ComponentRef = componentId, 5742 ComponentRef = componentId,
5803 Name = name, 5743 Name = name,
@@ -5831,10 +5771,8 @@ namespace WixToolset.Core
5831 IgnoreOffsets = ignoreOffsets, 5771 IgnoreOffsets = ignoreOffsets,
5832 IgnoreLengths = ignoreLengths, 5772 IgnoreLengths = ignoreLengths,
5833 RetainOffsets = protectOffsets, 5773 RetainOffsets = protectOffsets,
5834 SymbolPaths = symbols 5774 SymbolPaths = symbols,
5835 }; 5775 });
5836
5837 this.Core.AddTuple(tuple);
5838 5776
5839 if (AssemblyType.NotAnAssembly != assemblyType) 5777 if (AssemblyType.NotAnAssembly != assemblyType)
5840 { 5778 {
@@ -5850,7 +5788,7 @@ namespace WixToolset.Core
5850 } 5788 }
5851 } 5789 }
5852 5790
5853 this.Core.CreateSimpleReference(sourceLineNumbers, "Media", diskId.ToString(CultureInfo.InvariantCulture.NumberFormat)); 5791 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Media, diskId.ToString(CultureInfo.InvariantCulture.NumberFormat));
5854 5792
5855 // If this component does not have a companion file this file is a possible keypath. 5793 // If this component does not have a companion file this file is a possible keypath.
5856 possibleKeyPath = null; 5794 possibleKeyPath = null;
@@ -5990,13 +5928,13 @@ namespace WixToolset.Core
5990 5928
5991 if (!this.Core.EncounteredError) 5929 if (!this.Core.EncounteredError)
5992 { 5930 {
5993 var tuple = new SignatureTuple(sourceLineNumbers, id) 5931 var tuple = this.Core.AddTuple(new SignatureTuple(sourceLineNumbers, id)
5994 { 5932 {
5995 FileName = name ?? shortName, 5933 FileName = name ?? shortName,
5996 MinVersion = minVersion, 5934 MinVersion = minVersion,
5997 MaxVersion = maxVersion, 5935 MaxVersion = maxVersion,
5998 Languages = languages 5936 Languages = languages
5999 }; 5937 });
6000 5938
6001 if (CompilerConstants.IntegerNotSet != minSize) 5939 if (CompilerConstants.IntegerNotSet != minSize)
6002 { 5940 {
@@ -6018,8 +5956,6 @@ namespace WixToolset.Core
6018 tuple.MaxDate = maxDate; 5956 tuple.MaxDate = maxDate;
6019 } 5957 }
6020 5958
6021 this.Core.AddTuple(tuple);
6022
6023 // Create a DrLocator row to associate the file with a directory 5959 // Create a DrLocator row to associate the file with a directory
6024 // when a different identifier is specified for the FileSearch. 5960 // when a different identifier is specified for the FileSearch.
6025 if (!isSameId) 5961 if (!isSameId)
@@ -6125,7 +6061,7 @@ namespace WixToolset.Core
6125 this.ParseBundleExtensionElement(child); 6061 this.ParseBundleExtensionElement(child);
6126 break; 6062 break;
6127 case "BundleExtensionRef": 6063 case "BundleExtensionRef":
6128 this.ParseSimpleRefElement(child, "WixBundleExtension"); 6064 this.ParseSimpleRefElement(child, TupleDefinitions.WixBundleExtension);
6129 break; 6065 break;
6130 case "ComplianceCheck": 6066 case "ComplianceCheck":
6131 this.ParseComplianceCheckElement(child); 6067 this.ParseComplianceCheckElement(child);
@@ -6146,7 +6082,7 @@ namespace WixToolset.Core
6146 this.ParseCustomActionElement(child); 6082 this.ParseCustomActionElement(child);
6147 break; 6083 break;
6148 case "CustomActionRef": 6084 case "CustomActionRef":
6149 this.ParseSimpleRefElement(child, "CustomAction"); 6085 this.ParseSimpleRefElement(child, TupleDefinitions.CustomAction);
6150 break; 6086 break;
6151 case "CustomTable": 6087 case "CustomTable":
6152 this.ParseCustomTableElement(child); 6088 this.ParseCustomTableElement(child);
@@ -6161,7 +6097,7 @@ namespace WixToolset.Core
6161 this.ParseEmbeddedChainerElement(child); 6097 this.ParseEmbeddedChainerElement(child);
6162 break; 6098 break;
6163 case "EmbeddedChainerRef": 6099 case "EmbeddedChainerRef":
6164 this.ParseSimpleRefElement(child, "MsiEmbeddedChainer"); 6100 this.ParseSimpleRefElement(child, TupleDefinitions.MsiEmbeddedChainer);
6165 break; 6101 break;
6166 case "EnsureTable": 6102 case "EnsureTable":
6167 this.ParseEnsureTableElement(child); 6103 this.ParseEnsureTableElement(child);
@@ -6210,7 +6146,7 @@ namespace WixToolset.Core
6210 this.ParsePropertyElement(child); 6146 this.ParsePropertyElement(child);
6211 break; 6147 break;
6212 case "PropertyRef": 6148 case "PropertyRef":
6213 this.ParseSimpleRefElement(child, "Property"); 6149 this.ParseSimpleRefElement(child, TupleDefinitions.Property);
6214 break; 6150 break;
6215 case "RelatedBundle": 6151 case "RelatedBundle":
6216 this.ParseRelatedBundleElement(child); 6152 this.ParseRelatedBundleElement(child);
@@ -6225,7 +6161,7 @@ namespace WixToolset.Core
6225 this.ParseSetVariableElement(child); 6161 this.ParseSetVariableElement(child);
6226 break; 6162 break;
6227 case "SetVariableRef": 6163 case "SetVariableRef":
6228 this.ParseSimpleRefElement(child, "WixSetVariable"); 6164 this.ParseSimpleRefElement(child, TupleDefinitions.WixSetVariable);
6229 break; 6165 break;
6230 case "SFPCatalog": 6166 case "SFPCatalog":
6231 string parentName = null; 6167 string parentName = null;
@@ -6235,7 +6171,7 @@ namespace WixToolset.Core
6235 this.ParseUIElement(child); 6171 this.ParseUIElement(child);
6236 break; 6172 break;
6237 case "UIRef": 6173 case "UIRef":
6238 this.ParseSimpleRefElement(child, "WixUI"); 6174 this.ParseSimpleRefElement(child, TupleDefinitions.WixUI);
6239 break; 6175 break;
6240 case "Upgrade": 6176 case "Upgrade":
6241 this.ParseUpgradeElement(child); 6177 this.ParseUpgradeElement(child);
@@ -6555,7 +6491,7 @@ namespace WixToolset.Core
6555 6491
6556 if (!this.Core.EncounteredError) 6492 if (!this.Core.EncounteredError)
6557 { 6493 {
6558 var tuple = new IniFileTuple(sourceLineNumbers, id) 6494 this.Core.AddTuple(new IniFileTuple(sourceLineNumbers, id)
6559 { 6495 {
6560 FileName = this.GetMsiFilenameValue(shortName, name), 6496 FileName = this.GetMsiFilenameValue(shortName, name),
6561 DirProperty = directory, 6497 DirProperty = directory,
@@ -6564,9 +6500,7 @@ namespace WixToolset.Core
6564 Value = value, 6500 Value = value,
6565 Action = action.Value, 6501 Action = action.Value,
6566 ComponentRef = componentId 6502 ComponentRef = componentId
6567 }; 6503 });
6568
6569 this.Core.AddTuple(tuple);
6570 } 6504 }
6571 } 6505 }
6572 6506
@@ -6724,7 +6658,7 @@ namespace WixToolset.Core
6724 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 6658 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
6725 } 6659 }
6726 oneChild = true; 6660 oneChild = true;
6727 var newId = this.ParseSimpleRefElement(child, "Signature"); // FileSearch signatures override parent signatures 6661 var newId = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); // FileSearch signatures override parent signatures
6728 id = new Identifier(AccessModifier.Private, newId); 6662 id = new Identifier(AccessModifier.Private, newId);
6729 signature = null; 6663 signature = null;
6730 break; 6664 break;
@@ -6741,21 +6675,19 @@ namespace WixToolset.Core
6741 6675
6742 if (!this.Core.EncounteredError) 6676 if (!this.Core.EncounteredError)
6743 { 6677 {
6744 var tuple = new IniLocatorTuple(sourceLineNumbers, id) 6678 var tuple = this.Core.AddTuple(new IniLocatorTuple(sourceLineNumbers, id)
6745 { 6679 {
6746 SignatureRef = id.Id, 6680 SignatureRef = id.Id,
6747 FileName = this.GetMsiFilenameValue(shortName, name), 6681 FileName = this.GetMsiFilenameValue(shortName, name),
6748 Section = section, 6682 Section = section,
6749 Key = key, 6683 Key = key,
6750 Type = type 6684 Type = type
6751 }; 6685 });
6752 6686
6753 if (CompilerConstants.IntegerNotSet != field) 6687 if (CompilerConstants.IntegerNotSet != field)
6754 { 6688 {
6755 tuple.Field = field; 6689 tuple.Field = field;
6756 } 6690 }
6757
6758 this.Core.AddTuple(tuple);
6759 } 6691 }
6760 6692
6761 return signature; 6693 return signature;
@@ -6779,7 +6711,7 @@ namespace WixToolset.Core
6779 { 6711 {
6780 case "Shared": 6712 case "Shared":
6781 shared = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 6713 shared = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
6782 this.Core.CreateSimpleReference(sourceLineNumbers, "Component", shared); 6714 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Component, shared);
6783 break; 6715 break;
6784 default: 6716 default:
6785 this.Core.UnexpectedAttribute(node, attrib); 6717 this.Core.UnexpectedAttribute(node, attrib);
@@ -6841,9 +6773,22 @@ namespace WixToolset.Core
6841 6773
6842 if (!this.Core.EncounteredError) 6774 if (!this.Core.EncounteredError)
6843 { 6775 {
6844 var tuple = this.Core.CreateTuple(sourceLineNumbers, "PatchCertificates" == node.Name.LocalName ? TupleDefinitionType.MsiPatchCertificate : TupleDefinitionType.MsiPackageCertificate); 6776 if ("PatchCertificates" == node.Name.LocalName)
6845 tuple.Set(0, name); 6777 {
6846 tuple.Set(1, name); 6778 this.Core.AddTuple(new MsiPatchCertificateTuple(sourceLineNumbers)
6779 {
6780 PatchCertificate = name,
6781 DigitalCertificateRef = name,
6782 });
6783 }
6784 else
6785 {
6786 this.Core.AddTuple(new MsiPackageCertificateTuple(sourceLineNumbers)
6787 {
6788 PackageCertificate = name,
6789 DigitalCertificateRef = name,
6790 });
6791 }
6847 } 6792 }
6848 break; 6793 break;
6849 default: 6794 default:
@@ -7109,14 +7054,14 @@ namespace WixToolset.Core
7109 if (!this.Core.EncounteredError) 7054 if (!this.Core.EncounteredError)
7110 { 7055 {
7111 // create the row that performs the upgrade (or downgrade) 7056 // create the row that performs the upgrade (or downgrade)
7112 var tuple = new UpgradeTuple(sourceLineNumbers) 7057 var tuple = this.Core.AddTuple(new UpgradeTuple(sourceLineNumbers)
7113 { 7058 {
7114 UpgradeCode = upgradeCode, 7059 UpgradeCode = upgradeCode,
7115 Remove = removeFeatures, 7060 Remove = removeFeatures,
7116 MigrateFeatures = migrateFeatures, 7061 MigrateFeatures = migrateFeatures,
7117 IgnoreRemoveFailures = ignoreRemoveFailure, 7062 IgnoreRemoveFailures = ignoreRemoveFailure,
7118 ActionProperty = Common.UpgradeDetectedProperty 7063 ActionProperty = Common.UpgradeDetectedProperty
7119 }; 7064 });
7120 7065
7121 if (allowDowngrades) 7066 if (allowDowngrades)
7122 { 7067 {
@@ -7131,24 +7076,20 @@ namespace WixToolset.Core
7131 tuple.VersionMaxInclusive = allowSameVersionUpgrades; 7076 tuple.VersionMaxInclusive = allowSameVersionUpgrades;
7132 } 7077 }
7133 7078
7134 this.Core.AddTuple(tuple);
7135
7136 // Add launch condition that blocks upgrades 7079 // Add launch condition that blocks upgrades
7137 if (blockUpgrades) 7080 if (blockUpgrades)
7138 { 7081 {
7139 var conditionTuple = new LaunchConditionTuple(sourceLineNumbers) 7082 this.Core.AddTuple(new LaunchConditionTuple(sourceLineNumbers)
7140 { 7083 {
7141 Condition = Common.UpgradePreventedCondition, 7084 Condition = Common.UpgradePreventedCondition,
7142 Description = downgradeErrorMessage 7085 Description = downgradeErrorMessage
7143 }; 7086 });
7144
7145 this.Core.AddTuple(conditionTuple);
7146 } 7087 }
7147 7088
7148 // now create the Upgrade row and launch conditions to prevent downgrades (unless explicitly permitted) 7089 // now create the Upgrade row and launch conditions to prevent downgrades (unless explicitly permitted)
7149 if (!allowDowngrades) 7090 if (!allowDowngrades)
7150 { 7091 {
7151 var upgradeTuple = new UpgradeTuple(sourceLineNumbers) 7092 this.Core.AddTuple(new UpgradeTuple(sourceLineNumbers)
7152 { 7093 {
7153 UpgradeCode = upgradeCode, 7094 UpgradeCode = upgradeCode,
7154 VersionMin = productVersion, 7095 VersionMin = productVersion,
@@ -7156,17 +7097,13 @@ namespace WixToolset.Core
7156 OnlyDetect = true, 7097 OnlyDetect = true,
7157 IgnoreRemoveFailures = ignoreRemoveFailure, 7098 IgnoreRemoveFailures = ignoreRemoveFailure,
7158 ActionProperty = Common.DowngradeDetectedProperty 7099 ActionProperty = Common.DowngradeDetectedProperty
7159 }; 7100 });
7160
7161 this.Core.AddTuple(upgradeTuple);
7162 7101
7163 var conditionTuple = new LaunchConditionTuple(sourceLineNumbers) 7102 this.Core.AddTuple(new LaunchConditionTuple(sourceLineNumbers)
7164 { 7103 {
7165 Condition = Common.DowngradePreventedCondition, 7104 Condition = Common.DowngradePreventedCondition,
7166 Description = downgradeErrorMessage 7105 Description = downgradeErrorMessage
7167 }; 7106 });
7168
7169 this.Core.AddTuple(conditionTuple);
7170 } 7107 }
7171 7108
7172 // finally, schedule RemoveExistingProducts 7109 // finally, schedule RemoveExistingProducts
@@ -7232,7 +7169,7 @@ namespace WixToolset.Core
7232 break; 7169 break;
7233 case "DiskPrompt": 7170 case "DiskPrompt":
7234 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 7171 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7235 this.Core.CreateSimpleReference(sourceLineNumbers, "Property", "DiskPrompt"); // ensure the output has a DiskPrompt Property defined 7172 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, "DiskPrompt"); // ensure the output has a DiskPrompt Property defined
7236 break; 7173 break;
7237 case "EmbedCab": 7174 case "EmbedCab":
7238 embedCab = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 7175 embedCab = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -7364,7 +7301,7 @@ namespace WixToolset.Core
7364 // add the row to the section 7301 // add the row to the section
7365 if (!this.Core.EncounteredError) 7302 if (!this.Core.EncounteredError)
7366 { 7303 {
7367 var tuple = new MediaTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id)) 7304 this.Core.AddTuple(new MediaTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id))
7368 { 7305 {
7369 DiskId = id, 7306 DiskId = id,
7370 DiskPrompt = diskPrompt, 7307 DiskPrompt = diskPrompt,
@@ -7373,9 +7310,7 @@ namespace WixToolset.Core
7373 Source = source, // the Source column is only set when creating a patch 7310 Source = source, // the Source column is only set when creating a patch
7374 CompressionLevel = compressionLevel, 7311 CompressionLevel = compressionLevel,
7375 Layout = layout 7312 Layout = layout
7376 }; 7313 });
7377
7378 this.Core.AddTuple(tuple);
7379 7314
7380 if (null != symbols) 7315 if (null != symbols)
7381 { 7316 {
@@ -7441,7 +7376,7 @@ namespace WixToolset.Core
7441 break; 7376 break;
7442 case "DiskPrompt": 7377 case "DiskPrompt":
7443 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 7378 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7444 this.Core.CreateSimpleReference(sourceLineNumbers, "Property", "DiskPrompt"); // ensure the output has a DiskPrompt Property defined 7379 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, "DiskPrompt"); // ensure the output has a DiskPrompt Property defined
7445 this.Core.Write(WarningMessages.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName)); 7380 this.Core.Write(WarningMessages.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
7446 break; 7381 break;
7447 case "EmbedCab": 7382 case "EmbedCab":
@@ -7480,7 +7415,7 @@ namespace WixToolset.Core
7480 DiskId = 1 7415 DiskId = 1
7481 }); 7416 });
7482 7417
7483 var tuple = new WixMediaTemplateTuple(sourceLineNumbers) 7418 this.Core.AddTuple(new WixMediaTemplateTuple(sourceLineNumbers)
7484 { 7419 {
7485 CabinetTemplate = cabinetTemplate, 7420 CabinetTemplate = cabinetTemplate,
7486 VolumeLabel = volumeLabel, 7421 VolumeLabel = volumeLabel,
@@ -7488,7 +7423,7 @@ namespace WixToolset.Core
7488 MaximumUncompressedMediaSize = maximumUncompressedMediaSize, 7423 MaximumUncompressedMediaSize = maximumUncompressedMediaSize,
7489 MaximumCabinetSizeForLargeFileSplitting = maximumCabinetSizeForLargeFileSplitting, 7424 MaximumCabinetSizeForLargeFileSplitting = maximumCabinetSizeForLargeFileSplitting,
7490 CompressionLevel = compressionLevel 7425 CompressionLevel = compressionLevel
7491 }; 7426 });
7492 7427
7493 //else 7428 //else
7494 //{ 7429 //{
@@ -7499,8 +7434,6 @@ namespace WixToolset.Core
7499 //{ 7434 //{
7500 // mediaTemplateRow.MaximumCabinetSizeForLargeFileSplitting = 0; // Default value of 0 corresponds to max size of 2048 MB (i.e. 2 GB) 7435 // mediaTemplateRow.MaximumCabinetSizeForLargeFileSplitting = 0; // Default value of 0 corresponds to max size of 2048 MB (i.e. 2 GB)
7501 //} 7436 //}
7502
7503 this.Core.AddTuple(tuple);
7504 } 7437 }
7505 } 7438 }
7506 7439
@@ -7530,7 +7463,7 @@ namespace WixToolset.Core
7530 break; 7463 break;
7531 case "DiskId": 7464 case "DiskId":
7532 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue); 7465 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue);
7533 this.Core.CreateSimpleReference(sourceLineNumbers, "Media", diskId.ToString(CultureInfo.InvariantCulture.NumberFormat)); 7466 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Media, diskId.ToString(CultureInfo.InvariantCulture.NumberFormat));
7534 break; 7467 break;
7535 case "FileCompression": 7468 case "FileCompression":
7536 var compress = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 7469 var compress = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -7604,7 +7537,7 @@ namespace WixToolset.Core
7604 7537
7605 if (!this.Core.EncounteredError) 7538 if (!this.Core.EncounteredError)
7606 { 7539 {
7607 var tuple = new WixMergeTuple(sourceLineNumbers, id) 7540 var tuple = this.Core.AddTuple(new WixMergeTuple(sourceLineNumbers, id)
7608 { 7541 {
7609 DirectoryRef = directoryId, 7542 DirectoryRef = directoryId,
7610 SourceFile = sourceFile, 7543 SourceFile = sourceFile,
@@ -7612,11 +7545,9 @@ namespace WixToolset.Core
7612 ConfigurationData = configData, 7545 ConfigurationData = configData,
7613 FileAttributes = attributes, 7546 FileAttributes = attributes,
7614 FeatureRef = Guid.Empty.ToString("B") 7547 FeatureRef = Guid.Empty.ToString("B")
7615 }; 7548 });
7616 7549
7617 tuple.Set((int)WixMergeTupleFields.Language, language); 7550 tuple.Set((int)WixMergeTupleFields.Language, language);
7618
7619 this.Core.AddTuple(tuple);
7620 } 7551 }
7621 } 7552 }
7622 7553
@@ -7701,7 +7632,7 @@ namespace WixToolset.Core
7701 { 7632 {
7702 case "Id": 7633 case "Id":
7703 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 7634 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
7704 this.Core.CreateSimpleReference(sourceLineNumbers, "WixMerge", id); 7635 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixMerge, id);
7705 break; 7636 break;
7706 case "Primary": 7637 case "Primary":
7707 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 7638 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -7794,14 +7725,12 @@ namespace WixToolset.Core
7794 7725
7795 if (!this.Core.EncounteredError) 7726 if (!this.Core.EncounteredError)
7796 { 7727 {
7797 var tuple = new MIMETuple(sourceLineNumbers, new Identifier(AccessModifier.Private, contentType)) 7728 this.Core.AddTuple(new MIMETuple(sourceLineNumbers, new Identifier(AccessModifier.Private, contentType))
7798 { 7729 {
7799 ContentType = contentType, 7730 ContentType = contentType,
7800 ExtensionRef = extension, 7731 ExtensionRef = extension,
7801 CLSID = classId 7732 CLSID = classId
7802 }; 7733 });
7803
7804 this.Core.AddTuple(tuple);
7805 } 7734 }
7806 } 7735 }
7807 else if (YesNoType.No == advertise) 7736 else if (YesNoType.No == advertise)
@@ -7902,12 +7831,10 @@ namespace WixToolset.Core
7902 { 7831 {
7903 if (!this.Core.EncounteredError) 7832 if (!this.Core.EncounteredError)
7904 { 7833 {
7905 var tuple = new PropertyTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, name)) 7834 this.Core.AddTuple(new PropertyTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, name))
7906 { 7835 {
7907 Value = value 7836 Value = value
7908 }; 7837 });
7909
7910 this.Core.AddTuple(tuple);
7911 } 7838 }
7912 } 7839 }
7913 7840
@@ -8063,13 +7990,11 @@ namespace WixToolset.Core
8063 7990
8064 if (!this.Core.EncounteredError) 7991 if (!this.Core.EncounteredError)
8065 { 7992 {
8066 var tuple = new WixPatchRefTuple(sourceLineNumbers) 7993 this.Core.AddTuple(new WixPatchRefTuple(sourceLineNumbers)
8067 { 7994 {
8068 Table = "*", 7995 Table = "*",
8069 PrimaryKeys = "*" 7996 PrimaryKeys = "*",
8070 }; 7997 });
8071
8072 this.Core.AddTuple(tuple);
8073 } 7998 }
8074 } 7999 }
8075 8000
@@ -8112,13 +8037,11 @@ namespace WixToolset.Core
8112 8037
8113 if (!this.Core.EncounteredError) 8038 if (!this.Core.EncounteredError)
8114 { 8039 {
8115 var tuple = new WixPatchRefTuple(sourceLineNumbers) 8040 this.Core.AddTuple(new WixPatchRefTuple(sourceLineNumbers)
8116 { 8041 {
8117 Table = tableName, 8042 Table = tableName,
8118 PrimaryKeys = id 8043 PrimaryKeys = id
8119 }; 8044 });
8120
8121 this.Core.AddTuple(tuple);
8122 } 8045 }
8123 } 8046 }
8124 8047
@@ -8232,16 +8155,14 @@ namespace WixToolset.Core
8232 8155
8233 if (!this.Core.EncounteredError) 8156 if (!this.Core.EncounteredError)
8234 { 8157 {
8235 var tuple = new WixPatchBaselineTuple(sourceLineNumbers, id) 8158 this.Core.AddTuple(new WixPatchBaselineTuple(sourceLineNumbers, id)
8236 { 8159 {
8237 DiskId = diskId ?? 1, 8160 DiskId = diskId ?? 1,
8238 ValidationFlags = validationFlags, 8161 ValidationFlags = validationFlags,
8239 BaselineFile = new IntermediateFieldPathValue { Path = baselineFile }, 8162 BaselineFile = new IntermediateFieldPathValue { Path = baselineFile },
8240 UpdateFile = new IntermediateFieldPathValue { Path = updateFile }, 8163 UpdateFile = new IntermediateFieldPathValue { Path = updateFile },
8241 TransformFile = new IntermediateFieldPathValue { Path = transformFile } 8164 TransformFile = new IntermediateFieldPathValue { Path = transformFile },
8242 }; 8165 });
8243
8244 this.Core.AddTuple(tuple);
8245 } 8166 }
8246 } 8167 }
8247 8168