diff options
Diffstat (limited to 'src/wixext')
-rw-r--r-- | src/wixext/Tuples/SecureObjectsTuple.cs | 8 | ||||
-rw-r--r-- | src/wixext/UtilCompiler.cs | 13 | ||||
-rw-r--r-- | src/wixext/UtilTableDefinitions.cs | 1 | ||||
-rw-r--r-- | src/wixext/util.xsd | 5 |
4 files changed, 27 insertions, 0 deletions
diff --git a/src/wixext/Tuples/SecureObjectsTuple.cs b/src/wixext/Tuples/SecureObjectsTuple.cs index 3602a5ea..95c24979 100644 --- a/src/wixext/Tuples/SecureObjectsTuple.cs +++ b/src/wixext/Tuples/SecureObjectsTuple.cs | |||
@@ -15,6 +15,7 @@ namespace WixToolset.Util | |||
15 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Table), IntermediateFieldType.String), | 15 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Table), IntermediateFieldType.String), |
16 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Domain), IntermediateFieldType.String), | 16 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Domain), IntermediateFieldType.String), |
17 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.User), IntermediateFieldType.String), | 17 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.User), IntermediateFieldType.String), |
18 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Attributes), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Permission), IntermediateFieldType.Number), | 19 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Permission), IntermediateFieldType.Number), |
19 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.ComponentRef), IntermediateFieldType.String), | 20 | new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.ComponentRef), IntermediateFieldType.String), |
20 | }, | 21 | }, |
@@ -32,6 +33,7 @@ namespace WixToolset.Util.Tuples | |||
32 | Table, | 33 | Table, |
33 | Domain, | 34 | Domain, |
34 | User, | 35 | User, |
36 | Attributes, | ||
35 | Permission, | 37 | Permission, |
36 | ComponentRef, | 38 | ComponentRef, |
37 | } | 39 | } |
@@ -72,6 +74,12 @@ namespace WixToolset.Util.Tuples | |||
72 | set => this.Set((int)SecureObjectsTupleFields.User, value); | 74 | set => this.Set((int)SecureObjectsTupleFields.User, value); |
73 | } | 75 | } |
74 | 76 | ||
77 | public int Attributes | ||
78 | { | ||
79 | get => this.Fields[(int)SecureObjectsTupleFields.Attributes].AsNumber(); | ||
80 | set => this.Set((int)SecureObjectsTupleFields.Attributes, value); | ||
81 | } | ||
82 | |||
75 | public int? Permission | 83 | public int? Permission |
76 | { | 84 | { |
77 | get => this.Fields[(int)SecureObjectsTupleFields.Permission].AsNullableNumber(); | 85 | get => this.Fields[(int)SecureObjectsTupleFields.Permission].AsNullableNumber(); |
diff --git a/src/wixext/UtilCompiler.cs b/src/wixext/UtilCompiler.cs index 65ca406d..672c3f68 100644 --- a/src/wixext/UtilCompiler.cs +++ b/src/wixext/UtilCompiler.cs | |||
@@ -49,6 +49,11 @@ namespace WixToolset.Util | |||
49 | TypeMask = 0xf, | 49 | TypeMask = 0xf, |
50 | } | 50 | } |
51 | 51 | ||
52 | internal enum WixPermissionExAttributes | ||
53 | { | ||
54 | Inheritable = 0x01 | ||
55 | } | ||
56 | |||
52 | internal enum WixRemoveFolderExOn | 57 | internal enum WixRemoveFolderExOn |
53 | { | 58 | { |
54 | Install = 1, | 59 | Install = 1, |
@@ -2367,6 +2372,8 @@ namespace WixToolset.Util | |||
2367 | string domain = null; | 2372 | string domain = null; |
2368 | string[] specialPermissions = null; | 2373 | string[] specialPermissions = null; |
2369 | string user = null; | 2374 | string user = null; |
2375 | var inheritable = YesNoType.NotSet; | ||
2376 | int attributes = 0; | ||
2370 | 2377 | ||
2371 | var permissionType = PermissionType.SecureObjects; | 2378 | var permissionType = PermissionType.SecureObjects; |
2372 | 2379 | ||
@@ -2407,6 +2414,9 @@ namespace WixToolset.Util | |||
2407 | } | 2414 | } |
2408 | domain = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | 2415 | domain = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); |
2409 | break; | 2416 | break; |
2417 | case "Inheritable": | ||
2418 | inheritable = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib); | ||
2419 | break; | ||
2410 | case "User": | 2420 | case "User": |
2411 | user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | 2421 | user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); |
2412 | break; | 2422 | break; |
@@ -2444,6 +2454,8 @@ namespace WixToolset.Util | |||
2444 | this.Messaging.Write(ErrorMessages.GenericReadNotAllowed(sourceLineNumbers)); | 2454 | this.Messaging.Write(ErrorMessages.GenericReadNotAllowed(sourceLineNumbers)); |
2445 | } | 2455 | } |
2446 | 2456 | ||
2457 | attributes |= inheritable == YesNoType.No ? 0 : (int)WixPermissionExAttributes.Inheritable; // default to inheritable. | ||
2458 | |||
2447 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); | 2459 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); |
2448 | 2460 | ||
2449 | if (!this.Messaging.EncounteredError) | 2461 | if (!this.Messaging.EncounteredError) |
@@ -2457,6 +2469,7 @@ namespace WixToolset.Util | |||
2457 | Table = tableName, | 2469 | Table = tableName, |
2458 | Domain = domain, | 2470 | Domain = domain, |
2459 | User = user, | 2471 | User = user, |
2472 | Attributes = attributes, | ||
2460 | Permission = permission, | 2473 | Permission = permission, |
2461 | ComponentRef = componentId, | 2474 | ComponentRef = componentId, |
2462 | }); | 2475 | }); |
diff --git a/src/wixext/UtilTableDefinitions.cs b/src/wixext/UtilTableDefinitions.cs index 5e227a05..4dfeb4bd 100644 --- a/src/wixext/UtilTableDefinitions.cs +++ b/src/wixext/UtilTableDefinitions.cs | |||
@@ -164,6 +164,7 @@ namespace WixToolset.Util | |||
164 | new ColumnDefinition("Table", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Table SecureObject should be securing"), | 164 | new ColumnDefinition("Table", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Table SecureObject should be securing"), |
165 | new ColumnDefinition("Domain", ColumnType.String, 255, primaryKey: true, nullable: true, ColumnCategory.Text, description: "Domain half of user account to secure", modularizeType: ColumnModularizeType.Property), | 165 | new ColumnDefinition("Domain", ColumnType.String, 255, primaryKey: true, nullable: true, ColumnCategory.Text, description: "Domain half of user account to secure", modularizeType: ColumnModularizeType.Property), |
166 | new ColumnDefinition("User", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "User name half of user account to secure", modularizeType: ColumnModularizeType.Property), | 166 | new ColumnDefinition("User", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "User name half of user account to secure", modularizeType: ColumnModularizeType.Property), |
167 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Integer, minValue: 0, maxValue: 2147483647, description: "A 32-bit word that specifies the attribute flags to be applied."), | ||
167 | new ColumnDefinition("Permission", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Permissions to grant to User"), | 168 | new ColumnDefinition("Permission", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Permissions to grant to User"), |
168 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table used to determine install state", modularizeType: ColumnModularizeType.Column), | 169 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table used to determine install state", modularizeType: ColumnModularizeType.Column), |
169 | }, | 170 | }, |
diff --git a/src/wixext/util.xsd b/src/wixext/util.xsd index a8c3d208..93cdd4ba 100644 --- a/src/wixext/util.xsd +++ b/src/wixext/util.xsd | |||
@@ -775,6 +775,11 @@ | |||
775 | <xs:complexType> | 775 | <xs:complexType> |
776 | <xs:attribute name="Domain" type="xs:string"></xs:attribute> | 776 | <xs:attribute name="Domain" type="xs:string"></xs:attribute> |
777 | <xs:attribute name="User" use="required" type="xs:string"></xs:attribute> | 777 | <xs:attribute name="User" use="required" type="xs:string"></xs:attribute> |
778 | <xs:attribute name="Inheritable" type="xs:YesNoType"> | ||
779 | <xs:annotation> | ||
780 | <xs:documentation>Whether the permissions are inheritable. The default is "yes".</xs:documentation> | ||
781 | </xs:annotation> | ||
782 | </xs:attribute> | ||
778 | <!-- Common ACLs --> | 783 | <!-- Common ACLs --> |
779 | <xs:attribute name="Read" type="YesNoType"></xs:attribute> | 784 | <xs:attribute name="Read" type="YesNoType"></xs:attribute> |
780 | <xs:attribute name="Delete" type="YesNoType"></xs:attribute> | 785 | <xs:attribute name="Delete" type="YesNoType"></xs:attribute> |