aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wixext/Symbols/SecureObjectsSymbol.cs14
-rw-r--r--src/wixext/UtilCompiler.cs15
2 files changed, 16 insertions, 13 deletions
diff --git a/src/wixext/Symbols/SecureObjectsSymbol.cs b/src/wixext/Symbols/SecureObjectsSymbol.cs
index b90df521..25fc6dca 100644
--- a/src/wixext/Symbols/SecureObjectsSymbol.cs
+++ b/src/wixext/Symbols/SecureObjectsSymbol.cs
@@ -25,6 +25,7 @@ namespace WixToolset.Util
25 25
26namespace WixToolset.Util.Symbols 26namespace WixToolset.Util.Symbols
27{ 27{
28 using System;
28 using WixToolset.Data; 29 using WixToolset.Data;
29 30
30 public enum SecureObjectsSymbolFields 31 public enum SecureObjectsSymbolFields
@@ -38,6 +39,13 @@ namespace WixToolset.Util.Symbols
38 ComponentRef, 39 ComponentRef,
39 } 40 }
40 41
42 [Flags]
43 public enum WixPermissionExAttributes
44 {
45 None = 0x0,
46 Inheritable = 0x01
47 }
48
41 public class SecureObjectsSymbol : IntermediateSymbol 49 public class SecureObjectsSymbol : IntermediateSymbol
42 { 50 {
43 public SecureObjectsSymbol() : base(UtilSymbolDefinitions.SecureObjects, null, null) 51 public SecureObjectsSymbol() : base(UtilSymbolDefinitions.SecureObjects, null, null)
@@ -74,10 +82,10 @@ namespace WixToolset.Util.Symbols
74 set => this.Set((int)SecureObjectsSymbolFields.User, value); 82 set => this.Set((int)SecureObjectsSymbolFields.User, value);
75 } 83 }
76 84
77 public int Attributes 85 public WixPermissionExAttributes Attributes
78 { 86 {
79 get => this.Fields[(int)SecureObjectsSymbolFields.Attributes].AsNumber(); 87 get => (WixPermissionExAttributes)this.Fields[(int)SecureObjectsSymbolFields.Attributes].AsNumber();
80 set => this.Set((int)SecureObjectsSymbolFields.Attributes, value); 88 set => this.Set((int)SecureObjectsSymbolFields.Attributes, (int)value);
81 } 89 }
82 90
83 public int? Permission 91 public int? Permission
diff --git a/src/wixext/UtilCompiler.cs b/src/wixext/UtilCompiler.cs
index f1faf4a8..c0312f48 100644
--- a/src/wixext/UtilCompiler.cs
+++ b/src/wixext/UtilCompiler.cs
@@ -49,11 +49,6 @@ namespace WixToolset.Util
49 TypeMask = 0xf, 49 TypeMask = 0xf,
50 } 50 }
51 51
52 internal enum WixPermissionExAttributes
53 {
54 Inheritable = 0x01
55 }
56
57 internal enum WixRemoveFolderExOn 52 internal enum WixRemoveFolderExOn
58 { 53 {
59 Install = 1, 54 Install = 1,
@@ -2465,8 +2460,7 @@ namespace WixToolset.Util
2465 string domain = null; 2460 string domain = null;
2466 string[] specialPermissions = null; 2461 string[] specialPermissions = null;
2467 string user = null; 2462 string user = null;
2468 var inheritable = YesNoType.NotSet; 2463 var attributes = WixPermissionExAttributes.Inheritable; // default to inheritable.
2469 int attributes = 0;
2470 2464
2471 var permissionType = PermissionType.SecureObjects; 2465 var permissionType = PermissionType.SecureObjects;
2472 2466
@@ -2508,7 +2502,10 @@ namespace WixToolset.Util
2508 domain = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 2502 domain = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2509 break; 2503 break;
2510 case "Inheritable": 2504 case "Inheritable":
2511 inheritable = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib); 2505 if (this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) == YesNoType.No)
2506 {
2507 attributes &= ~WixPermissionExAttributes.Inheritable;
2508 }
2512 break; 2509 break;
2513 case "User": 2510 case "User":
2514 user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); 2511 user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
@@ -2547,8 +2544,6 @@ namespace WixToolset.Util
2547 this.Messaging.Write(ErrorMessages.GenericReadNotAllowed(sourceLineNumbers)); 2544 this.Messaging.Write(ErrorMessages.GenericReadNotAllowed(sourceLineNumbers));
2548 } 2545 }
2549 2546
2550 attributes |= inheritable == YesNoType.No ? 0 : (int)WixPermissionExAttributes.Inheritable; // default to inheritable.
2551
2552 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 2547 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
2553 2548
2554 if (!this.Messaging.EncounteredError) 2549 if (!this.Messaging.EncounteredError)