aboutsummaryrefslogtreecommitdiff
path: root/src/wixext
diff options
context:
space:
mode:
Diffstat (limited to 'src/wixext')
-rw-r--r--src/wixext/Tuples/EventManifestTuple.cs10
-rw-r--r--src/wixext/Tuples/FileSharePermissionsTuple.cs20
-rw-r--r--src/wixext/Tuples/FileShareTuple.cs44
-rw-r--r--src/wixext/Tuples/GroupTuple.cs10
-rw-r--r--src/wixext/Tuples/PerfmonManifestTuple.cs10
-rw-r--r--src/wixext/Tuples/PerfmonTuple.cs10
-rw-r--r--src/wixext/Tuples/PerformanceCategoryTuple.cs18
-rw-r--r--src/wixext/Tuples/SecureObjectsTuple.cs18
-rw-r--r--src/wixext/Tuples/ServiceConfigTuple.cs10
-rw-r--r--src/wixext/Tuples/UserGroupTuple.cs20
-rw-r--r--src/wixext/Tuples/UserTuple.cs18
-rw-r--r--src/wixext/Tuples/WixCloseApplicationTuple.cs8
-rw-r--r--src/wixext/Tuples/WixFormatFilesTuple.cs20
-rw-r--r--src/wixext/Tuples/WixInternetShortcutTuple.cs28
-rw-r--r--src/wixext/Tuples/WixRemoveFolderExTuple.cs18
-rw-r--r--src/wixext/Tuples/WixRestartResourceTuple.cs18
-rw-r--r--src/wixext/Tuples/WixTouchFileTuple.cs18
-rw-r--r--src/wixext/Tuples/XmlConfigTuple.cs18
-rw-r--r--src/wixext/Tuples/XmlFileTuple.cs18
-rw-r--r--src/wixext/UtilCompiler.cs599
-rw-r--r--src/wixext/UtilWindowsInstallerBackendExtension.cs7
-rw-r--r--src/wixext/WixToolset.Util.wixext.csproj1
-rw-r--r--src/wixext/tables.xml86
23 files changed, 417 insertions, 610 deletions
diff --git a/src/wixext/Tuples/EventManifestTuple.cs b/src/wixext/Tuples/EventManifestTuple.cs
index b74d2d59..364604be 100644
--- a/src/wixext/Tuples/EventManifestTuple.cs
+++ b/src/wixext/Tuples/EventManifestTuple.cs
@@ -11,7 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.EventManifest.ToString(), 11 UtilTupleDefinitionType.EventManifest.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(EventManifestTupleFields.Component_), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(EventManifestTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(EventManifestTupleFields.File), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(EventManifestTupleFields.File), IntermediateFieldType.String),
16 }, 16 },
17 typeof(EventManifestTuple)); 17 typeof(EventManifestTuple));
@@ -24,7 +24,7 @@ namespace WixToolset.Util.Tuples
24 24
25 public enum EventManifestTupleFields 25 public enum EventManifestTupleFields
26 { 26 {
27 Component_, 27 ComponentRef,
28 File, 28 File,
29 } 29 }
30 30
@@ -40,10 +40,10 @@ namespace WixToolset.Util.Tuples
40 40
41 public IntermediateField this[EventManifestTupleFields index] => this.Fields[(int)index]; 41 public IntermediateField this[EventManifestTupleFields index] => this.Fields[(int)index];
42 42
43 public string Component_ 43 public string ComponentRef
44 { 44 {
45 get => this.Fields[(int)EventManifestTupleFields.Component_].AsString(); 45 get => this.Fields[(int)EventManifestTupleFields.ComponentRef].AsString();
46 set => this.Set((int)EventManifestTupleFields.Component_, value); 46 set => this.Set((int)EventManifestTupleFields.ComponentRef, value);
47 } 47 }
48 48
49 public string File 49 public string File
diff --git a/src/wixext/Tuples/FileSharePermissionsTuple.cs b/src/wixext/Tuples/FileSharePermissionsTuple.cs
index 3f037e0e..1db01b98 100644
--- a/src/wixext/Tuples/FileSharePermissionsTuple.cs
+++ b/src/wixext/Tuples/FileSharePermissionsTuple.cs
@@ -11,8 +11,8 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.FileSharePermissions.ToString(), 11 UtilTupleDefinitionType.FileSharePermissions.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.FileShare_), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.FileShareRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.User_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.UserRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.Permissions), IntermediateFieldType.Number), 16 new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.Permissions), IntermediateFieldType.Number),
17 }, 17 },
18 typeof(FileSharePermissionsTuple)); 18 typeof(FileSharePermissionsTuple));
@@ -25,8 +25,8 @@ namespace WixToolset.Util.Tuples
25 25
26 public enum FileSharePermissionsTupleFields 26 public enum FileSharePermissionsTupleFields
27 { 27 {
28 FileShare_, 28 FileShareRef,
29 User_, 29 UserRef,
30 Permissions, 30 Permissions,
31 } 31 }
32 32
@@ -42,16 +42,16 @@ namespace WixToolset.Util.Tuples
42 42
43 public IntermediateField this[FileSharePermissionsTupleFields index] => this.Fields[(int)index]; 43 public IntermediateField this[FileSharePermissionsTupleFields index] => this.Fields[(int)index];
44 44
45 public string FileShare_ 45 public string FileShareRef
46 { 46 {
47 get => this.Fields[(int)FileSharePermissionsTupleFields.FileShare_].AsString(); 47 get => this.Fields[(int)FileSharePermissionsTupleFields.FileShareRef].AsString();
48 set => this.Set((int)FileSharePermissionsTupleFields.FileShare_, value); 48 set => this.Set((int)FileSharePermissionsTupleFields.FileShareRef, value);
49 } 49 }
50 50
51 public string User_ 51 public string UserRef
52 { 52 {
53 get => this.Fields[(int)FileSharePermissionsTupleFields.User_].AsString(); 53 get => this.Fields[(int)FileSharePermissionsTupleFields.UserRef].AsString();
54 set => this.Set((int)FileSharePermissionsTupleFields.User_, value); 54 set => this.Set((int)FileSharePermissionsTupleFields.UserRef, value);
55 } 55 }
56 56
57 public int Permissions 57 public int Permissions
diff --git a/src/wixext/Tuples/FileShareTuple.cs b/src/wixext/Tuples/FileShareTuple.cs
index 5a31b6fa..6a04f6af 100644
--- a/src/wixext/Tuples/FileShareTuple.cs
+++ b/src/wixext/Tuples/FileShareTuple.cs
@@ -11,13 +11,10 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.FileShare.ToString(), 11 UtilTupleDefinitionType.FileShare.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(FileShareTupleFields.FileShare), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(FileShareTupleFields.ShareName), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(FileShareTupleFields.ShareName), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(FileShareTupleFields.Component_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(FileShareTupleFields.ComponentRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(FileShareTupleFields.Description), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(FileShareTupleFields.Description), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(FileShareTupleFields.Directory_), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(FileShareTupleFields.DirectoryRef), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(FileShareTupleFields.User_), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(FileShareTupleFields.Permissions), IntermediateFieldType.Number),
21 }, 18 },
22 typeof(FileShareTuple)); 19 typeof(FileShareTuple));
23 } 20 }
@@ -29,13 +26,10 @@ namespace WixToolset.Util.Tuples
29 26
30 public enum FileShareTupleFields 27 public enum FileShareTupleFields
31 { 28 {
32 FileShare,
33 ShareName, 29 ShareName,
34 Component_, 30 ComponentRef,
35 Description, 31 Description,
36 Directory_, 32 DirectoryRef,
37 User_,
38 Permissions,
39 } 33 }
40 34
41 public class FileShareTuple : IntermediateTuple 35 public class FileShareTuple : IntermediateTuple
@@ -50,22 +44,16 @@ namespace WixToolset.Util.Tuples
50 44
51 public IntermediateField this[FileShareTupleFields index] => this.Fields[(int)index]; 45 public IntermediateField this[FileShareTupleFields index] => this.Fields[(int)index];
52 46
53 public string FileShare
54 {
55 get => this.Fields[(int)FileShareTupleFields.FileShare].AsString();
56 set => this.Set((int)FileShareTupleFields.FileShare, value);
57 }
58
59 public string ShareName 47 public string ShareName
60 { 48 {
61 get => this.Fields[(int)FileShareTupleFields.ShareName].AsString(); 49 get => this.Fields[(int)FileShareTupleFields.ShareName].AsString();
62 set => this.Set((int)FileShareTupleFields.ShareName, value); 50 set => this.Set((int)FileShareTupleFields.ShareName, value);
63 } 51 }
64 52
65 public string Component_ 53 public string ComponentRef
66 { 54 {
67 get => this.Fields[(int)FileShareTupleFields.Component_].AsString(); 55 get => this.Fields[(int)FileShareTupleFields.ComponentRef].AsString();
68 set => this.Set((int)FileShareTupleFields.Component_, value); 56 set => this.Set((int)FileShareTupleFields.ComponentRef, value);
69 } 57 }
70 58
71 public string Description 59 public string Description
@@ -74,22 +62,10 @@ namespace WixToolset.Util.Tuples
74 set => this.Set((int)FileShareTupleFields.Description, value); 62 set => this.Set((int)FileShareTupleFields.Description, value);
75 } 63 }
76 64
77 public string Directory_ 65 public string DirectoryRef
78 {
79 get => this.Fields[(int)FileShareTupleFields.Directory_].AsString();
80 set => this.Set((int)FileShareTupleFields.Directory_, value);
81 }
82
83 public string User_
84 {
85 get => this.Fields[(int)FileShareTupleFields.User_].AsString();
86 set => this.Set((int)FileShareTupleFields.User_, value);
87 }
88
89 public int? Permissions
90 { 66 {
91 get => this.Fields[(int)FileShareTupleFields.Permissions].AsNullableNumber(); 67 get => this.Fields[(int)FileShareTupleFields.DirectoryRef].AsString();
92 set => this.Set((int)FileShareTupleFields.Permissions, value); 68 set => this.Set((int)FileShareTupleFields.DirectoryRef, value);
93 } 69 }
94 } 70 }
95} \ No newline at end of file 71} \ No newline at end of file
diff --git a/src/wixext/Tuples/GroupTuple.cs b/src/wixext/Tuples/GroupTuple.cs
index 97335714..6061b1f4 100644
--- a/src/wixext/Tuples/GroupTuple.cs
+++ b/src/wixext/Tuples/GroupTuple.cs
@@ -12,7 +12,7 @@ namespace WixToolset.Util
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(GroupTupleFields.Group), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(GroupTupleFields.Group), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(GroupTupleFields.Component_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(GroupTupleFields.ComponentRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(GroupTupleFields.Name), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(GroupTupleFields.Name), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(GroupTupleFields.Domain), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(GroupTupleFields.Domain), IntermediateFieldType.String),
18 }, 18 },
@@ -27,7 +27,7 @@ namespace WixToolset.Util.Tuples
27 public enum GroupTupleFields 27 public enum GroupTupleFields
28 { 28 {
29 Group, 29 Group,
30 Component_, 30 ComponentRef,
31 Name, 31 Name,
32 Domain, 32 Domain,
33 } 33 }
@@ -50,10 +50,10 @@ namespace WixToolset.Util.Tuples
50 set => this.Set((int)GroupTupleFields.Group, value); 50 set => this.Set((int)GroupTupleFields.Group, value);
51 } 51 }
52 52
53 public string Component_ 53 public string ComponentRef
54 { 54 {
55 get => this.Fields[(int)GroupTupleFields.Component_].AsString(); 55 get => this.Fields[(int)GroupTupleFields.ComponentRef].AsString();
56 set => this.Set((int)GroupTupleFields.Component_, value); 56 set => this.Set((int)GroupTupleFields.ComponentRef, value);
57 } 57 }
58 58
59 public string Name 59 public string Name
diff --git a/src/wixext/Tuples/PerfmonManifestTuple.cs b/src/wixext/Tuples/PerfmonManifestTuple.cs
index 3f6cb8cc..9520105a 100644
--- a/src/wixext/Tuples/PerfmonManifestTuple.cs
+++ b/src/wixext/Tuples/PerfmonManifestTuple.cs
@@ -11,7 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.PerfmonManifest.ToString(), 11 UtilTupleDefinitionType.PerfmonManifest.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.Component_), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.File), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.File), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.ResourceFileDirectory), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.ResourceFileDirectory), IntermediateFieldType.String),
17 }, 17 },
@@ -25,7 +25,7 @@ namespace WixToolset.Util.Tuples
25 25
26 public enum PerfmonManifestTupleFields 26 public enum PerfmonManifestTupleFields
27 { 27 {
28 Component_, 28 ComponentRef,
29 File, 29 File,
30 ResourceFileDirectory, 30 ResourceFileDirectory,
31 } 31 }
@@ -42,10 +42,10 @@ namespace WixToolset.Util.Tuples
42 42
43 public IntermediateField this[PerfmonManifestTupleFields index] => this.Fields[(int)index]; 43 public IntermediateField this[PerfmonManifestTupleFields index] => this.Fields[(int)index];
44 44
45 public string Component_ 45 public string ComponentRef
46 { 46 {
47 get => this.Fields[(int)PerfmonManifestTupleFields.Component_].AsString(); 47 get => this.Fields[(int)PerfmonManifestTupleFields.ComponentRef].AsString();
48 set => this.Set((int)PerfmonManifestTupleFields.Component_, value); 48 set => this.Set((int)PerfmonManifestTupleFields.ComponentRef, value);
49 } 49 }
50 50
51 public string File 51 public string File
diff --git a/src/wixext/Tuples/PerfmonTuple.cs b/src/wixext/Tuples/PerfmonTuple.cs
index 00ea818b..1fb6ef6b 100644
--- a/src/wixext/Tuples/PerfmonTuple.cs
+++ b/src/wixext/Tuples/PerfmonTuple.cs
@@ -11,7 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.Perfmon.ToString(), 11 UtilTupleDefinitionType.Perfmon.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(PerfmonTupleFields.Component_), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(PerfmonTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(PerfmonTupleFields.File), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(PerfmonTupleFields.File), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(PerfmonTupleFields.Name), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(PerfmonTupleFields.Name), IntermediateFieldType.String),
17 }, 17 },
@@ -25,7 +25,7 @@ namespace WixToolset.Util.Tuples
25 25
26 public enum PerfmonTupleFields 26 public enum PerfmonTupleFields
27 { 27 {
28 Component_, 28 ComponentRef,
29 File, 29 File,
30 Name, 30 Name,
31 } 31 }
@@ -42,10 +42,10 @@ namespace WixToolset.Util.Tuples
42 42
43 public IntermediateField this[PerfmonTupleFields index] => this.Fields[(int)index]; 43 public IntermediateField this[PerfmonTupleFields index] => this.Fields[(int)index];
44 44
45 public string Component_ 45 public string ComponentRef
46 { 46 {
47 get => this.Fields[(int)PerfmonTupleFields.Component_].AsString(); 47 get => this.Fields[(int)PerfmonTupleFields.ComponentRef].AsString();
48 set => this.Set((int)PerfmonTupleFields.Component_, value); 48 set => this.Set((int)PerfmonTupleFields.ComponentRef, value);
49 } 49 }
50 50
51 public string File 51 public string File
diff --git a/src/wixext/Tuples/PerformanceCategoryTuple.cs b/src/wixext/Tuples/PerformanceCategoryTuple.cs
index ec2ba73d..16705466 100644
--- a/src/wixext/Tuples/PerformanceCategoryTuple.cs
+++ b/src/wixext/Tuples/PerformanceCategoryTuple.cs
@@ -11,8 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.PerformanceCategory.ToString(), 11 UtilTupleDefinitionType.PerformanceCategory.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.PerformanceCategory), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.Component_), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.Name), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.Name), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.IniData), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.IniData), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.ConstantData), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.ConstantData), IntermediateFieldType.String),
@@ -27,8 +26,7 @@ namespace WixToolset.Util.Tuples
27 26
28 public enum PerformanceCategoryTupleFields 27 public enum PerformanceCategoryTupleFields
29 { 28 {
30 PerformanceCategory, 29 ComponentRef,
31 Component_,
32 Name, 30 Name,
33 IniData, 31 IniData,
34 ConstantData, 32 ConstantData,
@@ -46,16 +44,10 @@ namespace WixToolset.Util.Tuples
46 44
47 public IntermediateField this[PerformanceCategoryTupleFields index] => this.Fields[(int)index]; 45 public IntermediateField this[PerformanceCategoryTupleFields index] => this.Fields[(int)index];
48 46
49 public string PerformanceCategory 47 public string ComponentRef
50 { 48 {
51 get => this.Fields[(int)PerformanceCategoryTupleFields.PerformanceCategory].AsString(); 49 get => this.Fields[(int)PerformanceCategoryTupleFields.ComponentRef].AsString();
52 set => this.Set((int)PerformanceCategoryTupleFields.PerformanceCategory, value); 50 set => this.Set((int)PerformanceCategoryTupleFields.ComponentRef, value);
53 }
54
55 public string Component_
56 {
57 get => this.Fields[(int)PerformanceCategoryTupleFields.Component_].AsString();
58 set => this.Set((int)PerformanceCategoryTupleFields.Component_, value);
59 } 51 }
60 52
61 public string Name 53 public string Name
diff --git a/src/wixext/Tuples/SecureObjectsTuple.cs b/src/wixext/Tuples/SecureObjectsTuple.cs
index f54b23d8..920fe7b3 100644
--- a/src/wixext/Tuples/SecureObjectsTuple.cs
+++ b/src/wixext/Tuples/SecureObjectsTuple.cs
@@ -11,12 +11,11 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.SecureObjects.ToString(), 11 UtilTupleDefinitionType.SecureObjects.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.SecureObject), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Table), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Table), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Domain), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Domain), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.User), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.User), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Permission), IntermediateFieldType.Number), 17 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Permission), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Component_), IntermediateFieldType.String), 18 new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.ComponentRef), IntermediateFieldType.String),
20 }, 19 },
21 typeof(SecureObjectsTuple)); 20 typeof(SecureObjectsTuple));
22 } 21 }
@@ -28,12 +27,11 @@ namespace WixToolset.Util.Tuples
28 27
29 public enum SecureObjectsTupleFields 28 public enum SecureObjectsTupleFields
30 { 29 {
31 SecureObject,
32 Table, 30 Table,
33 Domain, 31 Domain,
34 User, 32 User,
35 Permission, 33 Permission,
36 Component_, 34 ComponentRef,
37 } 35 }
38 36
39 public class SecureObjectsTuple : IntermediateTuple 37 public class SecureObjectsTuple : IntermediateTuple
@@ -48,12 +46,6 @@ namespace WixToolset.Util.Tuples
48 46
49 public IntermediateField this[SecureObjectsTupleFields index] => this.Fields[(int)index]; 47 public IntermediateField this[SecureObjectsTupleFields index] => this.Fields[(int)index];
50 48
51 public string SecureObject
52 {
53 get => this.Fields[(int)SecureObjectsTupleFields.SecureObject].AsString();
54 set => this.Set((int)SecureObjectsTupleFields.SecureObject, value);
55 }
56
57 public string Table 49 public string Table
58 { 50 {
59 get => this.Fields[(int)SecureObjectsTupleFields.Table].AsString(); 51 get => this.Fields[(int)SecureObjectsTupleFields.Table].AsString();
@@ -78,10 +70,10 @@ namespace WixToolset.Util.Tuples
78 set => this.Set((int)SecureObjectsTupleFields.Permission, value); 70 set => this.Set((int)SecureObjectsTupleFields.Permission, value);
79 } 71 }
80 72
81 public string Component_ 73 public string ComponentRef
82 { 74 {
83 get => this.Fields[(int)SecureObjectsTupleFields.Component_].AsString(); 75 get => this.Fields[(int)SecureObjectsTupleFields.ComponentRef].AsString();
84 set => this.Set((int)SecureObjectsTupleFields.Component_, value); 76 set => this.Set((int)SecureObjectsTupleFields.ComponentRef, value);
85 } 77 }
86 } 78 }
87} \ No newline at end of file 79} \ No newline at end of file
diff --git a/src/wixext/Tuples/ServiceConfigTuple.cs b/src/wixext/Tuples/ServiceConfigTuple.cs
index 74d96bca..e5fc3992 100644
--- a/src/wixext/Tuples/ServiceConfigTuple.cs
+++ b/src/wixext/Tuples/ServiceConfigTuple.cs
@@ -12,7 +12,7 @@ namespace WixToolset.Util
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ServiceName), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ServiceName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.Component_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ComponentRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.NewService), IntermediateFieldType.Number), 16 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.NewService), IntermediateFieldType.Number),
17 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.FirstFailureActionType), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.FirstFailureActionType), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.SecondFailureActionType), IntermediateFieldType.String), 18 new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.SecondFailureActionType), IntermediateFieldType.String),
@@ -33,7 +33,7 @@ namespace WixToolset.Util.Tuples
33 public enum ServiceConfigTupleFields 33 public enum ServiceConfigTupleFields
34 { 34 {
35 ServiceName, 35 ServiceName,
36 Component_, 36 ComponentRef,
37 NewService, 37 NewService,
38 FirstFailureActionType, 38 FirstFailureActionType,
39 SecondFailureActionType, 39 SecondFailureActionType,
@@ -62,10 +62,10 @@ namespace WixToolset.Util.Tuples
62 set => this.Set((int)ServiceConfigTupleFields.ServiceName, value); 62 set => this.Set((int)ServiceConfigTupleFields.ServiceName, value);
63 } 63 }
64 64
65 public string Component_ 65 public string ComponentRef
66 { 66 {
67 get => this.Fields[(int)ServiceConfigTupleFields.Component_].AsString(); 67 get => this.Fields[(int)ServiceConfigTupleFields.ComponentRef].AsString();
68 set => this.Set((int)ServiceConfigTupleFields.Component_, value); 68 set => this.Set((int)ServiceConfigTupleFields.ComponentRef, value);
69 } 69 }
70 70
71 public int NewService 71 public int NewService
diff --git a/src/wixext/Tuples/UserGroupTuple.cs b/src/wixext/Tuples/UserGroupTuple.cs
index 0386a26e..30c5e9ff 100644
--- a/src/wixext/Tuples/UserGroupTuple.cs
+++ b/src/wixext/Tuples/UserGroupTuple.cs
@@ -11,8 +11,8 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.UserGroup.ToString(), 11 UtilTupleDefinitionType.UserGroup.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(UserGroupTupleFields.User_), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(UserGroupTupleFields.UserRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(UserGroupTupleFields.Group_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(UserGroupTupleFields.GroupRef), IntermediateFieldType.String),
16 }, 16 },
17 typeof(UserGroupTuple)); 17 typeof(UserGroupTuple));
18 } 18 }
@@ -24,8 +24,8 @@ namespace WixToolset.Util.Tuples
24 24
25 public enum UserGroupTupleFields 25 public enum UserGroupTupleFields
26 { 26 {
27 User_, 27 UserRef,
28 Group_, 28 GroupRef,
29 } 29 }
30 30
31 public class UserGroupTuple : IntermediateTuple 31 public class UserGroupTuple : IntermediateTuple
@@ -40,16 +40,16 @@ namespace WixToolset.Util.Tuples
40 40
41 public IntermediateField this[UserGroupTupleFields index] => this.Fields[(int)index]; 41 public IntermediateField this[UserGroupTupleFields index] => this.Fields[(int)index];
42 42
43 public string User_ 43 public string UserRef
44 { 44 {
45 get => this.Fields[(int)UserGroupTupleFields.User_].AsString(); 45 get => this.Fields[(int)UserGroupTupleFields.UserRef].AsString();
46 set => this.Set((int)UserGroupTupleFields.User_, value); 46 set => this.Set((int)UserGroupTupleFields.UserRef, value);
47 } 47 }
48 48
49 public string Group_ 49 public string GroupRef
50 { 50 {
51 get => this.Fields[(int)UserGroupTupleFields.Group_].AsString(); 51 get => this.Fields[(int)UserGroupTupleFields.GroupRef].AsString();
52 set => this.Set((int)UserGroupTupleFields.Group_, value); 52 set => this.Set((int)UserGroupTupleFields.GroupRef, value);
53 } 53 }
54 } 54 }
55} \ No newline at end of file 55} \ No newline at end of file
diff --git a/src/wixext/Tuples/UserTuple.cs b/src/wixext/Tuples/UserTuple.cs
index e8c5315c..f11ed78b 100644
--- a/src/wixext/Tuples/UserTuple.cs
+++ b/src/wixext/Tuples/UserTuple.cs
@@ -11,8 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.User.ToString(), 11 UtilTupleDefinitionType.User.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(UserTupleFields.User), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(UserTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(UserTupleFields.Component_), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(UserTupleFields.Name), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(UserTupleFields.Name), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(UserTupleFields.Domain), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(UserTupleFields.Domain), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(UserTupleFields.Password), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(UserTupleFields.Password), IntermediateFieldType.String),
@@ -28,8 +27,7 @@ namespace WixToolset.Util.Tuples
28 27
29 public enum UserTupleFields 28 public enum UserTupleFields
30 { 29 {
31 User, 30 ComponentRef,
32 Component_,
33 Name, 31 Name,
34 Domain, 32 Domain,
35 Password, 33 Password,
@@ -48,16 +46,10 @@ namespace WixToolset.Util.Tuples
48 46
49 public IntermediateField this[UserTupleFields index] => this.Fields[(int)index]; 47 public IntermediateField this[UserTupleFields index] => this.Fields[(int)index];
50 48
51 public string User 49 public string ComponentRef
52 { 50 {
53 get => this.Fields[(int)UserTupleFields.User].AsString(); 51 get => this.Fields[(int)UserTupleFields.ComponentRef].AsString();
54 set => this.Set((int)UserTupleFields.User, value); 52 set => this.Set((int)UserTupleFields.ComponentRef, value);
55 }
56
57 public string Component_
58 {
59 get => this.Fields[(int)UserTupleFields.Component_].AsString();
60 set => this.Set((int)UserTupleFields.Component_, value);
61 } 53 }
62 54
63 public string Name 55 public string Name
diff --git a/src/wixext/Tuples/WixCloseApplicationTuple.cs b/src/wixext/Tuples/WixCloseApplicationTuple.cs
index c2095d93..cc91c326 100644
--- a/src/wixext/Tuples/WixCloseApplicationTuple.cs
+++ b/src/wixext/Tuples/WixCloseApplicationTuple.cs
@@ -11,7 +11,6 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.WixCloseApplication.ToString(), 11 UtilTupleDefinitionType.WixCloseApplication.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.WixCloseApplication), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Target), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Target), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Description), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Description), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Condition), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Condition), IntermediateFieldType.String),
@@ -31,7 +30,6 @@ namespace WixToolset.Util.Tuples
31 30
32 public enum WixCloseApplicationTupleFields 31 public enum WixCloseApplicationTupleFields
33 { 32 {
34 WixCloseApplication,
35 Target, 33 Target,
36 Description, 34 Description,
37 Condition, 35 Condition,
@@ -54,12 +52,6 @@ namespace WixToolset.Util.Tuples
54 52
55 public IntermediateField this[WixCloseApplicationTupleFields index] => this.Fields[(int)index]; 53 public IntermediateField this[WixCloseApplicationTupleFields index] => this.Fields[(int)index];
56 54
57 public string WixCloseApplication
58 {
59 get => this.Fields[(int)WixCloseApplicationTupleFields.WixCloseApplication].AsString();
60 set => this.Set((int)WixCloseApplicationTupleFields.WixCloseApplication, value);
61 }
62
63 public string Target 55 public string Target
64 { 56 {
65 get => this.Fields[(int)WixCloseApplicationTupleFields.Target].AsString(); 57 get => this.Fields[(int)WixCloseApplicationTupleFields.Target].AsString();
diff --git a/src/wixext/Tuples/WixFormatFilesTuple.cs b/src/wixext/Tuples/WixFormatFilesTuple.cs
index 7fc092b0..8e7db0c6 100644
--- a/src/wixext/Tuples/WixFormatFilesTuple.cs
+++ b/src/wixext/Tuples/WixFormatFilesTuple.cs
@@ -11,8 +11,8 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.WixFormatFiles.ToString(), 11 UtilTupleDefinitionType.WixFormatFiles.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(WixFormatFilesTupleFields.Binary_), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixFormatFilesTupleFields.BinaryRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixFormatFilesTupleFields.File_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixFormatFilesTupleFields.FileRef), IntermediateFieldType.String),
16 }, 16 },
17 typeof(WixFormatFilesTuple)); 17 typeof(WixFormatFilesTuple));
18 } 18 }
@@ -24,8 +24,8 @@ namespace WixToolset.Util.Tuples
24 24
25 public enum WixFormatFilesTupleFields 25 public enum WixFormatFilesTupleFields
26 { 26 {
27 Binary_, 27 BinaryRef,
28 File_, 28 FileRef,
29 } 29 }
30 30
31 public class WixFormatFilesTuple : IntermediateTuple 31 public class WixFormatFilesTuple : IntermediateTuple
@@ -40,16 +40,16 @@ namespace WixToolset.Util.Tuples
40 40
41 public IntermediateField this[WixFormatFilesTupleFields index] => this.Fields[(int)index]; 41 public IntermediateField this[WixFormatFilesTupleFields index] => this.Fields[(int)index];
42 42
43 public string Binary_ 43 public string BinaryRef
44 { 44 {
45 get => this.Fields[(int)WixFormatFilesTupleFields.Binary_].AsString(); 45 get => this.Fields[(int)WixFormatFilesTupleFields.BinaryRef].AsString();
46 set => this.Set((int)WixFormatFilesTupleFields.Binary_, value); 46 set => this.Set((int)WixFormatFilesTupleFields.BinaryRef, value);
47 } 47 }
48 48
49 public string File_ 49 public string FileRef
50 { 50 {
51 get => this.Fields[(int)WixFormatFilesTupleFields.File_].AsString(); 51 get => this.Fields[(int)WixFormatFilesTupleFields.FileRef].AsString();
52 set => this.Set((int)WixFormatFilesTupleFields.File_, value); 52 set => this.Set((int)WixFormatFilesTupleFields.FileRef, value);
53 } 53 }
54 } 54 }
55} \ No newline at end of file 55} \ No newline at end of file
diff --git a/src/wixext/Tuples/WixInternetShortcutTuple.cs b/src/wixext/Tuples/WixInternetShortcutTuple.cs
index 5c29cda6..935d9462 100644
--- a/src/wixext/Tuples/WixInternetShortcutTuple.cs
+++ b/src/wixext/Tuples/WixInternetShortcutTuple.cs
@@ -11,9 +11,8 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.WixInternetShortcut.ToString(), 11 UtilTupleDefinitionType.WixInternetShortcut.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.WixInternetShortcut), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Component_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.DirectoryRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Directory_), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Name), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Name), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Target), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Target), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Attributes), IntermediateFieldType.Number), 18 new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Attributes), IntermediateFieldType.Number),
@@ -30,9 +29,8 @@ namespace WixToolset.Util.Tuples
30 29
31 public enum WixInternetShortcutTupleFields 30 public enum WixInternetShortcutTupleFields
32 { 31 {
33 WixInternetShortcut, 32 ComponentRef,
34 Component_, 33 DirectoryRef,
35 Directory_,
36 Name, 34 Name,
37 Target, 35 Target,
38 Attributes, 36 Attributes,
@@ -52,22 +50,16 @@ namespace WixToolset.Util.Tuples
52 50
53 public IntermediateField this[WixInternetShortcutTupleFields index] => this.Fields[(int)index]; 51 public IntermediateField this[WixInternetShortcutTupleFields index] => this.Fields[(int)index];
54 52
55 public string WixInternetShortcut 53 public string ComponentRef
56 { 54 {
57 get => this.Fields[(int)WixInternetShortcutTupleFields.WixInternetShortcut].AsString(); 55 get => this.Fields[(int)WixInternetShortcutTupleFields.ComponentRef].AsString();
58 set => this.Set((int)WixInternetShortcutTupleFields.WixInternetShortcut, value); 56 set => this.Set((int)WixInternetShortcutTupleFields.ComponentRef, value);
59 } 57 }
60 58
61 public string Component_ 59 public string DirectoryRef
62 { 60 {
63 get => this.Fields[(int)WixInternetShortcutTupleFields.Component_].AsString(); 61 get => this.Fields[(int)WixInternetShortcutTupleFields.DirectoryRef].AsString();
64 set => this.Set((int)WixInternetShortcutTupleFields.Component_, value); 62 set => this.Set((int)WixInternetShortcutTupleFields.DirectoryRef, value);
65 }
66
67 public string Directory_
68 {
69 get => this.Fields[(int)WixInternetShortcutTupleFields.Directory_].AsString();
70 set => this.Set((int)WixInternetShortcutTupleFields.Directory_, value);
71 } 63 }
72 64
73 public string Name 65 public string Name
diff --git a/src/wixext/Tuples/WixRemoveFolderExTuple.cs b/src/wixext/Tuples/WixRemoveFolderExTuple.cs
index 35e22e2d..d43c59c3 100644
--- a/src/wixext/Tuples/WixRemoveFolderExTuple.cs
+++ b/src/wixext/Tuples/WixRemoveFolderExTuple.cs
@@ -11,8 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.WixRemoveFolderEx.ToString(), 11 UtilTupleDefinitionType.WixRemoveFolderEx.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.WixRemoveFolderEx), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.Component_), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.Property), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.Property), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.InstallMode), IntermediateFieldType.Number), 16 new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.InstallMode), IntermediateFieldType.Number),
18 }, 17 },
@@ -26,8 +25,7 @@ namespace WixToolset.Util.Tuples
26 25
27 public enum WixRemoveFolderExTupleFields 26 public enum WixRemoveFolderExTupleFields
28 { 27 {
29 WixRemoveFolderEx, 28 ComponentRef,
30 Component_,
31 Property, 29 Property,
32 InstallMode, 30 InstallMode,
33 } 31 }
@@ -44,16 +42,10 @@ namespace WixToolset.Util.Tuples
44 42
45 public IntermediateField this[WixRemoveFolderExTupleFields index] => this.Fields[(int)index]; 43 public IntermediateField this[WixRemoveFolderExTupleFields index] => this.Fields[(int)index];
46 44
47 public string WixRemoveFolderEx 45 public string ComponentRef
48 { 46 {
49 get => this.Fields[(int)WixRemoveFolderExTupleFields.WixRemoveFolderEx].AsString(); 47 get => this.Fields[(int)WixRemoveFolderExTupleFields.ComponentRef].AsString();
50 set => this.Set((int)WixRemoveFolderExTupleFields.WixRemoveFolderEx, value); 48 set => this.Set((int)WixRemoveFolderExTupleFields.ComponentRef, value);
51 }
52
53 public string Component_
54 {
55 get => this.Fields[(int)WixRemoveFolderExTupleFields.Component_].AsString();
56 set => this.Set((int)WixRemoveFolderExTupleFields.Component_, value);
57 } 49 }
58 50
59 public string Property 51 public string Property
diff --git a/src/wixext/Tuples/WixRestartResourceTuple.cs b/src/wixext/Tuples/WixRestartResourceTuple.cs
index 828d9d15..92091c3d 100644
--- a/src/wixext/Tuples/WixRestartResourceTuple.cs
+++ b/src/wixext/Tuples/WixRestartResourceTuple.cs
@@ -11,8 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.WixRestartResource.ToString(), 11 UtilTupleDefinitionType.WixRestartResource.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.WixRestartResource), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Component_), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Resource), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Resource), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Attributes), IntermediateFieldType.Number), 16 new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Attributes), IntermediateFieldType.Number),
18 }, 17 },
@@ -26,8 +25,7 @@ namespace WixToolset.Util.Tuples
26 25
27 public enum WixRestartResourceTupleFields 26 public enum WixRestartResourceTupleFields
28 { 27 {
29 WixRestartResource, 28 ComponentRef,
30 Component_,
31 Resource, 29 Resource,
32 Attributes, 30 Attributes,
33 } 31 }
@@ -44,16 +42,10 @@ namespace WixToolset.Util.Tuples
44 42
45 public IntermediateField this[WixRestartResourceTupleFields index] => this.Fields[(int)index]; 43 public IntermediateField this[WixRestartResourceTupleFields index] => this.Fields[(int)index];
46 44
47 public string WixRestartResource 45 public string ComponentRef
48 { 46 {
49 get => this.Fields[(int)WixRestartResourceTupleFields.WixRestartResource].AsString(); 47 get => this.Fields[(int)WixRestartResourceTupleFields.ComponentRef].AsString();
50 set => this.Set((int)WixRestartResourceTupleFields.WixRestartResource, value); 48 set => this.Set((int)WixRestartResourceTupleFields.ComponentRef, value);
51 }
52
53 public string Component_
54 {
55 get => this.Fields[(int)WixRestartResourceTupleFields.Component_].AsString();
56 set => this.Set((int)WixRestartResourceTupleFields.Component_, value);
57 } 49 }
58 50
59 public string Resource 51 public string Resource
diff --git a/src/wixext/Tuples/WixTouchFileTuple.cs b/src/wixext/Tuples/WixTouchFileTuple.cs
index f87f396e..0a152dec 100644
--- a/src/wixext/Tuples/WixTouchFileTuple.cs
+++ b/src/wixext/Tuples/WixTouchFileTuple.cs
@@ -11,8 +11,7 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.WixTouchFile.ToString(), 11 UtilTupleDefinitionType.WixTouchFile.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.WixTouchFile), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Component_), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Path), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Path), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Attributes), IntermediateFieldType.Number), 16 new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Attributes), IntermediateFieldType.Number),
18 }, 17 },
@@ -26,8 +25,7 @@ namespace WixToolset.Util.Tuples
26 25
27 public enum WixTouchFileTupleFields 26 public enum WixTouchFileTupleFields
28 { 27 {
29 WixTouchFile, 28 ComponentRef,
30 Component_,
31 Path, 29 Path,
32 Attributes, 30 Attributes,
33 } 31 }
@@ -44,16 +42,10 @@ namespace WixToolset.Util.Tuples
44 42
45 public IntermediateField this[WixTouchFileTupleFields index] => this.Fields[(int)index]; 43 public IntermediateField this[WixTouchFileTupleFields index] => this.Fields[(int)index];
46 44
47 public string WixTouchFile 45 public string ComponentRef
48 { 46 {
49 get => this.Fields[(int)WixTouchFileTupleFields.WixTouchFile].AsString(); 47 get => this.Fields[(int)WixTouchFileTupleFields.ComponentRef].AsString();
50 set => this.Set((int)WixTouchFileTupleFields.WixTouchFile, value); 48 set => this.Set((int)WixTouchFileTupleFields.ComponentRef, value);
51 }
52
53 public string Component_
54 {
55 get => this.Fields[(int)WixTouchFileTupleFields.Component_].AsString();
56 set => this.Set((int)WixTouchFileTupleFields.Component_, value);
57 } 49 }
58 50
59 public string Path 51 public string Path
diff --git a/src/wixext/Tuples/XmlConfigTuple.cs b/src/wixext/Tuples/XmlConfigTuple.cs
index 093299b2..0eb49cac 100644
--- a/src/wixext/Tuples/XmlConfigTuple.cs
+++ b/src/wixext/Tuples/XmlConfigTuple.cs
@@ -11,14 +11,13 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.XmlConfig.ToString(), 11 UtilTupleDefinitionType.XmlConfig.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.XmlConfig), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.File), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.File), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.ElementPath), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.ElementPath), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.VerifyPath), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.VerifyPath), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Name), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Name), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Value), IntermediateFieldType.String), 18 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Value), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Flags), IntermediateFieldType.Number), 19 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Flags), IntermediateFieldType.Number),
21 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Component_), IntermediateFieldType.String), 20 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.ComponentRef), IntermediateFieldType.String),
22 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Sequence), IntermediateFieldType.Number), 21 new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Sequence), IntermediateFieldType.Number),
23 }, 22 },
24 typeof(XmlConfigTuple)); 23 typeof(XmlConfigTuple));
@@ -31,14 +30,13 @@ namespace WixToolset.Util.Tuples
31 30
32 public enum XmlConfigTupleFields 31 public enum XmlConfigTupleFields
33 { 32 {
34 XmlConfig,
35 File, 33 File,
36 ElementPath, 34 ElementPath,
37 VerifyPath, 35 VerifyPath,
38 Name, 36 Name,
39 Value, 37 Value,
40 Flags, 38 Flags,
41 Component_, 39 ComponentRef,
42 Sequence, 40 Sequence,
43 } 41 }
44 42
@@ -54,12 +52,6 @@ namespace WixToolset.Util.Tuples
54 52
55 public IntermediateField this[XmlConfigTupleFields index] => this.Fields[(int)index]; 53 public IntermediateField this[XmlConfigTupleFields index] => this.Fields[(int)index];
56 54
57 public string XmlConfig
58 {
59 get => this.Fields[(int)XmlConfigTupleFields.XmlConfig].AsString();
60 set => this.Set((int)XmlConfigTupleFields.XmlConfig, value);
61 }
62
63 public string File 55 public string File
64 { 56 {
65 get => this.Fields[(int)XmlConfigTupleFields.File].AsString(); 57 get => this.Fields[(int)XmlConfigTupleFields.File].AsString();
@@ -96,10 +88,10 @@ namespace WixToolset.Util.Tuples
96 set => this.Set((int)XmlConfigTupleFields.Flags, value); 88 set => this.Set((int)XmlConfigTupleFields.Flags, value);
97 } 89 }
98 90
99 public string Component_ 91 public string ComponentRef
100 { 92 {
101 get => this.Fields[(int)XmlConfigTupleFields.Component_].AsString(); 93 get => this.Fields[(int)XmlConfigTupleFields.ComponentRef].AsString();
102 set => this.Set((int)XmlConfigTupleFields.Component_, value); 94 set => this.Set((int)XmlConfigTupleFields.ComponentRef, value);
103 } 95 }
104 96
105 public int Sequence 97 public int Sequence
diff --git a/src/wixext/Tuples/XmlFileTuple.cs b/src/wixext/Tuples/XmlFileTuple.cs
index 27ea7119..e0b3bbd7 100644
--- a/src/wixext/Tuples/XmlFileTuple.cs
+++ b/src/wixext/Tuples/XmlFileTuple.cs
@@ -11,13 +11,12 @@ namespace WixToolset.Util
11 UtilTupleDefinitionType.XmlFile.ToString(), 11 UtilTupleDefinitionType.XmlFile.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.XmlFile), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.File), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.File), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.ElementPath), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.ElementPath), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Name), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Name), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Value), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Value), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Flags), IntermediateFieldType.Number), 18 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Flags), IntermediateFieldType.Number),
20 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Component_), IntermediateFieldType.String), 19 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.ComponentRef), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Sequence), IntermediateFieldType.Number), 20 new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Sequence), IntermediateFieldType.Number),
22 }, 21 },
23 typeof(XmlFileTuple)); 22 typeof(XmlFileTuple));
@@ -30,13 +29,12 @@ namespace WixToolset.Util.Tuples
30 29
31 public enum XmlFileTupleFields 30 public enum XmlFileTupleFields
32 { 31 {
33 XmlFile,
34 File, 32 File,
35 ElementPath, 33 ElementPath,
36 Name, 34 Name,
37 Value, 35 Value,
38 Flags, 36 Flags,
39 Component_, 37 ComponentRef,
40 Sequence, 38 Sequence,
41 } 39 }
42 40
@@ -52,12 +50,6 @@ namespace WixToolset.Util.Tuples
52 50
53 public IntermediateField this[XmlFileTupleFields index] => this.Fields[(int)index]; 51 public IntermediateField this[XmlFileTupleFields index] => this.Fields[(int)index];
54 52
55 public string XmlFile
56 {
57 get => this.Fields[(int)XmlFileTupleFields.XmlFile].AsString();
58 set => this.Set((int)XmlFileTupleFields.XmlFile, value);
59 }
60
61 public string File 53 public string File
62 { 54 {
63 get => this.Fields[(int)XmlFileTupleFields.File].AsString(); 55 get => this.Fields[(int)XmlFileTupleFields.File].AsString();
@@ -88,10 +80,10 @@ namespace WixToolset.Util.Tuples
88 set => this.Set((int)XmlFileTupleFields.Flags, value); 80 set => this.Set((int)XmlFileTupleFields.Flags, value);
89 } 81 }
90 82
91 public string Component_ 83 public string ComponentRef
92 { 84 {
93 get => this.Fields[(int)XmlFileTupleFields.Component_].AsString(); 85 get => this.Fields[(int)XmlFileTupleFields.ComponentRef].AsString();
94 set => this.Set((int)XmlFileTupleFields.Component_, value); 86 set => this.Set((int)XmlFileTupleFields.ComponentRef, value);
95 } 87 }
96 88
97 public int Sequence 89 public int Sequence
diff --git a/src/wixext/UtilCompiler.cs b/src/wixext/UtilCompiler.cs
index 19f4af06..a8d59ca3 100644
--- a/src/wixext/UtilCompiler.cs
+++ b/src/wixext/UtilCompiler.cs
@@ -14,6 +14,7 @@ namespace WixToolset.Util
14 using WixToolset.Data.Tuples; 14 using WixToolset.Data.Tuples;
15 using WixToolset.Extensibility; 15 using WixToolset.Extensibility;
16 using WixToolset.Extensibility.Data; 16 using WixToolset.Extensibility.Data;
17 using WixToolset.Util.Tuples;
17 18
18 /// <summary> 19 /// <summary>
19 /// The compiler for the WiX Toolset Utility Extension. 20 /// The compiler for the WiX Toolset Utility Extension.
@@ -790,38 +791,32 @@ namespace WixToolset.Util
790 791
791 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 792 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
792 793
793 // Reference CustomAction since nothing will happen without it 794 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "CloseApplications", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
794 if (this.Context.Platform == Platform.ARM)
795 {
796 // Ensure ARM version of the CA is referenced
797 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixCloseApplications_ARM");
798 }
799 else
800 {
801 // All other supported platforms use x86
802 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixCloseApplications");
803 }
804 795
805 if (!this.Messaging.EncounteredError) 796 if (!this.Messaging.EncounteredError)
806 { 797 {
807 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixCloseApplication", id); 798 var tuple = new WixCloseApplicationTuple(sourceLineNumbers, id)
808 row.Set(1, target); 799 {
809 row.Set(2, description); 800 Target = target,
810 row.Set(3, condition); 801 Description = description,
811 row.Set(4, attributes); 802 Condition = condition,
803 Attributes = attributes,
804 Property = property,
805 };
812 if (CompilerConstants.IntegerNotSet != sequence) 806 if (CompilerConstants.IntegerNotSet != sequence)
813 { 807 {
814 row.Set(5, sequence); 808 tuple.Sequence = sequence;
815 } 809 }
816 row.Set(6, property);
817 if (CompilerConstants.IntegerNotSet != terminateExitCode) 810 if (CompilerConstants.IntegerNotSet != terminateExitCode)
818 { 811 {
819 row.Set(7, terminateExitCode); 812 tuple.TerminateExitCode = terminateExitCode;
820 } 813 }
821 if (CompilerConstants.IntegerNotSet != timeout) 814 if (CompilerConstants.IntegerNotSet != timeout)
822 { 815 {
823 row.Set(8, timeout * 1000); // make the timeout milliseconds in the table. 816 tuple.Timeout = timeout * 1000; // make the timeout milliseconds in the table.
824 } 817 }
818
819 section.Tuples.Add(tuple);
825 } 820 }
826 } 821 }
827 822
@@ -1096,7 +1091,7 @@ namespace WixToolset.Util
1096 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 1091 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
1097 string description = null; 1092 string description = null;
1098 string name = null; 1093 string name = null;
1099 string id = null; 1094 Identifier id = null;
1100 1095
1101 foreach (XAttribute attrib in element.Attributes()) 1096 foreach (XAttribute attrib in element.Attributes())
1102 { 1097 {
@@ -1105,7 +1100,7 @@ namespace WixToolset.Util
1105 switch (attrib.Name.LocalName) 1100 switch (attrib.Name.LocalName)
1106 { 1101 {
1107 case "Id": 1102 case "Id":
1108 id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1103 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
1109 break; 1104 break;
1110 case "Name": 1105 case "Name":
1111 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 1106 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
@@ -1159,28 +1154,20 @@ namespace WixToolset.Util
1159 } 1154 }
1160 } 1155 }
1161 1156
1162 // Reference ConfigureSmbInstall and ConfigureSmbUninstall since nothing will happen without it 1157 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureSmbInstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1163 if (this.Context.Platform == Platform.ARM) 1158 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureSmbUninstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1164 {
1165 // Ensure ARM version of the CA is referenced
1166 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureSmbInstall_ARM");
1167 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureSmbUninstall_ARM");
1168 }
1169 else
1170 {
1171 // All other supported platforms use x86
1172 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureSmbInstall");
1173 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureSmbUninstall");
1174 }
1175 1159
1176 if (!this.Messaging.EncounteredError) 1160 if (!this.Messaging.EncounteredError)
1177 { 1161 {
1178 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "FileShare"); 1162 var tuple = new FileShareTuple(sourceLineNumbers, id)
1179 row.Set(0, id); 1163 {
1180 row.Set(1, name); 1164 ShareName = name,
1181 row.Set(2, componentId); 1165 ComponentRef = componentId,
1182 row.Set(3, description); 1166 Description = description,
1183 row.Set(4, directoryId); 1167 DirectoryRef = directoryId,
1168 };
1169
1170 section.Tuples.Add(tuple);
1184 } 1171 }
1185 } 1172 }
1186 1173
@@ -1189,7 +1176,7 @@ namespace WixToolset.Util
1189 /// </summary> 1176 /// </summary>
1190 /// <param name="element">Element to parse.</param> 1177 /// <param name="element">Element to parse.</param>
1191 /// <param name="fileShareId">The identifier of the parent FileShare element.</param> 1178 /// <param name="fileShareId">The identifier of the parent FileShare element.</param>
1192 private void ParseFileSharePermissionElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileShareId) 1179 private void ParseFileSharePermissionElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier fileShareId)
1193 { 1180 {
1194 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 1181 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
1195 BitArray bits = new BitArray(32); 1182 BitArray bits = new BitArray(32);
@@ -1244,10 +1231,14 @@ namespace WixToolset.Util
1244 1231
1245 if (!this.Messaging.EncounteredError) 1232 if (!this.Messaging.EncounteredError)
1246 { 1233 {
1247 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "FileSharePermissions"); 1234 var tuple = new FileSharePermissionsTuple(sourceLineNumbers)
1248 row.Set(0, fileShareId); 1235 {
1249 row.Set(1, user); 1236 FileShareRef = fileShareId.Id,
1250 row.Set(2, permission); 1237 UserRef = user,
1238 Permissions = permission,
1239 };
1240
1241 section.Tuples.Add(tuple);
1251 } 1242 }
1252 } 1243 }
1253 1244
@@ -1259,7 +1250,7 @@ namespace WixToolset.Util
1259 private void ParseGroupElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId) 1250 private void ParseGroupElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId)
1260 { 1251 {
1261 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 1252 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
1262 string id = null; 1253 Identifier id = null;
1263 string domain = null; 1254 string domain = null;
1264 string name = null; 1255 string name = null;
1265 1256
@@ -1270,7 +1261,7 @@ namespace WixToolset.Util
1270 switch (attrib.Name.LocalName) 1261 switch (attrib.Name.LocalName)
1271 { 1262 {
1272 case "Id": 1263 case "Id":
1273 id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1264 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
1274 break; 1265 break;
1275 case "Name": 1266 case "Name":
1276 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 1267 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
@@ -1298,11 +1289,14 @@ namespace WixToolset.Util
1298 1289
1299 if (!this.Messaging.EncounteredError) 1290 if (!this.Messaging.EncounteredError)
1300 { 1291 {
1301 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "Group"); 1292 var tuple = new GroupTuple(sourceLineNumbers, id)
1302 row.Set(0, id); 1293 {
1303 row.Set(1, componentId); 1294 ComponentRef = componentId,
1304 row.Set(2, name); 1295 Name = name,
1305 row.Set(3, domain); 1296 Domain = domain,
1297 };
1298
1299 section.Tuples.Add(tuple);
1306 } 1300 }
1307 } 1301 }
1308 1302
@@ -1341,9 +1335,13 @@ namespace WixToolset.Util
1341 1335
1342 if (!this.Messaging.EncounteredError) 1336 if (!this.Messaging.EncounteredError)
1343 { 1337 {
1344 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "UserGroup"); 1338 var tuple = new UserGroupTuple(sourceLineNumbers)
1345 row.Set(0, userId); 1339 {
1346 row.Set(1, groupId); 1340 UserRef = userId,
1341 GroupRef = groupId,
1342 };
1343
1344 section.Tuples.Add(tuple);
1347 } 1345 }
1348 } 1346 }
1349 1347
@@ -1356,7 +1354,7 @@ namespace WixToolset.Util
1356 private void ParseInternetShortcutElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string defaultTarget) 1354 private void ParseInternetShortcutElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string defaultTarget)
1357 { 1355 {
1358 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 1356 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
1359 string id = null; 1357 Identifier id = null;
1360 string name = null; 1358 string name = null;
1361 string target = null; 1359 string target = null;
1362 string directoryId = null; 1360 string directoryId = null;
@@ -1374,7 +1372,7 @@ namespace WixToolset.Util
1374 directoryId = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1372 directoryId = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1375 break; 1373 break;
1376 case "Id": 1374 case "Id":
1377 id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1375 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
1378 break; 1376 break;
1379 case "Name": 1377 case "Name":
1380 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 1378 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
@@ -1457,43 +1455,40 @@ namespace WixToolset.Util
1457 /// <param name="id">Identifier of shortcut.</param> 1455 /// <param name="id">Identifier of shortcut.</param>
1458 /// <param name="name">Name of shortcut without extension.</param> 1456 /// <param name="name">Name of shortcut without extension.</param>
1459 /// <param name="target">Target URL of shortcut.</param> 1457 /// <param name="target">Target URL of shortcut.</param>
1460 private void CreateWixInternetShortcut(IntermediateSection section, SourceLineNumber sourceLineNumbers, string componentId, string directoryId, string shortcutId, string name, string target, InternetShortcutType type, string iconFile, int iconIndex) 1458 private void CreateWixInternetShortcut(IntermediateSection section, SourceLineNumber sourceLineNumbers, string componentId, string directoryId, Identifier shortcutId, string name, string target, InternetShortcutType type, string iconFile, int iconIndex)
1461 { 1459 {
1462 // add the appropriate extension based on type of shortcut 1460 // add the appropriate extension based on type of shortcut
1463 name = String.Concat(name, InternetShortcutType.Url == type ? ".url" : ".lnk"); 1461 name = String.Concat(name, InternetShortcutType.Url == type ? ".url" : ".lnk");
1464 1462
1465 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixInternetShortcut"); 1463 var tuple = new WixInternetShortcutTuple(sourceLineNumbers, shortcutId)
1466 row.Set(0, shortcutId);
1467 row.Set(1, componentId);
1468 row.Set(2, directoryId);
1469 row.Set(3, name);
1470 row.Set(4, target);
1471 row.Set(5, (int)type);
1472 row.Set(6, iconFile);
1473 row.Set(7, iconIndex);
1474
1475 // Reference custom action because nothing will happen without it
1476 if (this.Context.Platform == Platform.ARM)
1477 {
1478 // Ensure ARM version of the CA is referenced
1479 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixSchedInternetShortcuts_ARM");
1480 }
1481 else
1482 { 1464 {
1483 // All other supported platforms use x86 1465 ComponentRef = componentId,
1484 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixSchedInternetShortcuts"); 1466 DirectoryRef = directoryId,
1485 } 1467 Name = name,
1468 Target = target,
1469 Attributes = (int)type,
1470 IconFile = iconFile,
1471 IconIndex = iconIndex,
1472 };
1473
1474 section.Tuples.Add(tuple);
1475
1476 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedInternetShortcuts", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1486 1477
1487 // make sure we have a CreateFolder table so that the immediate CA can add temporary rows to handle installation and uninstallation 1478 // make sure we have a CreateFolder table so that the immediate CA can add temporary rows to handle installation and uninstallation
1488 this.ParseHelper.EnsureTable(section, sourceLineNumbers, "CreateFolder"); 1479 this.ParseHelper.EnsureTable(section, sourceLineNumbers, "CreateFolder");
1489 1480
1490 // use built-in MSI functionality to remove the shortcuts rather than doing so via CA 1481 // use built-in MSI functionality to remove the shortcuts rather than doing so via CA
1491 row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "RemoveFile"); 1482 var removeFileTuple = new RemoveFileTuple(sourceLineNumbers, shortcutId)
1492 row.Set(0, shortcutId); 1483 {
1493 row.Set(1, componentId); 1484 ComponentRef = componentId,
1494 row.Set(2, this.ParseHelper.IsValidShortFilename(name, false) ? name : String.Concat(this.ParseHelper.CreateShortName(name, true, false, directoryId, name), "|", name)); 1485 DirProperty = directoryId,
1495 row.Set(3, directoryId); 1486 OnUninstall = true,
1496 row.Set(4, 2); // msidbRemoveFileInstallModeOnRemove 1487 // TODO: A better way?
1488 FileName = this.ParseHelper.IsValidShortFilename(name, false) ? name : String.Concat(this.ParseHelper.CreateShortName(name, true, false, directoryId, name), "|", name),
1489 };
1490
1491 section.Tuples.Add(removeFileTuple);
1497 } 1492 }
1498 1493
1499 /// <summary> 1494 /// <summary>
@@ -1504,7 +1499,7 @@ namespace WixToolset.Util
1504 private void ParsePerformanceCategoryElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId) 1499 private void ParsePerformanceCategoryElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId)
1505 { 1500 {
1506 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 1501 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
1507 string id = null; 1502 Identifier id = null;
1508 string name = null; 1503 string name = null;
1509 string help = null; 1504 string help = null;
1510 YesNoType multiInstance = YesNoType.No; 1505 YesNoType multiInstance = YesNoType.No;
@@ -1537,7 +1532,7 @@ namespace WixToolset.Util
1537 help = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 1532 help = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1538 break; 1533 break;
1539 case "Id": 1534 case "Id":
1540 id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1535 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
1541 break; 1536 break;
1542 case "Library": 1537 case "Library":
1543 library = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 1538 library = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
@@ -1569,7 +1564,7 @@ namespace WixToolset.Util
1569 1564
1570 if (null == name) 1565 if (null == name)
1571 { 1566 {
1572 name = id; 1567 name = id?.Id;
1573 } 1568 }
1574 1569
1575 // Process the child counter elements. 1570 // Process the child counter elements.
@@ -1641,12 +1636,15 @@ namespace WixToolset.Util
1641 sbSymbolicConstants.AppendFormat("#define LAST_{0}_COUNTER_OFFSET {1}\r\n", objectName, symbolConstantsCounter); 1636 sbSymbolicConstants.AppendFormat("#define LAST_{0}_COUNTER_OFFSET {1}\r\n", objectName, symbolConstantsCounter);
1642 1637
1643 // Add the calculated INI and H strings to the PerformanceCategory table. 1638 // Add the calculated INI and H strings to the PerformanceCategory table.
1644 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "PerformanceCategory"); 1639 var tuple = new PerformanceCategoryTuple(sourceLineNumbers, id)
1645 row.Set(0, id); 1640 {
1646 row.Set(1, componentId); 1641 ComponentRef = componentId,
1647 row.Set(2, name); 1642 Name = name,
1648 row.Set(3, sbIniData.ToString()); 1643 IniData = sbIniData.ToString(),
1649 row.Set(4, sbSymbolicConstants.ToString()); 1644 ConstantData = sbSymbolicConstants.ToString(),
1645 };
1646
1647 section.Tuples.Add(tuple);
1650 1648
1651 // Set up the application's performance key. 1649 // Set up the application's performance key.
1652 string escapedName = UtilCompiler.FindPropertyBrackets.Replace(name, this.EscapeProperties); 1650 string escapedName = UtilCompiler.FindPropertyBrackets.Replace(name, this.EscapeProperties);
@@ -1664,19 +1662,8 @@ namespace WixToolset.Util
1664 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Types", sbCounterTypes.ToString(), componentId, false); 1662 this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Types", sbCounterTypes.ToString(), componentId, false);
1665 } 1663 }
1666 1664
1667 // Reference InstallPerfCounterData and UninstallPerfCounterData since nothing will happen without them 1665 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "InstallPerfCounterData", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1668 if (this.Context.Platform == Platform.ARM) 1666 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "UninstallPerfCounterData", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1669 {
1670 // Ensure ARM version of the CAs are referenced
1671 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "InstallPerfCounterData_ARM");
1672 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "UninstallPerfCounterData_ARM");
1673 }
1674 else
1675 {
1676 // All other supported platforms use x86
1677 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "InstallPerfCounterData");
1678 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "UninstallPerfCounterData");
1679 }
1680 } 1667 }
1681 1668
1682 /// <summary> 1669 /// <summary>
@@ -2146,25 +2133,18 @@ namespace WixToolset.Util
2146 2133
2147 if (!this.Messaging.EncounteredError) 2134 if (!this.Messaging.EncounteredError)
2148 { 2135 {
2149 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "Perfmon"); 2136 var tuple = new PerfmonTuple(sourceLineNumbers)
2150 row.Set(0, componentId); 2137 {
2151 row.Set(1, $"[#{fileId}]"); 2138 ComponentRef = componentId,
2152 row.Set(2, name); 2139 File = $"[#{fileId}]",
2153 } 2140 Name = name,
2141 };
2154 2142
2155 // Reference ConfigurePerfmonInstall and ConfigurePerfmonUninstall since nothing will happen without them 2143 section.Tuples.Add(tuple);
2156 if (this.Context.Platform == Platform.ARM)
2157 {
2158 // Ensure ARM version of the CAs are referenced
2159 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonInstall_ARM");
2160 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonUninstall_ARM");
2161 }
2162 else
2163 {
2164 // All other supported platforms use x86
2165 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonInstall");
2166 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonUninstall");
2167 } 2144 }
2145
2146 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonInstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2147 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonUninstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2168 } 2148 }
2169 2149
2170 2150
@@ -2203,24 +2183,18 @@ namespace WixToolset.Util
2203 2183
2204 if (!this.Messaging.EncounteredError) 2184 if (!this.Messaging.EncounteredError)
2205 { 2185 {
2206 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "PerfmonManifest"); 2186 var tuple = new PerfmonManifestTuple(sourceLineNumbers)
2207 row.Set(0, componentId); 2187 {
2208 row.Set(1, $"[#{fileId}]"); 2188 ComponentRef = componentId,
2209 row.Set(2, resourceFileDirectory); 2189 File = $"[#{fileId}]",
2210 } 2190 ResourceFileDirectory = resourceFileDirectory,
2191 };
2211 2192
2212 if (this.Context.Platform == Platform.ARM) 2193 section.Tuples.Add(tuple);
2213 {
2214 // Ensure ARM version of the CAs are referenced
2215 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonManifestRegister_ARM");
2216 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonManifestUnregister_ARM");
2217 }
2218 else
2219 {
2220 // All other supported platforms use x86
2221 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonManifestRegister");
2222 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigurePerfmonManifestUnregister");
2223 } 2194 }
2195
2196 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonManifestRegister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2197 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonManifestUnregister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2224 } 2198 }
2225 2199
2226 /// <summary> 2200 /// <summary>
@@ -2263,23 +2237,15 @@ namespace WixToolset.Util
2263 2237
2264 if (!this.Messaging.EncounteredError) 2238 if (!this.Messaging.EncounteredError)
2265 { 2239 {
2266 switch (this.Context.Platform) 2240 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedFormatFiles", this.Context.Platform, CustomActionPlatforms.X64 | CustomActionPlatforms.X86);
2241
2242 var tuple = new WixFormatFilesTuple(sourceLineNumbers)
2267 { 2243 {
2268 case Platform.X86: 2244 BinaryRef = binaryId,
2269 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixSchedFormatFiles"); 2245 FileRef = fileId,
2270 break; 2246 };
2271 case Platform.X64:
2272 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixSchedFormatFiles_x64");
2273 break;
2274 case Platform.IA64:
2275 case Platform.ARM:
2276 this.Messaging.Write(ErrorMessages.UnsupportedPlatformForElement(sourceLineNumbers, this.Context.Platform.ToString(), element.Name.LocalName));
2277 break;
2278 }
2279 2247
2280 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixFormatFiles"); 2248 section.Tuples.Add(tuple);
2281 row.Set(0, binaryId);
2282 row.Set(1, fileId);
2283 2249
2284 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "Binary", binaryId); 2250 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "Binary", binaryId);
2285 } 2251 }
@@ -2328,71 +2294,62 @@ namespace WixToolset.Util
2328 2294
2329 if (!this.Messaging.EncounteredError) 2295 if (!this.Messaging.EncounteredError)
2330 { 2296 {
2331 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "EventManifest"); 2297 var tuple = new EventManifestTuple(sourceLineNumbers)
2332 row.Set(0, componentId); 2298 {
2333 row.Set(1, $"[#{fileId}]"); 2299 ComponentRef = componentId,
2300 File = $"[#{fileId}]",
2301 };
2302
2303 section.Tuples.Add(tuple);
2334 2304
2335 if (null != messageFile) 2305 if (null != messageFile)
2336 { 2306 {
2337 var messageRow = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile"); 2307 var xmlTuple = new XmlFileTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, $"Config_{fileId}MessageFile"))
2338 messageRow.Set(0, String.Concat("Config_", fileId, "MessageFile")); 2308 {
2339 messageRow.Set(1, $"[#{fileId}]"); 2309 File = $"[#{fileId}]",
2340 messageRow.Set(2, "/*/*/*/*[\\[]@messageFileName[\\]]"); 2310 ElementPath = "/*/*/*/*[\\[]@messageFileName[\\]]",
2341 messageRow.Set(3, "messageFileName"); 2311 Name = "messageFileName",
2342 messageRow.Set(4, messageFile); 2312 Value = messageFile,
2343 messageRow.Set(5, 4 | 0x00001000); //bulk write | preserve modified date 2313 Flags = 4 | 0x00001000, //bulk write | preserve modified date
2344 messageRow.Set(6, componentId); 2314 ComponentRef = componentId,
2315 };
2316 section.Tuples.Add(xmlTuple);
2345 } 2317 }
2346 if (null != parameterFile) 2318 if (null != parameterFile)
2347 { 2319 {
2348 var resourceRow = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile"); 2320 var xmlTuple = new XmlFileTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, $"Config_{fileId}ParameterFile"))
2349 resourceRow.Set(0, String.Concat("Config_", fileId, "ParameterFile")); 2321 {
2350 resourceRow.Set(1, $"[#{fileId}]"); 2322 File = $"[#{fileId}]",
2351 resourceRow.Set(2, "/*/*/*/*[\\[]@parameterFileName[\\]]"); 2323 ElementPath = "/*/*/*/*[\\[]@parameterFileName[\\]]",
2352 resourceRow.Set(3, "parameterFileName"); 2324 Name = "parameterFileName",
2353 resourceRow.Set(4, parameterFile); 2325 Value = parameterFile,
2354 resourceRow.Set(5, 4 | 0x00001000); //bulk write | preserve modified date 2326 Flags = 4 | 0x00001000, //bulk write | preserve modified date
2355 resourceRow.Set(6, componentId); 2327 ComponentRef = componentId,
2328 };
2329 section.Tuples.Add(xmlTuple);
2356 } 2330 }
2357 if (null != resourceFile) 2331 if (null != resourceFile)
2358 { 2332 {
2359 var resourceRow = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile"); 2333 var xmlTuple = new XmlFileTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, $"Config_{fileId}ResourceFile"))
2360 resourceRow.Set(0, String.Concat("Config_", fileId, "ResourceFile")); 2334 {
2361 resourceRow.Set(1, $"[#{fileId}]"); 2335 File = $"[#{fileId}]",
2362 resourceRow.Set(2, "/*/*/*/*[\\[]@resourceFileName[\\]]"); 2336 ElementPath = "/*/*/*/*[\\[]@resourceFileName[\\]]",
2363 resourceRow.Set(3, "resourceFileName"); 2337 Name = "resourceFileName",
2364 resourceRow.Set(4, resourceFile); 2338 Value = resourceFile,
2365 resourceRow.Set(5, 4 | 0x00001000); //bulk write | preserve modified date 2339 Flags = 4 | 0x00001000, //bulk write | preserve modified date
2366 resourceRow.Set(6, componentId); 2340 ComponentRef = componentId,
2341 };
2342 section.Tuples.Add(xmlTuple);
2367 } 2343 }
2368 2344
2369 } 2345 }
2370 2346
2371 if (this.Context.Platform == Platform.ARM) 2347 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureEventManifestRegister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2372 { 2348 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureEventManifestUnregister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2373 // Ensure ARM version of the CA is referenced
2374 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureEventManifestRegister_ARM");
2375 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureEventManifestUnregister_ARM");
2376 }
2377 else
2378 {
2379 // All other supported platforms use x86
2380 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureEventManifestRegister");
2381 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureEventManifestUnregister");
2382 }
2383 2349
2384 if (null != messageFile || null != parameterFile || null != resourceFile) 2350 if (null != messageFile || null != parameterFile || null != resourceFile)
2385 { 2351 {
2386 if (this.Context.Platform == Platform.ARM) 2352 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlFile", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2387 {
2388 // Ensure ARM version of the CA is referenced
2389 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedXmlFile_ARM");
2390 }
2391 else
2392 {
2393 // All other supported platforms use x86
2394 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedXmlFile");
2395 }
2396 } 2353 }
2397 } 2354 }
2398 2355
@@ -2493,36 +2450,18 @@ namespace WixToolset.Util
2493 2450
2494 if (!this.Messaging.EncounteredError) 2451 if (!this.Messaging.EncounteredError)
2495 { 2452 {
2496 if (win64) 2453 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedSecureObjects", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X64 | CustomActionPlatforms.X86);
2497 { 2454
2498 if (this.Context.Platform == Platform.IA64) 2455 var tuple = new SecureObjectsTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, objectId))
2499 {
2500 this.Messaging.Write(ErrorMessages.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", element.Name.LocalName));
2501 }
2502 else
2503 {
2504 // Ensure SchedSecureObjects (x64) is referenced
2505 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedSecureObjects_x64");
2506 }
2507 }
2508 else if (this.Context.Platform == Platform.ARM)
2509 {
2510 // Ensure SchedSecureObjects (arm) is referenced
2511 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedSecureObjects_ARM");
2512 }
2513 else
2514 { 2456 {
2515 // Ensure SchedSecureObjects (x86) is referenced, to handle this x86 component member 2457 Table = tableName,
2516 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedSecureObjects"); 2458 Domain = domain,
2517 } 2459 User = user,
2460 Permission = permission,
2461 ComponentRef = componentId,
2462 };
2518 2463
2519 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "SecureObjects"); 2464 section.Tuples.Add(tuple);
2520 row.Set(0, objectId);
2521 row.Set(1, tableName);
2522 row.Set(2, domain);
2523 row.Set(3, user);
2524 row.Set(4, permission);
2525 row.Set(5, componentId);
2526 } 2465 }
2527 } 2466 }
2528 2467
@@ -2881,13 +2820,18 @@ namespace WixToolset.Util
2881 2820
2882 if (!this.Messaging.EncounteredError) 2821 if (!this.Messaging.EncounteredError)
2883 { 2822 {
2884 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixRemoveFolderEx", id); 2823 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "RemoveFoldersEx", this.Context.Platform, CustomActionPlatforms.X86);
2885 row.Set(1, componentId); 2824
2886 row.Set(2, property); 2825 var tuple = new WixRemoveFolderExTuple(sourceLineNumbers)
2887 row.Set(3, on); 2826 {
2827 ComponentRef = componentId,
2828 Property = property,
2829 InstallMode = (int)on,
2830 };
2831
2832 section.Tuples.Add(tuple);
2888 2833
2889 this.ParseHelper.EnsureTable(section, sourceLineNumbers, "RemoveFile"); 2834 this.ParseHelper.EnsureTable(section, sourceLineNumbers, "RemoveFile");
2890 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixRemoveFoldersEx");
2891 } 2835 }
2892 } 2836 }
2893 2837
@@ -2954,22 +2898,16 @@ namespace WixToolset.Util
2954 2898
2955 if (!this.Messaging.EncounteredError) 2899 if (!this.Messaging.EncounteredError)
2956 { 2900 {
2957 // Add a reference to the WixRegisterRestartResources custom action since nothing will happen without it. 2901 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "RegisterRestartResources", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2958 if (this.Context.Platform == Platform.ARM) 2902
2959 { 2903 var tuple = new WixRestartResourceTuple(sourceLineNumbers)
2960 // Ensure ARM version of the CA is referenced
2961 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixRegisterRestartResources_ARM");
2962 }
2963 else
2964 { 2904 {
2965 // All other supported platforms use x86 2905 ComponentRef = componentId,
2966 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixRegisterRestartResources"); 2906 Resource = resource,
2967 } 2907 Attributes = attributes,
2908 };
2968 2909
2969 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixRestartResource", id); 2910 section.Tuples.Add(tuple);
2970 row.Set(1, componentId);
2971 row.Set(2, resource);
2972 row.Set(3, attributes);
2973 } 2911 }
2974 } 2912 }
2975 2913
@@ -3052,38 +2990,25 @@ namespace WixToolset.Util
3052 2990
3053 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 2991 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
3054 2992
3055 // Reference SchedServiceConfig since nothing will happen without it
3056 if (this.Context.Platform == Platform.ARM)
3057 {
3058 // Ensure ARM version of the CA is referenced
3059 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedServiceConfig_ARM");
3060 }
3061 else
3062 {
3063 // All other supported platforms use x86
3064 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedServiceConfig");
3065 }
3066
3067 if (!this.Messaging.EncounteredError) 2993 if (!this.Messaging.EncounteredError)
3068 { 2994 {
3069 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "ServiceConfig"); 2995 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedServiceConfig", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3070 row.Set(0, serviceName);
3071 row.Set(1, componentId);
3072 row.Set(2, (newService ? 1 : 0));
3073 row.Set(3, firstFailureActionType);
3074 row.Set(4, secondFailureActionType);
3075 row.Set(5, thirdFailureActionType);
3076 if (CompilerConstants.IntegerNotSet != resetPeriod)
3077 {
3078 row.Set(6, resetPeriod);
3079 }
3080 2996
3081 if (CompilerConstants.IntegerNotSet != restartServiceDelay) 2997 var tuple = new ServiceConfigTuple(sourceLineNumbers)
3082 { 2998 {
3083 row.Set(7, restartServiceDelay); 2999 ServiceName = serviceName,
3084 } 3000 ComponentRef = componentId,
3085 row.Set(8, programCommandLine); 3001 NewService = newService ? 1 : 0,
3086 row.Set(9, rebootMessage); 3002 FirstFailureActionType = firstFailureActionType,
3003 SecondFailureActionType = secondFailureActionType,
3004 ThirdFailureActionType = thirdFailureActionType,
3005 ResetPeriodInDays = resetPeriod,
3006 RestartServiceDelayInSeconds = restartServiceDelay,
3007 ProgramCommandLine = programCommandLine,
3008 RebootMessage = rebootMessage,
3009 };
3010
3011 section.Tuples.Add(tuple);
3087 } 3012 }
3088 } 3013 }
3089 3014
@@ -3166,12 +3091,16 @@ namespace WixToolset.Util
3166 3091
3167 if (!this.Messaging.EncounteredError) 3092 if (!this.Messaging.EncounteredError)
3168 { 3093 {
3169 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "WixTouchFile", id); 3094 var tuple = new WixTouchFileTuple(sourceLineNumbers)
3170 row.Set(1, componentId); 3095 {
3171 row.Set(2, path); 3096 ComponentRef = componentId,
3172 row.Set(3, attributes); 3097 Path = path,
3098 Attributes = attributes,
3099 };
3100
3101 section.Tuples.Add(tuple);
3173 3102
3174 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "WixTouchFileDuringInstall"); 3103 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "TouchFileDuringInstall", this.Context.Platform, CustomActionPlatforms.X86);
3175 } 3104 }
3176 } 3105 }
3177 3106
@@ -3375,27 +3304,21 @@ namespace WixToolset.Util
3375 3304
3376 if (null != componentId) 3305 if (null != componentId)
3377 { 3306 {
3378 // Reference ConfigureIIs since nothing will happen without it 3307 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureUsers", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3379 if (this.Context.Platform == Platform.ARM)
3380 {
3381 // Ensure ARM version of the CA is referenced
3382 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureUsers_ARM");
3383 }
3384 else
3385 {
3386 // All other supported platforms use x86
3387 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureUsers");
3388 }
3389 } 3308 }
3390 3309
3391 if (!this.Messaging.EncounteredError) 3310 if (!this.Messaging.EncounteredError)
3392 { 3311 {
3393 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "User", id); 3312 var tuple = new UserTuple(sourceLineNumbers, id)
3394 row.Set(1, componentId); 3313 {
3395 row.Set(2, name); 3314 ComponentRef = componentId,
3396 row.Set(3, domain); 3315 Name = name,
3397 row.Set(4, password); 3316 Domain = domain,
3398 row.Set(5, attributes); 3317 Password = password,
3318 Attributes = attributes,
3319 };
3320
3321 section.Tuples.Add(tuple);
3399 } 3322 }
3400 } 3323 }
3401 3324
@@ -3407,7 +3330,7 @@ namespace WixToolset.Util
3407 private void ParseXmlFileElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId) 3330 private void ParseXmlFileElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId)
3408 { 3331 {
3409 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 3332 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
3410 string id = null; 3333 Identifier id = null;
3411 string file = null; 3334 string file = null;
3412 string elementPath = null; 3335 string elementPath = null;
3413 string name = null; 3336 string name = null;
@@ -3458,7 +3381,7 @@ namespace WixToolset.Util
3458 } 3381 }
3459 break; 3382 break;
3460 case "Id": 3383 case "Id":
3461 id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3384 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
3462 break; 3385 break;
3463 case "File": 3386 case "File":
3464 file = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 3387 file = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
@@ -3522,31 +3445,23 @@ namespace WixToolset.Util
3522 3445
3523 if (!this.Messaging.EncounteredError) 3446 if (!this.Messaging.EncounteredError)
3524 { 3447 {
3525 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlFile"); 3448 var tuple = new XmlFileTuple(sourceLineNumbers, id)
3526 row.Set(0, id); 3449 {
3527 row.Set(1, file); 3450 File = file,
3528 row.Set(2, elementPath); 3451 ElementPath = elementPath,
3529 row.Set(3, name); 3452 Name = name,
3530 row.Set(4, value); 3453 Value = value,
3531 row.Set(5, flags); 3454 Flags = flags,
3532 row.Set(6, componentId); 3455 ComponentRef = componentId,
3456 };
3533 if (-1 != sequence) 3457 if (-1 != sequence)
3534 { 3458 {
3535 row.Set(7, sequence); 3459 tuple.Sequence = sequence;
3536 } 3460 }
3461 section.Tuples.Add(tuple);
3537 } 3462 }
3538 3463
3539 // Reference SchedXmlFile since nothing will happen without it 3464 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlFile", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3540 if (this.Context.Platform == Platform.ARM)
3541 {
3542 // Ensure ARM version of the CA is referenced
3543 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedXmlFile_ARM");
3544 }
3545 else
3546 {
3547 // All other supported platforms use x86
3548 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedXmlFile");
3549 }
3550 } 3465 }
3551 3466
3552 /// <summary> 3467 /// <summary>
@@ -3558,7 +3473,7 @@ namespace WixToolset.Util
3558 private void ParseXmlConfigElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, bool nested) 3473 private void ParseXmlConfigElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, bool nested)
3559 { 3474 {
3560 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 3475 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
3561 string id = null; 3476 Identifier id = null;
3562 string elementId = null; 3477 string elementId = null;
3563 string elementPath = null; 3478 string elementPath = null;
3564 int flags = 0; 3479 int flags = 0;
@@ -3575,7 +3490,7 @@ namespace WixToolset.Util
3575 switch (attrib.Name.LocalName) 3490 switch (attrib.Name.LocalName)
3576 { 3491 {
3577 case "Id": 3492 case "Id":
3578 id = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3493 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
3579 break; 3494 break;
3580 case "Action": 3495 case "Action":
3581 if (nested) 3496 if (nested)
@@ -3760,32 +3675,24 @@ namespace WixToolset.Util
3760 3675
3761 if (!this.Messaging.EncounteredError) 3676 if (!this.Messaging.EncounteredError)
3762 { 3677 {
3763 var row = this.ParseHelper.CreateTuple(section, sourceLineNumbers, "XmlConfig"); 3678 var tuple = new XmlConfigTuple(sourceLineNumbers, id)
3764 row.Set(0, id); 3679 {
3765 row.Set(1, file); 3680 File=file,
3766 row.Set(2, elementId ?? elementPath); 3681 ElementPath=elementId ??elementPath,
3767 row.Set(3, verifyPath); 3682 VerifyPath=verifyPath,
3768 row.Set(4, name); 3683 Name=name,
3769 row.Set(5, value); 3684 Value=value,
3770 row.Set(6, flags); 3685 Flags=flags,
3771 row.Set(7, componentId); 3686 ComponentRef=componentId,
3687 };
3772 if (CompilerConstants.IntegerNotSet != sequence) 3688 if (CompilerConstants.IntegerNotSet != sequence)
3773 { 3689 {
3774 row.Set(8, sequence); 3690 tuple.Sequence = sequence;
3775 } 3691 }
3692 section.Tuples.Add(tuple);
3776 } 3693 }
3777 3694
3778 // Reference SchedXmlConfig since nothing will happen without it 3695 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlConfig", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3779 if (this.Context.Platform == Platform.ARM)
3780 {
3781 // Ensure ARM version of the CA is referenced
3782 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedXmlConfig_ARM");
3783 }
3784 else
3785 {
3786 // All other supported platforms use x86
3787 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "SchedXmlConfig");
3788 }
3789 } 3696 }
3790 3697
3791 /// <summary> 3698 /// <summary>
diff --git a/src/wixext/UtilWindowsInstallerBackendExtension.cs b/src/wixext/UtilWindowsInstallerBackendExtension.cs
index 2365ed01..8648cb17 100644
--- a/src/wixext/UtilWindowsInstallerBackendExtension.cs
+++ b/src/wixext/UtilWindowsInstallerBackendExtension.cs
@@ -5,6 +5,7 @@ namespace WixToolset.Util
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Linq; 6 using System.Linq;
7 using System.Xml; 7 using System.Xml;
8 using WixToolset.Data;
8 using WixToolset.Data.WindowsInstaller; 9 using WixToolset.Data.WindowsInstaller;
9 using WixToolset.Extensibility; 10 using WixToolset.Extensibility;
10 11
@@ -14,6 +15,12 @@ namespace WixToolset.Util
14 15
15 public override IEnumerable<TableDefinition> TableDefinitions { get => Tables; } 16 public override IEnumerable<TableDefinition> TableDefinitions { get => Tables; }
16 17
18 public override bool TryAddTupleToOutput(IntermediateTuple tuple, WindowsInstallerData output)
19 {
20 var columnZeroIsId = tuple.Id != null;
21 return this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, this.TableDefinitions, columnZeroIsId);
22 }
23
17 private static TableDefinition[] LoadTables() 24 private static TableDefinition[] LoadTables()
18 { 25 {
19 using (var resourceStream = typeof(UtilWindowsInstallerBackendBinderExtension).Assembly.GetManifestResourceStream("WixToolset.Util.tables.xml")) 26 using (var resourceStream = typeof(UtilWindowsInstallerBackendBinderExtension).Assembly.GetManifestResourceStream("WixToolset.Util.tables.xml"))
diff --git a/src/wixext/WixToolset.Util.wixext.csproj b/src/wixext/WixToolset.Util.wixext.csproj
index ed5a6a0f..3cd7b115 100644
--- a/src/wixext/WixToolset.Util.wixext.csproj
+++ b/src/wixext/WixToolset.Util.wixext.csproj
@@ -19,6 +19,7 @@
19 </ItemGroup> 19 </ItemGroup>
20 20
21 <ItemGroup> 21 <ItemGroup>
22 <PackageReference Include="WixToolset.Core" Version="4.0.*" PrivateAssets="all" />
22 <PackageReference Include="WixToolset.Data" Version="4.0.*" PrivateAssets="all" /> 23 <PackageReference Include="WixToolset.Data" Version="4.0.*" PrivateAssets="all" />
23 <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" PrivateAssets="all" /> 24 <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" PrivateAssets="all" />
24 </ItemGroup> 25 </ItemGroup>
diff --git a/src/wixext/tables.xml b/src/wixext/tables.xml
index 9f491e56..b8d4246c 100644
--- a/src/wixext/tables.xml
+++ b/src/wixext/tables.xml
@@ -3,8 +3,8 @@
3 3
4 4
5<tableDefinitions xmlns="http://wixtoolset.org/schemas/v4/wi/tables"> 5<tableDefinitions xmlns="http://wixtoolset.org/schemas/v4/wi/tables">
6 <tableDefinition name="WixCloseApplication"> 6 <tableDefinition name="Wix4CloseApplication" tupleDefinitionName="WixCloseApplication">
7 <columnDefinition name="WixCloseApplication" type="string" length="72" primaryKey="yes" modularize="column" 7 <columnDefinition name="Wix4CloseApplication" type="string" length="72" primaryKey="yes" modularize="column"
8 category="identifier" description="Primary key, non-localized token in table."/> 8 category="identifier" description="Primary key, non-localized token in table."/>
9 <columnDefinition name="Target" type="localized" length="0" modularize="property" 9 <columnDefinition name="Target" type="localized" length="0" modularize="property"
10 category="formatted" description="Name of executable to ensure is closed."/> 10 category="formatted" description="Name of executable to ensure is closed."/>
@@ -23,8 +23,8 @@
23 <columnDefinition name="Timeout" type="number" length="4" nullable="yes" 23 <columnDefinition name="Timeout" type="number" length="4" nullable="yes"
24 minValue="1" maxValue="2147483647" description="Timeout in milliseconds before scheduling restart or terminating application."/> 24 minValue="1" maxValue="2147483647" description="Timeout in milliseconds before scheduling restart or terminating application."/>
25 </tableDefinition> 25 </tableDefinition>
26 <tableDefinition name="WixRemoveFolderEx" createSymbols="yes"> 26 <tableDefinition name="Wix4RemoveFolderEx" tupleDefinitionName="WixRemoveFolderEx" createSymbols="yes">
27 <columnDefinition name="WixRemoveFolderEx" type="string" length="72" primaryKey="yes" modularize="column" 27 <columnDefinition name="Wix4RemoveFolderEx" type="string" length="72" primaryKey="yes" modularize="column"
28 category="identifier" description="Identifier for the WixRemoveFolderEx row in the package."/> 28 category="identifier" description="Identifier for the WixRemoveFolderEx row in the package."/>
29 <columnDefinition name="Component_" type="string" length="72" modularize="column" 29 <columnDefinition name="Component_" type="string" length="72" modularize="column"
30 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/> 30 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
@@ -33,8 +33,8 @@
33 <columnDefinition name="InstallMode" type="number" length="2" 33 <columnDefinition name="InstallMode" type="number" length="2"
34 minValue="1" maxValue="3" description="1 == Remove only when the associated component is being installed (msiInstallStateLocal or msiInstallStateSource), 2 == Remove only when the associated component is being removed (msiInstallStateAbsent), 3 = Remove in either of the above cases."/> 34 minValue="1" maxValue="3" description="1 == Remove only when the associated component is being installed (msiInstallStateLocal or msiInstallStateSource), 2 == Remove only when the associated component is being removed (msiInstallStateAbsent), 3 = Remove in either of the above cases."/>
35 </tableDefinition> 35 </tableDefinition>
36 <tableDefinition name="WixRestartResource"> 36 <tableDefinition name="Wix4RestartResource" tupleDefinitionName="WixRestartResource">
37 <columnDefinition name="WixRestartResource" type="string" length="72" primaryKey="yes" modularize="column" 37 <columnDefinition name="Wix4RestartResource" type="string" length="72" primaryKey="yes" modularize="column"
38 category="identifier" description="Primary key, non-localized identifier."/> 38 category="identifier" description="Primary key, non-localized identifier."/>
39 <columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column" 39 <columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column"
40 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state."/> 40 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state."/>
@@ -43,8 +43,8 @@
43 <columnDefinition name="Attributes" type="number" length="4" 43 <columnDefinition name="Attributes" type="number" length="4"
44 minValue="0" maxValue="2147483647" description="A 32-bit word that specifies the type of resource and flags used for processing."/> 44 minValue="0" maxValue="2147483647" description="A 32-bit word that specifies the type of resource and flags used for processing."/>
45 </tableDefinition> 45 </tableDefinition>
46 <tableDefinition name="FileShare" createSymbols="yes"> 46 <tableDefinition name="Wix4FileShare" tupleDefinitionName="FileShare" createSymbols="yes">
47 <columnDefinition name="FileShare" type="string" length="72" primaryKey="yes" modularize="column" 47 <columnDefinition name="Wix4FileShare" type="string" length="72" primaryKey="yes" modularize="column"
48 category="identifier" description="Primary key, non-localized identifier"/> 48 category="identifier" description="Primary key, non-localized identifier"/>
49 <columnDefinition name="ShareName" type="string" length="255" 49 <columnDefinition name="ShareName" type="string" length="255"
50 category="formatted" description="The actual share name used"/> 50 category="formatted" description="The actual share name used"/>
@@ -54,21 +54,17 @@
54 category="text" description="Description string displayed for the file share"/> 54 category="text" description="Description string displayed for the file share"/>
55 <columnDefinition name="Directory_" type="string" length="72" modularize="column" 55 <columnDefinition name="Directory_" type="string" length="72" modularize="column"
56 keyTable="Directory" keyColumn="1" category="identifier" description="Foreign key referencing directory that the share is created on"/> 56 keyTable="Directory" keyColumn="1" category="identifier" description="Foreign key referencing directory that the share is created on"/>
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"/>
59 <columnDefinition name="Permissions" type="number" length="4" nullable="yes"
60 description="Permissions int, as in EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/>
61 </tableDefinition> 57 </tableDefinition>
62 <tableDefinition name="FileSharePermissions"> 58 <tableDefinition name="Wix4FileSharePermissions" tupleDefinitionName="FileSharePermissions">
63 <columnDefinition name="FileShare_" type="string" length="72" primaryKey="yes" modularize="column" 59 <columnDefinition name="Wix4FileShare_" type="string" length="72" primaryKey="yes" modularize="column"
64 keyTable="FileShare" keyColumn="1" category="identifier" description="FileShare that these premissions are to be applied to."/> 60 keyTable="FileShare" keyColumn="1" category="identifier" description="FileShare that these premissions are to be applied to."/>
65 <columnDefinition name="User_" type="string" length="72" primaryKey="yes" modularize="column" 61 <columnDefinition name="Wix4User_" type="string" length="72" primaryKey="yes" modularize="column"
66 category="identifier" description="User that these premissions are to apply to."/> 62 keyTable="Wix4User" category="identifier" description="User that these premissions are to apply to."/>
67 <columnDefinition name="Permissions" type="number" length="4" 63 <columnDefinition name="Permissions" type="number" length="4"
68 description="Permissions int, as in EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/> 64 description="Permissions int, as in EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/>
69 </tableDefinition> 65 </tableDefinition>
70 <tableDefinition name="Group" createSymbols="yes"> 66 <tableDefinition name="Wix4Group" tupleDefinitionName="Group" createSymbols="yes">
71 <columnDefinition name="Group" type="string" length="72" primaryKey="yes" modularize="column" 67 <columnDefinition name="Wix4Group" type="string" length="72" primaryKey="yes" modularize="column"
72 category="identifier" description="Primary key, non-localized token"/> 68 category="identifier" description="Primary key, non-localized token"/>
73 <columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column" 69 <columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column"
74 keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/> 70 keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/>
@@ -77,8 +73,8 @@
77 <columnDefinition name="Domain" type="string" length="255" nullable="yes" modularize="property" 73 <columnDefinition name="Domain" type="string" length="255" nullable="yes" modularize="property"
78 category="formatted" description="Group domain"/> 74 category="formatted" description="Group domain"/>
79 </tableDefinition> 75 </tableDefinition>
80 <tableDefinition name="WixInternetShortcut" createSymbols="yes"> 76 <tableDefinition name="Wix4InternetShortcut" tupleDefinitionName="WixInternetShortcut" createSymbols="yes">
81 <columnDefinition name="WixInternetShortcut" type="string" length="72" primaryKey="yes" modularize="column" 77 <columnDefinition name="Wix4InternetShortcut" type="string" length="72" primaryKey="yes" modularize="column"
82 category="identifier" description="Primary key, non-localized token in table."/> 78 category="identifier" description="Primary key, non-localized token in table."/>
83 <columnDefinition name="Component_" type="string" length="72" modularize="column" 79 <columnDefinition name="Component_" type="string" length="72" modularize="column"
84 keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/> 80 keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/>
@@ -95,8 +91,8 @@
95 <columnDefinition name="IconIndex" type="number" length="4" 91 <columnDefinition name="IconIndex" type="number" length="4"
96 nullable="yes" description="Index of the icon being referenced."/> 92 nullable="yes" description="Index of the icon being referenced."/>
97 </tableDefinition> 93 </tableDefinition>
98 <tableDefinition name="PerformanceCategory"> 94 <tableDefinition name="Wix4PerformanceCategory" tupleDefinitionName="PerformanceCategory">
99 <columnDefinition name="PerformanceCategory" type="string" length="72" primaryKey="yes" modularize="column" 95 <columnDefinition name="Wix4PerformanceCategory" type="string" length="72" primaryKey="yes" modularize="column"
100 category="identifier" description="Primary key, non-localized token in table."/> 96 category="identifier" description="Primary key, non-localized token in table."/>
101 <columnDefinition name="Component_" type="string" length="72" modularize="column" 97 <columnDefinition name="Component_" type="string" length="72" modularize="column"
102 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/> 98 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
@@ -107,7 +103,7 @@
107 <columnDefinition name="ConstantData" type="localized" length="0" escapeIdtCharacters="yes" 103 <columnDefinition name="ConstantData" type="localized" length="0" escapeIdtCharacters="yes"
108 category="text" description="Data that goes into the performance counter .h file."/> 104 category="text" description="Data that goes into the performance counter .h file."/>
109 </tableDefinition> 105 </tableDefinition>
110 <tableDefinition name="Perfmon"> 106 <tableDefinition name="Wix4Perfmon" tupleDefinitionName="Perfmon">
111 <columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column" 107 <columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column"
112 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/> 108 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
113 <columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property" 109 <columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property"
@@ -115,7 +111,7 @@
115 <columnDefinition name="Name" type="string" length="72" primaryKey="yes" 111 <columnDefinition name="Name" type="string" length="72" primaryKey="yes"
116 category="text" description="Service name in registry"/> 112 category="text" description="Service name in registry"/>
117 </tableDefinition> 113 </tableDefinition>
118 <tableDefinition name="PerfmonManifest"> 114 <tableDefinition name="Wix4PerfmonManifest" tupleDefinitionName="PerfmonManifest">
119 <columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column" 115 <columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column"
120 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/> 116 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
121 <columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property" 117 <columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property"
@@ -123,27 +119,27 @@
123 <columnDefinition name="ResourceFileDirectory" type="string" length="255" primaryKey="yes" 119 <columnDefinition name="ResourceFileDirectory" type="string" length="255" primaryKey="yes"
124 category="formatted" description="The path of the Resource File Directory"/> 120 category="formatted" description="The path of the Resource File Directory"/>
125 </tableDefinition> 121 </tableDefinition>
126 <tableDefinition name="EventManifest"> 122 <tableDefinition name="Wix4EventManifest" tupleDefinitionName="EventManifest">
127 <columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column" 123 <columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column"
128 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/> 124 keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
129 <columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property" 125 <columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property"
130 category="formatted" description="Name of event manifest file"/> 126 category="formatted" description="Name of event manifest file"/>
131 </tableDefinition> 127 </tableDefinition>
132 <tableDefinition name="SecureObjects"> 128 <tableDefinition name="Wix4SecureObject" tupleDefinitionName="SecureObjects">
133 <columnDefinition name="SecureObject" type="string" length="72" primaryKey="yes" modularize="column" 129 <columnDefinition name="Wix4SecureObject" type="string" length="72" primaryKey="yes" modularize="column"
134 category="identifier" description="Primary key, non-localized token in Table"/> 130 category="identifier" description="Primary key, non-localized token in Table"/>
135 <columnDefinition name="Table" type="string" length="32" primaryKey="yes" 131 <columnDefinition name="Table" type="string" length="32" primaryKey="yes"
136 category="text" description="Table SecureObject should be securing"/> 132 category="text" description="Table SecureObject should be securing"/>
137 <columnDefinition name="Domain" type="string" length="255" primaryKey="yes" nullable="yes" modularize="property" 133 <columnDefinition name="Domain" type="string" length="255" primaryKey="yes" nullable="yes" modularize="property"
138 category="text" description="Domain half of user account to secure"/> 134 category="text" description="Domain half of user account to secure"/>
139 <columnDefinition name="User" type="string" length="255" primaryKey="yes" modularize="property" 135 <columnDefinition name="User" type="string" length="255" primaryKey="yes" modularize="property"
140 category="text" description="Username half of user account to secure"/> 136 category="text" description="User name half of user account to secure"/>
141 <columnDefinition name="Permission" type="number" length="4" nullable="yes" 137 <columnDefinition name="Permission" type="number" length="4" nullable="yes"
142 minValue="-2147483647" maxValue="2147483647" description="Permissions to grant to User"/> 138 minValue="-2147483647" maxValue="2147483647" description="Permissions to grant to User"/>
143 <columnDefinition name="Component_" type="string" length="72" modularize="column" 139 <columnDefinition name="Component_" type="string" length="72" modularize="column"
144 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/> 140 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
145 </tableDefinition> 141 </tableDefinition>
146 <tableDefinition name="ServiceConfig"> 142 <tableDefinition name="Wix4ServiceConfig" tupleDefinitionName="ServiceConfig">
147 <columnDefinition name="ServiceName" type="string" length="72" primaryKey="yes" 143 <columnDefinition name="ServiceName" type="string" length="72" primaryKey="yes"
148 category="formatted" description="Primary key, non-localized token"/> 144 category="formatted" description="Primary key, non-localized token"/>
149 <columnDefinition name="Component_" type="string" length="72" modularize="column" 145 <columnDefinition name="Component_" type="string" length="72" modularize="column"
@@ -165,9 +161,9 @@
165 <columnDefinition name="RebootMessage" type="string" length="255" nullable="yes" 161 <columnDefinition name="RebootMessage" type="string" length="255" nullable="yes"
166 category="text" description="Message to show to users when rebooting if failure action is REBOOT."/> 162 category="text" description="Message to show to users when rebooting if failure action is REBOOT."/>
167 </tableDefinition> 163 </tableDefinition>
168 <tableDefinition name="WixTouchFile" createSymbols="yes"> 164 <tableDefinition name="Wix4TouchFile" tupleDefinitionName="WixTouchFile" createSymbols="yes">
169 <columnDefinition name="WixTouchFile" type="string" length="72" primaryKey="yes" modularize="column" 165 <columnDefinition name="Wix4TouchFile" type="string" length="72" primaryKey="yes" modularize="column"
170 category="identifier" description="Identifier for the WixTouchFile row in the package."/> 166 category="identifier" description="Identifier for the Wix4TouchFile row in the package."/>
171 <columnDefinition name="Component_" type="string" length="72" modularize="column" 167 <columnDefinition name="Component_" type="string" length="72" modularize="column"
172 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/> 168 keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
173 <columnDefinition name="Path" type="string" length="255" modularize="property" 169 <columnDefinition name="Path" type="string" length="255" modularize="property"
@@ -175,8 +171,8 @@
175 <columnDefinition name="Attributes" type="number" length="2" 171 <columnDefinition name="Attributes" type="number" length="2"
176 minValue="1" maxValue="63" description="1 == Touch only when the associated component is being installed, 2 == Touch only when the associated component is being repaired , 4 == Touch only when the associated component is being removed, 16 = path is in 64-bit location, 32 = touching the file is vital."/> 172 minValue="1" maxValue="63" description="1 == Touch only when the associated component is being installed, 2 == Touch only when the associated component is being repaired , 4 == Touch only when the associated component is being removed, 16 = path is in 64-bit location, 32 = touching the file is vital."/>
177 </tableDefinition> 173 </tableDefinition>
178 <tableDefinition name="User" createSymbols="yes"> 174 <tableDefinition name="Wix4User" tupleDefinitionName="User" createSymbols="yes">
179 <columnDefinition name="User" type="string" length="72" primaryKey="yes" modularize="column" 175 <columnDefinition name="Wix4User" type="string" length="72" primaryKey="yes" modularize="column"
180 category="identifier" description="Primary key, non-localized token"/> 176 category="identifier" description="Primary key, non-localized token"/>
181 <columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column" 177 <columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column"
182 keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/> 178 keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/>
@@ -189,14 +185,14 @@
189 <columnDefinition name="Attributes" type="number" length="4" nullable="yes" 185 <columnDefinition name="Attributes" type="number" length="4" nullable="yes"
190 minValue="0" maxValue="65535" description="Attributes describing how to create the user"/> 186 minValue="0" maxValue="65535" description="Attributes describing how to create the user"/>
191 </tableDefinition> 187 </tableDefinition>
192 <tableDefinition name="UserGroup"> 188 <tableDefinition name="Wix4UserGroup" tupleDefinitionName="UserGroup">
193 <columnDefinition name="User_" type="string" length="72" primaryKey="yes" modularize="column" 189 <columnDefinition name="Wix4User_" type="string" length="72" primaryKey="yes" modularize="column"
194 keyTable="User" keyColumn="1" category="identifier" description="User to be joined to a Group."/> 190 keyTable="Wix4User" keyColumn="1" category="identifier" description="User to be joined to a Group."/>
195 <columnDefinition name="Group_" type="string" length="72" primaryKey="yes" modularize="column" 191 <columnDefinition name="Wix4Group_" type="string" length="72" primaryKey="yes" modularize="column"
196 keyTable="Group" keyColumn="1" category="identifier" description="User to be joined to a Group."/> 192 keyTable="Wix4Group" keyColumn="1" category="identifier" description="Group to join User to."/>
197 </tableDefinition> 193 </tableDefinition>
198 <tableDefinition name="XmlFile"> 194 <tableDefinition name="Wix4XmlFile" tupleDefinitionName="XmlFile">
199 <columnDefinition name="XmlFile" type="string" length="72" primaryKey="yes" modularize="column" 195 <columnDefinition name="Wix4XmlFile" type="string" length="72" primaryKey="yes" modularize="column"
200 category="identifier" description="Primary key, non-localized token."/> 196 category="identifier" description="Primary key, non-localized token."/>
201 <columnDefinition name="File" type="localized" length="255" modularize="property" 197 <columnDefinition name="File" type="localized" length="255" modularize="property"
202 category="formatted" description="The .XML file in which to write the information"/> 198 category="formatted" description="The .XML file in which to write the information"/>
@@ -213,13 +209,13 @@
213 <columnDefinition name="Sequence" type="number" length="2" nullable="yes" 209 <columnDefinition name="Sequence" type="number" length="2" nullable="yes"
214 description="Order to execute the XML modifications."/> 210 description="Order to execute the XML modifications."/>
215 </tableDefinition> 211 </tableDefinition>
216 <tableDefinition name="XmlConfig" createSymbols="yes"> 212 <tableDefinition name="Wix4XmlConfig" tupleDefinitionName="XmlConfig" createSymbols="yes">
217 <columnDefinition name="XmlConfig" type="string" length="72" primaryKey="yes" modularize="column" 213 <columnDefinition name="Wix4XmlConfig" type="string" length="72" primaryKey="yes" modularize="column"
218 category="identifier" description="Primary key, non-localized token."/> 214 category="identifier" description="Primary key, non-localized token."/>
219 <columnDefinition name="File" type="localized" length="255" modularize="property" 215 <columnDefinition name="File" type="localized" length="255" modularize="property"
220 category="formatted" description="The .XML file in which to write the information"/> 216 category="formatted" description="The .XML file in which to write the information"/>
221 <columnDefinition name="ElementPath" type="localized" length="0" modularize="property" 217 <columnDefinition name="ElementPath" type="localized" length="0" modularize="property"
222 category="formatted" description="The XPATH query for an element to modify or add children to. Can also be a foreign key reference to another XmlConfig row if no attributes are set and the row referenced is a create element row."/> 218 category="formatted" description="The XPATH query for an element to modify or add children to. Can also be a foreign key reference to another Wix4XmlConfig row if no attributes are set and the row referenced is a create element row."/>
223 <columnDefinition name="VerifyPath" type="localized" length="0" modularize="property" nullable="yes" 219 <columnDefinition name="VerifyPath" type="localized" length="0" modularize="property" nullable="yes"
224 category="formatted" description="The XPATH query run from ElementPath to verify whether a repair is necessary. Also used to uninstall."/> 220 category="formatted" description="The XPATH query run from ElementPath to verify whether a repair is necessary. Also used to uninstall."/>
225 <columnDefinition name="Name" type="localized" length="255" modularize="property" nullable="yes" 221 <columnDefinition name="Name" type="localized" length="255" modularize="property" nullable="yes"
@@ -233,7 +229,7 @@
233 <columnDefinition name="Sequence" type="number" length="2" nullable="yes" 229 <columnDefinition name="Sequence" type="number" length="2" nullable="yes"
234 description="Order to execute the XML modifications."/> 230 description="Order to execute the XML modifications."/>
235 </tableDefinition> 231 </tableDefinition>
236 <tableDefinition name="WixFormatFiles"> 232 <tableDefinition name="Wix4FormatFile" tupleDefinitionName="WixFormatFile">
237 <columnDefinition name="Binary_" type="string" length="72" primaryKey="yes" modularize="column" 233 <columnDefinition name="Binary_" type="string" length="72" primaryKey="yes" modularize="column"
238 keyTable="Binary" keyColumn="1" category="identifier" description="Binary data to be formatted."/> 234 keyTable="Binary" keyColumn="1" category="identifier" description="Binary data to be formatted."/>
239 <columnDefinition name="File_" type="string" length="72" primaryKey="yes" modularize="column" 235 <columnDefinition name="File_" type="string" length="72" primaryKey="yes" modularize="column"