aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Arnson <bob@joyofsetup.com>2019-10-16 15:40:26 -0400
committerBob Arnson <bob@firegiant.com>2019-10-22 13:34:57 -0400
commitc9546f882bde36d5b525f82280a1e09f81c08845 (patch)
treef3582029b8ec76775a2ec4e61c6c1e57db4f1d20 /src
parentfbc081741b9923868ebf4aeb98f1e678f5fb6d97 (diff)
downloadwix-c9546f882bde36d5b525f82280a1e09f81c08845.tar.gz
wix-c9546f882bde36d5b525f82280a1e09f81c08845.tar.bz2
wix-c9546f882bde36d5b525f82280a1e09f81c08845.zip
Bring extension up to date.
Diffstat (limited to 'src')
-rw-r--r--src/Cpp.Build.props2
-rw-r--r--src/ca/packages.config4
-rw-r--r--src/ca/utilca.vcxproj8
-rw-r--r--src/test/WixToolsetTest.Util/UtilExtensionFixture.cs2
-rw-r--r--src/wixext/Tuples/FileShareTuple.cs4
-rw-r--r--src/wixext/UtilCompiler.cs86
-rw-r--r--src/wixext/tables.xml4
7 files changed, 55 insertions, 55 deletions
diff --git a/src/Cpp.Build.props b/src/Cpp.Build.props
index 0e00132b..44a042c7 100644
--- a/src/Cpp.Build.props
+++ b/src/Cpp.Build.props
@@ -8,7 +8,7 @@
8 <OutDir>$(OutputPath)$(Platform)\</OutDir> 8 <OutDir>$(OutputPath)$(Platform)\</OutDir>
9 </PropertyGroup> 9 </PropertyGroup>
10 10
11 <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' AND '$(VisualStudioVersion)'=='15.0'"> 11 <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' AND '$(VisualStudioVersion)'>='15.0'">
12 <WindowsTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion> 12 <WindowsTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion>
13 </PropertyGroup> 13 </PropertyGroup>
14 14
diff --git a/src/ca/packages.config b/src/ca/packages.config
index b87f9ab4..4e9403bf 100644
--- a/src/ca/packages.config
+++ b/src/ca/packages.config
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<packages> 2<packages>
3 <package id="WixToolset.DUtil" version="4.0.6" targetFramework="native" /> 3 <package id="WixToolset.DUtil" version="4.0.18" targetFramework="native" />
4 <package id="WixToolset.WcaUtil" version="4.0.2" targetFramework="native" /> 4 <package id="WixToolset.WcaUtil" version="4.0.8" targetFramework="native" />
5</packages> \ No newline at end of file 5</packages> \ No newline at end of file
diff --git a/src/ca/utilca.vcxproj b/src/ca/utilca.vcxproj
index 9bff19b0..2ec0c706 100644
--- a/src/ca/utilca.vcxproj
+++ b/src/ca/utilca.vcxproj
@@ -2,8 +2,8 @@
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 4<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 <Import Project="..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" /> 5 <Import Project="..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props')" />
6 <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" /> 6 <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.8\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.8\build\WixToolset.WcaUtil.props')" />
7 7
8 <ItemGroup Label="ProjectConfigurations"> 8 <ItemGroup Label="ProjectConfigurations">
9 <ProjectConfiguration Include="Debug|Win32"> 9 <ProjectConfiguration Include="Debug|Win32">
@@ -88,7 +88,7 @@
88 <PropertyGroup> 88 <PropertyGroup>
89 <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> 89 <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
90 </PropertyGroup> 90 </PropertyGroup>
91 <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props'))" /> 91 <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props'))" />
92 <Error Condition="!Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props'))" /> 92 <Error Condition="!Exists('..\..\packages\WixToolset.WcaUtil.4.0.8\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.WcaUtil.4.0.8\build\WixToolset.WcaUtil.props'))" />
93 </Target> 93 </Target>
94</Project> 94</Project>
diff --git a/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs b/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs
index 7affe1f4..74cf9769 100644
--- a/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs
+++ b/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs
@@ -19,7 +19,7 @@ namespace WixToolsetTest.Util
19 var results = build.BuildAndQuery(Build, "FileShare", "FileSharePermissions"); 19 var results = build.BuildAndQuery(Build, "FileShare", "FileSharePermissions");
20 Assert.Equal(new[] 20 Assert.Equal(new[]
21 { 21 {
22 "FileShare:ExampleFileShare\texample\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tAn example file share\tINSTALLFOLDER\t\t0", 22 "FileShare:ExampleFileShare\texample\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tAn example file share\tINSTALLFOLDER\t\t",
23 "FileSharePermissions:ExampleFileShare\tEveryone\t1", 23 "FileSharePermissions:ExampleFileShare\tEveryone\t1",
24 }, results.OrderBy(s => s).ToArray()); 24 }, results.OrderBy(s => s).ToArray());
25 } 25 }
diff --git a/src/wixext/Tuples/FileShareTuple.cs b/src/wixext/Tuples/FileShareTuple.cs
index 043f24bd..5a31b6fa 100644
--- a/src/wixext/Tuples/FileShareTuple.cs
+++ b/src/wixext/Tuples/FileShareTuple.cs
@@ -86,9 +86,9 @@ namespace WixToolset.Util.Tuples
86 set => this.Set((int)FileShareTupleFields.User_, value); 86 set => this.Set((int)FileShareTupleFields.User_, value);
87 } 87 }
88 88
89 public int Permissions 89 public int? Permissions
90 { 90 {
91 get => this.Fields[(int)FileShareTupleFields.Permissions].AsNumber(); 91 get => this.Fields[(int)FileShareTupleFields.Permissions].AsNullableNumber();
92 set => this.Set((int)FileShareTupleFields.Permissions, value); 92 set => this.Set((int)FileShareTupleFields.Permissions, value);
93 } 93 }
94 } 94 }
diff --git a/src/wixext/UtilCompiler.cs b/src/wixext/UtilCompiler.cs
index 5adb5289..cc51733a 100644
--- a/src/wixext/UtilCompiler.cs
+++ b/src/wixext/UtilCompiler.cs
@@ -505,7 +505,7 @@ namespace WixToolset.Util
505 break; 505 break;
506 } 506 }
507 507
508 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixComponentSearch", id); 508 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixComponentSearch", id);
509 row.Set(1, guid); 509 row.Set(1, guid);
510 row.Set(2, productCode); 510 row.Set(2, productCode);
511 row.Set(3, (int)attributes); 511 row.Set(3, (int)attributes);
@@ -662,26 +662,26 @@ namespace WixToolset.Util
662 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 662 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
663 663
664 string eventSourceKey = $@"SYSTEM\CurrentControlSet\Services\EventLog\{logName}\{sourceName}"; 664 string eventSourceKey = $@"SYSTEM\CurrentControlSet\Services\EventLog\{logName}\{sourceName}";
665 Identifier id = this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "EventMessageFile", String.Concat("#%", eventMessageFile), componentId, false); 665 Identifier id = this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "EventMessageFile", String.Concat("#%", eventMessageFile), componentId, false);
666 666
667 if (null != categoryMessageFile) 667 if (null != categoryMessageFile)
668 { 668 {
669 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "CategoryMessageFile", String.Concat("#%", categoryMessageFile), componentId, false); 669 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "CategoryMessageFile", String.Concat("#%", categoryMessageFile), componentId, false);
670 } 670 }
671 671
672 if (CompilerConstants.IntegerNotSet != categoryCount) 672 if (CompilerConstants.IntegerNotSet != categoryCount)
673 { 673 {
674 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "CategoryCount", String.Concat("#", categoryCount), componentId, false); 674 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "CategoryCount", String.Concat("#", categoryCount), componentId, false);
675 } 675 }
676 676
677 if (null != parameterMessageFile) 677 if (null != parameterMessageFile)
678 { 678 {
679 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "ParameterMessageFile", String.Concat("#%", parameterMessageFile), componentId, false); 679 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "ParameterMessageFile", String.Concat("#%", parameterMessageFile), componentId, false);
680 } 680 }
681 681
682 if (0 != typesSupported) 682 if (0 != typesSupported)
683 { 683 {
684 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "TypesSupported", String.Concat("#", typesSupported), componentId, false); 684 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, eventSourceKey, "TypesSupported", String.Concat("#", typesSupported), componentId, false);
685 } 685 }
686 686
687 var componentKeyPath = this.CreateComponentKeyPath(); 687 var componentKeyPath = this.CreateComponentKeyPath();
@@ -845,7 +845,7 @@ namespace WixToolset.Util
845 845
846 if (!this.Messaging.EncounteredError) 846 if (!this.Messaging.EncounteredError)
847 { 847 {
848 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixCloseApplication", id); 848 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixCloseApplication", id);
849 row.Set(1, target); 849 row.Set(1, target);
850 row.Set(2, description); 850 row.Set(2, description);
851 row.Set(3, condition); 851 row.Set(3, condition);
@@ -1087,7 +1087,7 @@ namespace WixToolset.Util
1087 /// <param name="attributes"></param> 1087 /// <param name="attributes"></param>
1088 private void CreateWixFileSearchRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string path, WixFileSearchAttributes attributes) 1088 private void CreateWixFileSearchRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string path, WixFileSearchAttributes attributes)
1089 { 1089 {
1090 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixFileSearch", id); 1090 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixFileSearch", id);
1091 row.Set(1, path); 1091 row.Set(1, path);
1092 //row.Set(2, minVersion; 1092 //row.Set(2, minVersion;
1093 //row.Set(3, maxVersion; 1093 //row.Set(3, maxVersion;
@@ -1108,7 +1108,7 @@ namespace WixToolset.Util
1108 /// <param name="condition">A condition to test before evaluating the search.</param> 1108 /// <param name="condition">A condition to test before evaluating the search.</param>
1109 private void CreateWixSearchRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string variable, string condition) 1109 private void CreateWixSearchRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string variable, string condition)
1110 { 1110 {
1111 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixSearch", id); 1111 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixSearch", id);
1112 row.Set(1, variable); 1112 row.Set(1, variable);
1113 row.Set(2, condition); 1113 row.Set(2, condition);
1114 } 1114 }
@@ -1122,7 +1122,7 @@ namespace WixToolset.Util
1122 /// <param name="attributes">Further details about the relation between id and parentId.</param> 1122 /// <param name="attributes">Further details about the relation between id and parentId.</param>
1123 private void CreateWixSearchRelationRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string parentId, int attributes) 1123 private void CreateWixSearchRelationRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string parentId, int attributes)
1124 { 1124 {
1125 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixSearchRelation", id); 1125 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixSearchRelation", id);
1126 row.Set(1, parentId); 1126 row.Set(1, parentId);
1127 row.Set(2, attributes); 1127 row.Set(2, attributes);
1128 } 1128 }
@@ -1217,7 +1217,7 @@ namespace WixToolset.Util
1217 1217
1218 if (!this.Messaging.EncounteredError) 1218 if (!this.Messaging.EncounteredError)
1219 { 1219 {
1220 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "FileShare"); 1220 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "FileShare");
1221 row.Set(0, id); 1221 row.Set(0, id);
1222 row.Set(1, name); 1222 row.Set(1, name);
1223 row.Set(2, componentId); 1223 row.Set(2, componentId);
@@ -1286,7 +1286,7 @@ namespace WixToolset.Util
1286 1286
1287 if (!this.Messaging.EncounteredError) 1287 if (!this.Messaging.EncounteredError)
1288 { 1288 {
1289 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "FileSharePermissions"); 1289 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "FileSharePermissions");
1290 row.Set(0, fileShareId); 1290 row.Set(0, fileShareId);
1291 row.Set(1, user); 1291 row.Set(1, user);
1292 row.Set(2, permission); 1292 row.Set(2, permission);
@@ -1340,7 +1340,7 @@ namespace WixToolset.Util
1340 1340
1341 if (!this.Messaging.EncounteredError) 1341 if (!this.Messaging.EncounteredError)
1342 { 1342 {
1343 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "Group"); 1343 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "Group");
1344 row.Set(0, id); 1344 row.Set(0, id);
1345 row.Set(1, componentId); 1345 row.Set(1, componentId);
1346 row.Set(2, name); 1346 row.Set(2, name);
@@ -1383,7 +1383,7 @@ namespace WixToolset.Util
1383 1383
1384 if (!this.Messaging.EncounteredError) 1384 if (!this.Messaging.EncounteredError)
1385 { 1385 {
1386 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "UserGroup"); 1386 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "UserGroup");
1387 row.Set(0, userId); 1387 row.Set(0, userId);
1388 row.Set(1, groupId); 1388 row.Set(1, groupId);
1389 } 1389 }
@@ -1504,7 +1504,7 @@ namespace WixToolset.Util
1504 // add the appropriate extension based on type of shortcut 1504 // add the appropriate extension based on type of shortcut
1505 name = String.Concat(name, InternetShortcutType.Url == type ? ".url" : ".lnk"); 1505 name = String.Concat(name, InternetShortcutType.Url == type ? ".url" : ".lnk");
1506 1506
1507 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixInternetShortcut"); 1507 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixInternetShortcut");
1508 row.Set(0, shortcutId); 1508 row.Set(0, shortcutId);
1509 row.Set(1, componentId); 1509 row.Set(1, componentId);
1510 row.Set(2, directoryId); 1510 row.Set(2, directoryId);
@@ -1530,7 +1530,7 @@ namespace WixToolset.Util
1530 this.ParseHelper.EnsureTable(section, sourceLineNumbers, "CreateFolder"); 1530 this.ParseHelper.EnsureTable(section, sourceLineNumbers, "CreateFolder");
1531 1531
1532 // use built-in MSI functionality to remove the shortcuts rather than doing so via CA 1532 // use built-in MSI functionality to remove the shortcuts rather than doing so via CA
1533 row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "RemoveFile"); 1533 row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "RemoveFile");
1534 row.Set(0, shortcutId); 1534 row.Set(0, shortcutId);
1535 row.Set(1, componentId); 1535 row.Set(1, componentId);
1536 row.Set(2, this.ParseHelper.IsValidShortFilename(name, false) ? name : String.Concat(this.ParseHelper.CreateShortName(name, true, false, directoryId, name), "|", name)); 1536 row.Set(2, this.ParseHelper.IsValidShortFilename(name, false) ? name : String.Concat(this.ParseHelper.CreateShortName(name, true, false, directoryId, name), "|", name));
@@ -1683,7 +1683,7 @@ namespace WixToolset.Util
1683 sbSymbolicConstants.AppendFormat("#define LAST_{0}_COUNTER_OFFSET {1}\r\n", objectName, symbolConstantsCounter); 1683 sbSymbolicConstants.AppendFormat("#define LAST_{0}_COUNTER_OFFSET {1}\r\n", objectName, symbolConstantsCounter);
1684 1684
1685 // Add the calculated INI and H strings to the PerformanceCategory table. 1685 // Add the calculated INI and H strings to the PerformanceCategory table.
1686 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "PerformanceCategory"); 1686 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "PerformanceCategory");
1687 row.Set(0, id); 1687 row.Set(0, id);
1688 row.Set(1, componentId); 1688 row.Set(1, componentId);
1689 row.Set(2, name); 1689 row.Set(2, name);
@@ -1695,15 +1695,15 @@ namespace WixToolset.Util
1695 string linkageKey = String.Format(@"SYSTEM\CurrentControlSet\Services\{0}\Linkage", escapedName); 1695 string linkageKey = String.Format(@"SYSTEM\CurrentControlSet\Services\{0}\Linkage", escapedName);
1696 string performanceKey = String.Format(@"SYSTEM\CurrentControlSet\Services\{0}\Performance", escapedName); 1696 string performanceKey = String.Format(@"SYSTEM\CurrentControlSet\Services\{0}\Performance", escapedName);
1697 1697
1698 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, linkageKey, "Export", escapedName, componentId, false); 1698 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, linkageKey, "Export", escapedName, componentId, false);
1699 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "-", null, componentId, false); 1699 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "-", null, componentId, false);
1700 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Library", library, componentId, false); 1700 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Library", library, componentId, false);
1701 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Open", openEntryPoint, componentId, false); 1701 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Open", openEntryPoint, componentId, false);
1702 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Collect", collectEntryPoint, componentId, false); 1702 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Collect", collectEntryPoint, componentId, false);
1703 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Close", closeEntryPoint, componentId, false); 1703 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Close", closeEntryPoint, componentId, false);
1704 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "IsMultiInstance", YesNoType.Yes == multiInstance ? "#1" : "#0", componentId, false); 1704 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "IsMultiInstance", YesNoType.Yes == multiInstance ? "#1" : "#0", componentId, false);
1705 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Names", sbCounterNames.ToString(), componentId, false); 1705 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Names", sbCounterNames.ToString(), componentId, false);
1706 this.ParseHelper.CreateRegistryRow(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Types", sbCounterTypes.ToString(), componentId, false); 1706 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Types", sbCounterTypes.ToString(), componentId, false);
1707 } 1707 }
1708 1708
1709 // Reference InstallPerfCounterData and UninstallPerfCounterData since nothing will happen without them 1709 // Reference InstallPerfCounterData and UninstallPerfCounterData since nothing will happen without them
@@ -2188,7 +2188,7 @@ namespace WixToolset.Util
2188 2188
2189 if (!this.Messaging.EncounteredError) 2189 if (!this.Messaging.EncounteredError)
2190 { 2190 {
2191 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "Perfmon"); 2191 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "Perfmon");
2192 row.Set(0, componentId); 2192 row.Set(0, componentId);
2193 row.Set(1, $"[#{fileId}]"); 2193 row.Set(1, $"[#{fileId}]");
2194 row.Set(2, name); 2194 row.Set(2, name);
@@ -2245,7 +2245,7 @@ namespace WixToolset.Util
2245 2245
2246 if (!this.Messaging.EncounteredError) 2246 if (!this.Messaging.EncounteredError)
2247 { 2247 {
2248 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "PerfmonManifest"); 2248 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "PerfmonManifest");
2249 row.Set(0, componentId); 2249 row.Set(0, componentId);
2250 row.Set(1, $"[#{fileId}]"); 2250 row.Set(1, $"[#{fileId}]");
2251 row.Set(2, resourceFileDirectory); 2251 row.Set(2, resourceFileDirectory);
@@ -2319,7 +2319,7 @@ namespace WixToolset.Util
2319 break; 2319 break;
2320 } 2320 }
2321 2321
2322 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixFormatFiles"); 2322 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixFormatFiles");
2323 row.Set(0, binaryId); 2323 row.Set(0, binaryId);
2324 row.Set(1, fileId); 2324 row.Set(1, fileId);
2325 2325
@@ -2370,13 +2370,13 @@ namespace WixToolset.Util
2370 2370
2371 if (!this.Messaging.EncounteredError) 2371 if (!this.Messaging.EncounteredError)
2372 { 2372 {
2373 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "EventManifest"); 2373 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "EventManifest");
2374 row.Set(0, componentId); 2374 row.Set(0, componentId);
2375 row.Set(1, $"[#{fileId}]"); 2375 row.Set(1, $"[#{fileId}]");
2376 2376
2377 if (null != messageFile) 2377 if (null != messageFile)
2378 { 2378 {
2379 var messageRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "XmlFile"); 2379 var messageRow = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile");
2380 messageRow.Set(0, String.Concat("Config_", fileId, "MessageFile")); 2380 messageRow.Set(0, String.Concat("Config_", fileId, "MessageFile"));
2381 messageRow.Set(1, $"[#{fileId}]"); 2381 messageRow.Set(1, $"[#{fileId}]");
2382 messageRow.Set(2, "/*/*/*/*[\\[]@messageFileName[\\]]"); 2382 messageRow.Set(2, "/*/*/*/*[\\[]@messageFileName[\\]]");
@@ -2387,7 +2387,7 @@ namespace WixToolset.Util
2387 } 2387 }
2388 if (null != parameterFile) 2388 if (null != parameterFile)
2389 { 2389 {
2390 var resourceRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "XmlFile"); 2390 var resourceRow = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile");
2391 resourceRow.Set(0, String.Concat("Config_", fileId, "ParameterFile")); 2391 resourceRow.Set(0, String.Concat("Config_", fileId, "ParameterFile"));
2392 resourceRow.Set(1, $"[#{fileId}]"); 2392 resourceRow.Set(1, $"[#{fileId}]");
2393 resourceRow.Set(2, "/*/*/*/*[\\[]@parameterFileName[\\]]"); 2393 resourceRow.Set(2, "/*/*/*/*[\\[]@parameterFileName[\\]]");
@@ -2398,7 +2398,7 @@ namespace WixToolset.Util
2398 } 2398 }
2399 if (null != resourceFile) 2399 if (null != resourceFile)
2400 { 2400 {
2401 var resourceRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "XmlFile"); 2401 var resourceRow = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile");
2402 resourceRow.Set(0, String.Concat("Config_", fileId, "ResourceFile")); 2402 resourceRow.Set(0, String.Concat("Config_", fileId, "ResourceFile"));
2403 resourceRow.Set(1, $"[#{fileId}]"); 2403 resourceRow.Set(1, $"[#{fileId}]");
2404 resourceRow.Set(2, "/*/*/*/*[\\[]@resourceFileName[\\]]"); 2404 resourceRow.Set(2, "/*/*/*/*[\\[]@resourceFileName[\\]]");
@@ -2558,7 +2558,7 @@ namespace WixToolset.Util
2558 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedSecureObjects"); 2558 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedSecureObjects");
2559 } 2559 }
2560 2560
2561 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "SecureObjects"); 2561 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "SecureObjects");
2562 row.Set(0, objectId); 2562 row.Set(0, objectId);
2563 row.Set(1, tableName); 2563 row.Set(1, tableName);
2564 row.Set(2, domain); 2564 row.Set(2, domain);
@@ -2680,7 +2680,7 @@ namespace WixToolset.Util
2680 attributes |= WixProductSearchAttributes.UpgradeCode; 2680 attributes |= WixProductSearchAttributes.UpgradeCode;
2681 } 2681 }
2682 2682
2683 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixProductSearch", id); 2683 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixProductSearch", id);
2684 row.Set(1, productCode ?? upgradeCode); 2684 row.Set(1, productCode ?? upgradeCode);
2685 row.Set(2, (int)attributes); 2685 row.Set(2, (int)attributes);
2686 } 2686 }
@@ -2836,7 +2836,7 @@ namespace WixToolset.Util
2836 this.CreateWixSearchRelationRow(section, sourceLineNumbers, id, after, 2); 2836 this.CreateWixSearchRelationRow(section, sourceLineNumbers, id, after, 2);
2837 } 2837 }
2838 2838
2839 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixRegistrySearch", id); 2839 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixRegistrySearch", id);
2840 row.Set(1, (int)root); 2840 row.Set(1, (int)root);
2841 row.Set(2, key); 2841 row.Set(2, key);
2842 row.Set(3, value); 2842 row.Set(3, value);
@@ -2919,7 +2919,7 @@ namespace WixToolset.Util
2919 2919
2920 if (!this.Messaging.EncounteredError) 2920 if (!this.Messaging.EncounteredError)
2921 { 2921 {
2922 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixRemoveFolderEx", id); 2922 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixRemoveFolderEx", id);
2923 row.Set(1, componentId); 2923 row.Set(1, componentId);
2924 row.Set(2, property); 2924 row.Set(2, property);
2925 row.Set(3, on); 2925 row.Set(3, on);
@@ -3004,7 +3004,7 @@ namespace WixToolset.Util
3004 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixRegisterRestartResources"); 3004 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixRegisterRestartResources");
3005 } 3005 }
3006 3006
3007 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixRestartResource", id); 3007 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixRestartResource", id);
3008 row.Set(1, componentId); 3008 row.Set(1, componentId);
3009 row.Set(2, resource); 3009 row.Set(2, resource);
3010 row.Set(3, attributes); 3010 row.Set(3, attributes);
@@ -3104,7 +3104,7 @@ namespace WixToolset.Util
3104 3104
3105 if (!this.Messaging.EncounteredError) 3105 if (!this.Messaging.EncounteredError)
3106 { 3106 {
3107 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ServiceConfig"); 3107 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "ServiceConfig");
3108 row.Set(0, serviceName); 3108 row.Set(0, serviceName);
3109 row.Set(1, componentId); 3109 row.Set(1, componentId);
3110 row.Set(2, (newService ? 1 : 0)); 3110 row.Set(2, (newService ? 1 : 0));
@@ -3204,7 +3204,7 @@ namespace WixToolset.Util
3204 3204
3205 if (!this.Messaging.EncounteredError) 3205 if (!this.Messaging.EncounteredError)
3206 { 3206 {
3207 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "WixTouchFile", id); 3207 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixTouchFile", id);
3208 row.Set(1, componentId); 3208 row.Set(1, componentId);
3209 row.Set(2, path); 3209 row.Set(2, path);
3210 row.Set(3, attributes); 3210 row.Set(3, attributes);
@@ -3428,7 +3428,7 @@ namespace WixToolset.Util
3428 3428
3429 if (!this.Messaging.EncounteredError) 3429 if (!this.Messaging.EncounteredError)
3430 { 3430 {
3431 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "User", id); 3431 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "User", id);
3432 row.Set(1, componentId); 3432 row.Set(1, componentId);
3433 row.Set(2, name); 3433 row.Set(2, name);
3434 row.Set(3, domain); 3434 row.Set(3, domain);
@@ -3560,7 +3560,7 @@ namespace WixToolset.Util
3560 3560
3561 if (!this.Messaging.EncounteredError) 3561 if (!this.Messaging.EncounteredError)
3562 { 3562 {
3563 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "XmlFile"); 3563 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile");
3564 row.Set(0, id); 3564 row.Set(0, id);
3565 row.Set(1, file); 3565 row.Set(1, file);
3566 row.Set(2, elementPath); 3566 row.Set(2, elementPath);
@@ -3798,7 +3798,7 @@ namespace WixToolset.Util
3798 3798
3799 if (!this.Messaging.EncounteredError) 3799 if (!this.Messaging.EncounteredError)
3800 { 3800 {
3801 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "XmlConfig"); 3801 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlConfig");
3802 row.Set(0, id); 3802 row.Set(0, id);
3803 row.Set(1, file); 3803 row.Set(1, file);
3804 row.Set(2, elementId ?? elementPath); 3804 row.Set(2, elementId ?? elementPath);
diff --git a/src/wixext/tables.xml b/src/wixext/tables.xml
index 190b0404..9f491e56 100644
--- a/src/wixext/tables.xml
+++ b/src/wixext/tables.xml
@@ -57,7 +57,7 @@
57 <columnDefinition name="User_" type="string" length="72" modularize="column" nullable="yes" 57 <columnDefinition name="User_" type="string" length="72" modularize="column" nullable="yes"
58 keyTable="User" keyColumn="1" category="identifier" description="Foreign key, User to give access permissions to"/> 58 keyTable="User" keyColumn="1" category="identifier" description="Foreign key, User to give access permissions to"/>
59 <columnDefinition name="Permissions" type="number" length="4" nullable="yes" 59 <columnDefinition name="Permissions" type="number" length="4" nullable="yes"
60 description="Permissions int, as on EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/> 60 description="Permissions int, as in EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/>
61 </tableDefinition> 61 </tableDefinition>
62 <tableDefinition name="FileSharePermissions"> 62 <tableDefinition name="FileSharePermissions">
63 <columnDefinition name="FileShare_" type="string" length="72" primaryKey="yes" modularize="column" 63 <columnDefinition name="FileShare_" type="string" length="72" primaryKey="yes" modularize="column"
@@ -65,7 +65,7 @@
65 <columnDefinition name="User_" type="string" length="72" primaryKey="yes" modularize="column" 65 <columnDefinition name="User_" type="string" length="72" primaryKey="yes" modularize="column"
66 category="identifier" description="User that these premissions are to apply to."/> 66 category="identifier" description="User that these premissions are to apply to."/>
67 <columnDefinition name="Permissions" type="number" length="4" 67 <columnDefinition name="Permissions" type="number" length="4"
68 description="Permissions int, as on EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/> 68 description="Permissions int, as in EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/>
69 </tableDefinition> 69 </tableDefinition>
70 <tableDefinition name="Group" createSymbols="yes"> 70 <tableDefinition name="Group" createSymbols="yes">
71 <columnDefinition name="Group" type="string" length="72" primaryKey="yes" modularize="column" 71 <columnDefinition name="Group" type="string" length="72" primaryKey="yes" modularize="column"