aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs4
-rw-r--r--src/wixext/MsmqCompiler.cs98
-rw-r--r--src/wixext/MsmqTableDefinitions.cs64
-rw-r--r--src/wixext/MsmqWindowsInstallerBackendExtension.cs23
-rw-r--r--src/wixext/Tuples/MessageQueueGroupPermissionTuple.cs38
-rw-r--r--src/wixext/Tuples/MessageQueueTuple.cs18
-rw-r--r--src/wixext/Tuples/MessageQueueUserPermissionTuple.cs38
-rw-r--r--src/wixext/WixToolset.Msmq.wixext.csproj1
-rw-r--r--src/wixext/tables.xml54
9 files changed, 155 insertions, 183 deletions
diff --git a/src/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs b/src/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
index af64517d..057b0a9d 100644
--- a/src/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
+++ b/src/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
@@ -19,8 +19,8 @@ namespace WixToolsetTest.Msmq
19 var results = build.BuildAndQuery(Build, "MessageQueue"); 19 var results = build.BuildAndQuery(Build, "MessageQueue");
20 Assert.Equal(new[] 20 Assert.Equal(new[]
21 { 21 {
22 "MessageQueue:TestMQ\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\t0\t0\tMQLabel\t\tMQPath\t0\t0\t\t0", 22 "MessageQueue:TestMQ\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\t\t\tMQLabel\t\tMQPath\t\t\t\t0",
23 }, results.OrderBy(s => s).ToArray()); 23 }, results);
24 } 24 }
25 25
26 private static void Build(string[] args) 26 private static void Build(string[] args)
diff --git a/src/wixext/MsmqCompiler.cs b/src/wixext/MsmqCompiler.cs
index 5365f0fb..15c3f3ca 100644
--- a/src/wixext/MsmqCompiler.cs
+++ b/src/wixext/MsmqCompiler.cs
@@ -7,6 +7,7 @@ namespace WixToolset.Msmq
7 using System.Xml.Linq; 7 using System.Xml.Linq;
8 using WixToolset.Data; 8 using WixToolset.Data;
9 using WixToolset.Extensibility; 9 using WixToolset.Extensibility;
10 using WixToolset.Msmq.Tuples;
10 11
11 /// <summary> 12 /// <summary>
12 /// The compiler for the WiX Toolset MSMQ Extension. 13 /// The compiler for the WiX Toolset MSMQ Extension.
@@ -69,8 +70,8 @@ namespace WixToolset.Msmq
69 switch (parentElement.Name.LocalName) 70 switch (parentElement.Name.LocalName)
70 { 71 {
71 case "Component": 72 case "Component":
72 string componentId = context["ComponentId"]; 73 var componentId = context["ComponentId"];
73 string directoryId = context["DirectoryId"]; 74 var directoryId = context["DirectoryId"];
74 75
75 switch (element.Name.LocalName) 76 switch (element.Name.LocalName)
76 { 77 {
@@ -98,20 +99,20 @@ namespace WixToolset.Msmq
98 /// <param name="componentKey">Identifier of parent component.</param> 99 /// <param name="componentKey">Identifier of parent component.</param>
99 private void ParseMessageQueueElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentId) 100 private void ParseMessageQueueElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentId)
100 { 101 {
101 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node); 102 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
102 103
103 Identifier id = null; 104 Identifier id = null;
104 int basePriority = CompilerConstants.IntegerNotSet; 105 var basePriority = CompilerConstants.IntegerNotSet;
105 int journalQuota = CompilerConstants.IntegerNotSet; 106 var journalQuota = CompilerConstants.IntegerNotSet;
106 string label = null; 107 string label = null;
107 string multicastAddress = null; 108 string multicastAddress = null;
108 string pathName = null; 109 string pathName = null;
109 int privLevel = CompilerConstants.IntegerNotSet; 110 var privLevel = CompilerConstants.IntegerNotSet;
110 int quota = CompilerConstants.IntegerNotSet; 111 var quota = CompilerConstants.IntegerNotSet;
111 string serviceTypeGuid = null; 112 string serviceTypeGuid = null;
112 int attributes = 0; 113 int attributes = 0;
113 114
114 foreach (XAttribute attrib in node.Attributes()) 115 foreach (var attrib in node.Attributes())
115 { 116 {
116 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) 117 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
117 { 118 {
@@ -156,7 +157,7 @@ namespace WixToolset.Msmq
156 pathName = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 157 pathName = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
157 break; 158 break;
158 case "PrivLevel": 159 case "PrivLevel":
159 string privLevelAttr = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 160 var privLevelAttr = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
160 switch (privLevelAttr) 161 switch (privLevelAttr)
161 { 162 {
162 case "none": 163 case "none":
@@ -200,7 +201,7 @@ namespace WixToolset.Msmq
200 } 201 }
201 } 202 }
202 203
203 foreach (XElement child in node.Elements()) 204 foreach (var child in node.Elements())
204 { 205 {
205 if (this.Namespace == child.Name.Namespace) 206 if (this.Namespace == child.Name.Namespace)
206 { 207 {
@@ -220,32 +221,36 @@ namespace WixToolset.Msmq
220 } 221 }
221 } 222 }
222 223
223 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "MessageQueue", id); 224 var tuple = section.AddTuple(new MessageQueueTuple(sourceLineNumbers, id)
224 row.Set(1, componentId); 225 {
226 ComponentRef = componentId,
227 Label = label,
228 MulticastAddress = multicastAddress,
229 PathName = pathName,
230 ServiceTypeGuid = serviceTypeGuid,
231 Attributes = attributes,
232 });
233
225 if (CompilerConstants.IntegerNotSet != basePriority) 234 if (CompilerConstants.IntegerNotSet != basePriority)
226 { 235 {
227 row.Set(2, basePriority); 236 tuple.BasePriority = basePriority;
228 } 237 }
229 if (CompilerConstants.IntegerNotSet != journalQuota) 238 if (CompilerConstants.IntegerNotSet != journalQuota)
230 { 239 {
231 row.Set(3, journalQuota); 240 tuple.JournalQuota = journalQuota;
232 } 241 }
233 row.Set(4, label); 242
234 row.Set(5, multicastAddress);
235 row.Set(6, pathName);
236 if (CompilerConstants.IntegerNotSet != privLevel) 243 if (CompilerConstants.IntegerNotSet != privLevel)
237 { 244 {
238 row.Set(7, privLevel); 245 tuple.PrivLevel = privLevel;
239 } 246 }
240 if (CompilerConstants.IntegerNotSet != quota) 247 if (CompilerConstants.IntegerNotSet != quota)
241 { 248 {
242 row.Set(8, quota); 249 tuple.Quota = quota;
243 } 250 }
244 row.Set(9, serviceTypeGuid);
245 row.Set(10, attributes);
246 251
247 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "MessageQueuingInstall"); 252 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, TupleDefinitions.CustomAction, "MessageQueuingInstall");
248 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "MessageQueuingUninstall"); 253 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, TupleDefinitions.CustomAction, "MessageQueuingUninstall");
249 } 254 }
250 255
251 /// <summary> 256 /// <summary>
@@ -256,14 +261,14 @@ namespace WixToolset.Msmq
256 /// <param name="applicationKey">Optional identifier of parent message queue.</param> 261 /// <param name="applicationKey">Optional identifier of parent message queue.</param>
257 private void ParseMessageQueuePermissionElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentId, string messageQueueId) 262 private void ParseMessageQueuePermissionElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentId, string messageQueueId)
258 { 263 {
259 SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node); 264 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
260 265
261 Identifier id = null; 266 Identifier id = null;
262 string user = null; 267 string user = null;
263 string group = null; 268 string group = null;
264 int permissions = 0; 269 int permissions = 0;
265 270
266 foreach (XAttribute attrib in node.Attributes()) 271 foreach (var attrib in node.Attributes())
267 { 272 {
268 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) 273 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
269 { 274 {
@@ -278,7 +283,7 @@ namespace WixToolset.Msmq
278 this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName)); 283 this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
279 } 284 }
280 messageQueueId = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 285 messageQueueId = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
281 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "MessageQueue", messageQueueId); 286 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, MsmqTupleDefinitions.MessageQueue, messageQueueId);
282 break; 287 break;
283 case "User": 288 case "User":
284 if (null != group) 289 if (null != group)
@@ -467,6 +472,11 @@ namespace WixToolset.Msmq
467 } 472 }
468 } 473 }
469 474
475 if (null == id)
476 {
477 id = this.ParseHelper.CreateIdentifier("mqp", componentId, messageQueueId, user, group);
478 }
479
470 if (null == messageQueueId) 480 if (null == messageQueueId)
471 { 481 {
472 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "MessageQueue")); 482 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "MessageQueue"));
@@ -480,19 +490,23 @@ namespace WixToolset.Msmq
480 490
481 if (null != user) 491 if (null != user)
482 { 492 {
483 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "MessageQueueUserPermission", id); 493 section.AddTuple(new MessageQueueUserPermissionTuple(sourceLineNumbers, id)
484 row.Set(1, componentId); 494 {
485 row.Set(2, messageQueueId); 495 ComponentRef = componentId,
486 row.Set(3, user); 496 MessageQueueRef = messageQueueId,
487 row.Set(4, permissions); 497 UserRef = user,
498 Permissions = permissions,
499 });
488 } 500 }
489 if (null != group) 501 if (null != group)
490 { 502 {
491 var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "MessageQueueGroupPermission", id); 503 section.AddTuple(new MessageQueueGroupPermissionTuple(sourceLineNumbers, id)
492 row.Set(1, componentId); 504 {
493 row.Set(2, messageQueueId); 505 ComponentRef = componentId,
494 row.Set(3, group); 506 MessageQueueRef = messageQueueId,
495 row.Set(4, permissions); 507 GroupRef = group,
508 Permissions = permissions,
509 });
496 } 510 }
497 } 511 }
498 512
@@ -504,19 +518,11 @@ namespace WixToolset.Msmq
504 /// <returns></returns> 518 /// <returns></returns>
505 string TryFormatGuidValue(string val) 519 string TryFormatGuidValue(string val)
506 { 520 {
507 try 521 if (!Guid.TryParse(val, out var guid))
508 {
509 Guid guid = new Guid(val);
510 return guid.ToString("B").ToUpper();
511 }
512 catch (FormatException)
513 {
514 return val;
515 }
516 catch (OverflowException)
517 { 522 {
518 return val; 523 return val;
519 } 524 }
525 return guid.ToString("B").ToUpper();
520 } 526 }
521 } 527 }
522} 528}
diff --git a/src/wixext/MsmqTableDefinitions.cs b/src/wixext/MsmqTableDefinitions.cs
new file mode 100644
index 00000000..00149ffa
--- /dev/null
+++ b/src/wixext/MsmqTableDefinitions.cs
@@ -0,0 +1,64 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Msmq
4{
5 using WixToolset.Data.WindowsInstaller;
6
7 public static class MsmqTableDefinitions
8 {
9 public static readonly TableDefinition MessageQueue = new TableDefinition(
10 "MessageQueue",
11 new[]
12 {
13 new ColumnDefinition("MessageQueue", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, modularizeType: ColumnModularizeType.Column),
14 new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, modularizeType: ColumnModularizeType.Column),
15 new ColumnDefinition("BasePriority", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown),
16 new ColumnDefinition("JournalQuota", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown),
17 new ColumnDefinition("Label", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, modularizeType: ColumnModularizeType.Property),
18 new ColumnDefinition("MulticastAddress", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, modularizeType: ColumnModularizeType.Property),
19 new ColumnDefinition("PathName", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, modularizeType: ColumnModularizeType.Property),
20 new ColumnDefinition("PrivLevel", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown),
21 new ColumnDefinition("Quota", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown),
22 new ColumnDefinition("ServiceTypeGuid", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Formatted, modularizeType: ColumnModularizeType.Property),
23 new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown),
24 },
25 tupleDefinitionName: MsmqTupleDefinitions.MessageQueue.Name,
26 tupleIdIsPrimaryKey: true
27 );
28
29 public static readonly TableDefinition MessageQueueUserPermission = new TableDefinition(
30 "MessageQueueUserPermission",
31 new[]
32 {
33 new ColumnDefinition("MessageQueueUserPermission", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, modularizeType: ColumnModularizeType.Column),
34 new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, modularizeType: ColumnModularizeType.Column),
35 new ColumnDefinition("MessageQueue_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "MessageQueue", keyColumn: 1, modularizeType: ColumnModularizeType.Column),
36 new ColumnDefinition("User_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, modularizeType: ColumnModularizeType.Column),
37 new ColumnDefinition("Permissions", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown),
38 },
39 tupleDefinitionName: MsmqTupleDefinitions.MessageQueueUserPermission.Name,
40 tupleIdIsPrimaryKey: true
41 );
42
43 public static readonly TableDefinition MessageQueueGroupPermission = new TableDefinition(
44 "MessageQueueGroupPermission",
45 new[]
46 {
47 new ColumnDefinition("MessageQueueGroupPermission", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, modularizeType: ColumnModularizeType.Column),
48 new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, modularizeType: ColumnModularizeType.Column),
49 new ColumnDefinition("MessageQueue_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "MessageQueue", keyColumn: 1, modularizeType: ColumnModularizeType.Column),
50 new ColumnDefinition("Group_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, modularizeType: ColumnModularizeType.Column),
51 new ColumnDefinition("Permissions", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown),
52 },
53 tupleDefinitionName: MsmqTupleDefinitions.MessageQueueGroupPermission.Name,
54 tupleIdIsPrimaryKey: true
55 );
56
57 public static readonly TableDefinition[] All = new[]
58 {
59 MessageQueue,
60 MessageQueueUserPermission,
61 MessageQueueGroupPermission,
62 };
63 }
64}
diff --git a/src/wixext/MsmqWindowsInstallerBackendExtension.cs b/src/wixext/MsmqWindowsInstallerBackendExtension.cs
index 4debafeb..3f83db56 100644
--- a/src/wixext/MsmqWindowsInstallerBackendExtension.cs
+++ b/src/wixext/MsmqWindowsInstallerBackendExtension.cs
@@ -1,32 +1,13 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Msmq 3namespace WixToolset.Msmq
4{ 4{
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Linq;
7 using System.Xml;
8 using WixToolset.Data.WindowsInstaller; 6 using WixToolset.Data.WindowsInstaller;
9 using WixToolset.Extensibility; 7 using WixToolset.Extensibility;
10 8
11 public class MsmqWindowsInstallerBackendBinderExtension : BaseWindowsInstallerBackendBinderExtension 9 public class MsmqWindowsInstallerBackendBinderExtension : BaseWindowsInstallerBackendBinderExtension
12 { 10 {
13 public MsmqWindowsInstallerBackendBinderExtension() 11 public override IEnumerable<TableDefinition> TableDefinitions => MsmqTableDefinitions.All;
14 {
15
16 }
17
18 private static readonly TableDefinition[] Tables = LoadTables();
19
20 public override IEnumerable<TableDefinition> TableDefinitions => Tables;
21
22 private static TableDefinition[] LoadTables()
23 {
24 using (var resourceStream = typeof(MsmqWindowsInstallerBackendBinderExtension).Assembly.GetManifestResourceStream("WixToolset.Msmq.tables.xml"))
25 using (var reader = XmlReader.Create(resourceStream))
26 {
27 var tables = TableDefinitionCollection.Load(reader);
28 return tables.ToArray();
29 }
30 }
31 } 12 }
32} 13}
diff --git a/src/wixext/Tuples/MessageQueueGroupPermissionTuple.cs b/src/wixext/Tuples/MessageQueueGroupPermissionTuple.cs
index cc690f9a..0b1794fd 100644
--- a/src/wixext/Tuples/MessageQueueGroupPermissionTuple.cs
+++ b/src/wixext/Tuples/MessageQueueGroupPermissionTuple.cs
@@ -11,10 +11,9 @@ namespace WixToolset.Msmq
11 MsmqTupleDefinitionType.MessageQueueGroupPermission.ToString(), 11 MsmqTupleDefinitionType.MessageQueueGroupPermission.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.MessageQueueGroupPermission), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.Component_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.MessageQueueRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.MessageQueue_), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.GroupRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.Group_), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.Permissions), IntermediateFieldType.Number), 17 new IntermediateFieldDefinition(nameof(MessageQueueGroupPermissionTupleFields.Permissions), IntermediateFieldType.Number),
19 }, 18 },
20 typeof(MessageQueueGroupPermissionTuple)); 19 typeof(MessageQueueGroupPermissionTuple));
@@ -27,10 +26,9 @@ namespace WixToolset.Msmq.Tuples
27 26
28 public enum MessageQueueGroupPermissionTupleFields 27 public enum MessageQueueGroupPermissionTupleFields
29 { 28 {
30 MessageQueueGroupPermission, 29 ComponentRef,
31 Component_, 30 MessageQueueRef,
32 MessageQueue_, 31 GroupRef,
33 Group_,
34 Permissions, 32 Permissions,
35 } 33 }
36 34
@@ -46,28 +44,22 @@ namespace WixToolset.Msmq.Tuples
46 44
47 public IntermediateField this[MessageQueueGroupPermissionTupleFields index] => this.Fields[(int)index]; 45 public IntermediateField this[MessageQueueGroupPermissionTupleFields index] => this.Fields[(int)index];
48 46
49 public string MessageQueueGroupPermission 47 public string ComponentRef
50 { 48 {
51 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.MessageQueueGroupPermission].AsString(); 49 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.ComponentRef].AsString();
52 set => this.Set((int)MessageQueueGroupPermissionTupleFields.MessageQueueGroupPermission, value); 50 set => this.Set((int)MessageQueueGroupPermissionTupleFields.ComponentRef, value);
53 } 51 }
54 52
55 public string Component_ 53 public string MessageQueueRef
56 { 54 {
57 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.Component_].AsString(); 55 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.MessageQueueRef].AsString();
58 set => this.Set((int)MessageQueueGroupPermissionTupleFields.Component_, value); 56 set => this.Set((int)MessageQueueGroupPermissionTupleFields.MessageQueueRef, value);
59 } 57 }
60 58
61 public string MessageQueue_ 59 public string GroupRef
62 { 60 {
63 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.MessageQueue_].AsString(); 61 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.GroupRef].AsString();
64 set => this.Set((int)MessageQueueGroupPermissionTupleFields.MessageQueue_, value); 62 set => this.Set((int)MessageQueueGroupPermissionTupleFields.GroupRef, value);
65 }
66
67 public string Group_
68 {
69 get => this.Fields[(int)MessageQueueGroupPermissionTupleFields.Group_].AsString();
70 set => this.Set((int)MessageQueueGroupPermissionTupleFields.Group_, value);
71 } 63 }
72 64
73 public int Permissions 65 public int Permissions
diff --git a/src/wixext/Tuples/MessageQueueTuple.cs b/src/wixext/Tuples/MessageQueueTuple.cs
index 86f7f2a4..afbd1b7a 100644
--- a/src/wixext/Tuples/MessageQueueTuple.cs
+++ b/src/wixext/Tuples/MessageQueueTuple.cs
@@ -11,8 +11,7 @@ namespace WixToolset.Msmq
11 MsmqTupleDefinitionType.MessageQueue.ToString(), 11 MsmqTupleDefinitionType.MessageQueue.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.MessageQueue), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.Component_), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.BasePriority), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.BasePriority), IntermediateFieldType.Number),
17 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.JournalQuota), IntermediateFieldType.Number), 16 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.JournalQuota), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.Label), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(MessageQueueTupleFields.Label), IntermediateFieldType.String),
@@ -33,8 +32,7 @@ namespace WixToolset.Msmq.Tuples
33 32
34 public enum MessageQueueTupleFields 33 public enum MessageQueueTupleFields
35 { 34 {
36 MessageQueue, 35 ComponentRef,
37 Component_,
38 BasePriority, 36 BasePriority,
39 JournalQuota, 37 JournalQuota,
40 Label, 38 Label,
@@ -58,16 +56,10 @@ namespace WixToolset.Msmq.Tuples
58 56
59 public IntermediateField this[MessageQueueTupleFields index] => this.Fields[(int)index]; 57 public IntermediateField this[MessageQueueTupleFields index] => this.Fields[(int)index];
60 58
61 public string MessageQueue 59 public string ComponentRef
62 { 60 {
63 get => this.Fields[(int)MessageQueueTupleFields.MessageQueue].AsString(); 61 get => this.Fields[(int)MessageQueueTupleFields.ComponentRef].AsString();
64 set => this.Set((int)MessageQueueTupleFields.MessageQueue, value); 62 set => this.Set((int)MessageQueueTupleFields.ComponentRef, value);
65 }
66
67 public string Component_
68 {
69 get => this.Fields[(int)MessageQueueTupleFields.Component_].AsString();
70 set => this.Set((int)MessageQueueTupleFields.Component_, value);
71 } 63 }
72 64
73 public int BasePriority 65 public int BasePriority
diff --git a/src/wixext/Tuples/MessageQueueUserPermissionTuple.cs b/src/wixext/Tuples/MessageQueueUserPermissionTuple.cs
index 8c5e6ade..c6d5a45a 100644
--- a/src/wixext/Tuples/MessageQueueUserPermissionTuple.cs
+++ b/src/wixext/Tuples/MessageQueueUserPermissionTuple.cs
@@ -11,10 +11,9 @@ namespace WixToolset.Msmq
11 MsmqTupleDefinitionType.MessageQueueUserPermission.ToString(), 11 MsmqTupleDefinitionType.MessageQueueUserPermission.ToString(),
12 new[] 12 new[]
13 { 13 {
14 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.MessageQueueUserPermission), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.ComponentRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.Component_), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.MessageQueueRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.MessageQueue_), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.UserRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.User_), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.Permissions), IntermediateFieldType.Number), 17 new IntermediateFieldDefinition(nameof(MessageQueueUserPermissionTupleFields.Permissions), IntermediateFieldType.Number),
19 }, 18 },
20 typeof(MessageQueueUserPermissionTuple)); 19 typeof(MessageQueueUserPermissionTuple));
@@ -27,10 +26,9 @@ namespace WixToolset.Msmq.Tuples
27 26
28 public enum MessageQueueUserPermissionTupleFields 27 public enum MessageQueueUserPermissionTupleFields
29 { 28 {
30 MessageQueueUserPermission, 29 ComponentRef,
31 Component_, 30 MessageQueueRef,
32 MessageQueue_, 31 UserRef,
33 User_,
34 Permissions, 32 Permissions,
35 } 33 }
36 34
@@ -46,28 +44,22 @@ namespace WixToolset.Msmq.Tuples
46 44
47 public IntermediateField this[MessageQueueUserPermissionTupleFields index] => this.Fields[(int)index]; 45 public IntermediateField this[MessageQueueUserPermissionTupleFields index] => this.Fields[(int)index];
48 46
49 public string MessageQueueUserPermission 47 public string ComponentRef
50 { 48 {
51 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.MessageQueueUserPermission].AsString(); 49 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.ComponentRef].AsString();
52 set => this.Set((int)MessageQueueUserPermissionTupleFields.MessageQueueUserPermission, value); 50 set => this.Set((int)MessageQueueUserPermissionTupleFields.ComponentRef, value);
53 } 51 }
54 52
55 public string Component_ 53 public string MessageQueueRef
56 { 54 {
57 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.Component_].AsString(); 55 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.MessageQueueRef].AsString();
58 set => this.Set((int)MessageQueueUserPermissionTupleFields.Component_, value); 56 set => this.Set((int)MessageQueueUserPermissionTupleFields.MessageQueueRef, value);
59 } 57 }
60 58
61 public string MessageQueue_ 59 public string UserRef
62 { 60 {
63 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.MessageQueue_].AsString(); 61 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.UserRef].AsString();
64 set => this.Set((int)MessageQueueUserPermissionTupleFields.MessageQueue_, value); 62 set => this.Set((int)MessageQueueUserPermissionTupleFields.UserRef, value);
65 }
66
67 public string User_
68 {
69 get => this.Fields[(int)MessageQueueUserPermissionTupleFields.User_].AsString();
70 set => this.Set((int)MessageQueueUserPermissionTupleFields.User_, value);
71 } 63 }
72 64
73 public int Permissions 65 public int Permissions
diff --git a/src/wixext/WixToolset.Msmq.wixext.csproj b/src/wixext/WixToolset.Msmq.wixext.csproj
index 2db75ff7..4c421bac 100644
--- a/src/wixext/WixToolset.Msmq.wixext.csproj
+++ b/src/wixext/WixToolset.Msmq.wixext.csproj
@@ -14,7 +14,6 @@
14 <ItemGroup> 14 <ItemGroup>
15 <Content Include="$(MSBuildThisFileName).targets" /> 15 <Content Include="$(MSBuildThisFileName).targets" />
16 <Content Include="msmq.xsd" PackagePath="tools" /> 16 <Content Include="msmq.xsd" PackagePath="tools" />
17 <EmbeddedResource Include="tables.xml" />
18 <EmbeddedResource Include="$(OutputPath)..\msmq.wixlib" /> 17 <EmbeddedResource Include="$(OutputPath)..\msmq.wixlib" />
19 </ItemGroup> 18 </ItemGroup>
20 19
diff --git a/src/wixext/tables.xml b/src/wixext/tables.xml
deleted file mode 100644
index 5fdd1fad..00000000
--- a/src/wixext/tables.xml
+++ /dev/null
@@ -1,54 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4
5<tableDefinitions xmlns="http://wixtoolset.org/schemas/v4/wi/tables">
6 <tableDefinition name="MessageQueue" createSymbols="yes">
7 <columnDefinition name="MessageQueue" type="string" length="72" primaryKey="yes" modularize="column"
8 category="identifier" description=""/>
9 <columnDefinition name="Component_" type="string" length="72" modularize="column"
10 keyTable="Component" keyColumn="1" category="identifier" description=""/>
11 <columnDefinition name="BasePriority" type="number" length="4" nullable="yes"
12 description=""/>
13 <columnDefinition name="JournalQuota" type="number" length="4" nullable="yes"
14 description=""/>
15 <columnDefinition name="Label" type="localized" length="255" modularize="property" escapeIdtCharacters="yes"
16 category="formatted" description=""/>
17 <columnDefinition name="MulticastAddress" type="string" length="255" nullable="yes" modularize="property"
18 category="formatted" description=""/>
19 <columnDefinition name="PathName" type="string" length="255" modularize="property"
20 category="formatted" description=""/>
21 <columnDefinition name="PrivLevel" type="number" length="4" nullable="yes"
22 description=""/>
23 <columnDefinition name="Quota" type="number" length="4" nullable="yes"
24 description=""/>
25 <columnDefinition name="ServiceTypeGuid" type="string" length="72" nullable="yes" modularize="property"
26 category="formatted" description=""/>
27 <columnDefinition name="Attributes" type="number" length="4"
28 description=""/>
29 </tableDefinition>
30 <tableDefinition name="MessageQueueUserPermission" createSymbols="yes">
31 <columnDefinition name="MessageQueueUserPermission" type="string" length="72" primaryKey="yes" modularize="column"
32 category="identifier" description=""/>
33 <columnDefinition name="Component_" type="string" length="72" modularize="column"
34 keyTable="Component" keyColumn="1" category="identifier" description=""/>
35 <columnDefinition name="MessageQueue_" type="string" length="72" modularize="column"
36 keyTable="MessageQueue" keyColumn="1" category="identifier" description=""/>
37 <columnDefinition name="User_" type="string" length="72" modularize="column"
38 category="identifier" description=""/>
39 <columnDefinition name="Permissions" type="number" length="4"
40 description=""/>
41 </tableDefinition>
42 <tableDefinition name="MessageQueueGroupPermission" createSymbols="yes">
43 <columnDefinition name="MessageQueueGroupPermission" type="string" length="72" primaryKey="yes" modularize="column"
44 category="identifier" description=""/>
45 <columnDefinition name="Component_" type="string" length="72" modularize="column"
46 keyTable="Component" keyColumn="1" category="identifier" description=""/>
47 <columnDefinition name="MessageQueue_" type="string" length="72" modularize="column"
48 keyTable="MessageQueue" keyColumn="1" category="identifier" description=""/>
49 <columnDefinition name="Group_" type="string" length="72" modularize="column"
50 category="identifier" description=""/>
51 <columnDefinition name="Permissions" type="number" length="4"
52 description=""/>
53 </tableDefinition>
54</tableDefinitions>