@joebigelow / wix-1 / commits / 06e86dad

Moved more inner text to attribute

Rob Mensching committed Jun 17, 2020 at 14:07 UTC 06e86dadb969ad1d337db11956814a1f79bbcd02
3 files changed +253 -137
src/WixToolset.Core/Compiler_2.cs
+211 -130
@@ -2621,6 +2621,9 @@ namespace WixToolset.Core
2621 this.Core.UnexpectedAttribute(child, attrib);
2622 }
2623 break;
2624 + case "Condition":
2625 + condition = this.Core.GetAttributeValue(childSourceLineNumbers, attrib);
2626 + break;
2627 case "Dialog":
2628 if (showDialog)
2629 {
@@ -2678,7 +2681,10 @@ namespace WixToolset.Core
2681 }
2682
2683 // Get the condition from the inner text of the element.
2681 - condition = this.Core.GetConditionInnerText(child);
2684 + if (condition == null)
2685 + {
2686 + condition = this.Core.GetConditionInnerText(child);
2687 + }
2688
2689 if (customAction && "Custom" == actionName)
2690 {
@@ -2901,128 +2907,7 @@ namespace WixToolset.Core
2907 switch (child.Name.LocalName)
2908 {
2909 case "RequiredPrivilege":
2904 - var privilege = this.Core.GetTrimmedInnerText(child);
2905 - switch (privilege)
2906 - {
2907 - case "assignPrimaryToken":
2908 - privilege = "SeAssignPrimaryTokenPrivilege";
2909 - break;
2910 - case "audit":
2911 - privilege = "SeAuditPrivilege";
2912 - break;
2913 - case "backup":
2914 - privilege = "SeBackupPrivilege";
2915 - break;
2916 - case "changeNotify":
2917 - privilege = "SeChangeNotifyPrivilege";
2918 - break;
2919 - case "createGlobal":
2920 - privilege = "SeCreateGlobalPrivilege";
2921 - break;
2922 - case "createPagefile":
2923 - privilege = "SeCreatePagefilePrivilege";
2924 - break;
2925 - case "createPermanent":
2926 - privilege = "SeCreatePermanentPrivilege";
2927 - break;
2928 - case "createSymbolicLink":
2929 - privilege = "SeCreateSymbolicLinkPrivilege";
2930 - break;
2931 - case "createToken":
2932 - privilege = "SeCreateTokenPrivilege";
2933 - break;
2934 - case "debug":
2935 - privilege = "SeDebugPrivilege";
2936 - break;
2937 - case "enableDelegation":
2938 - privilege = "SeEnableDelegationPrivilege";
2939 - break;
2940 - case "impersonate":
2941 - privilege = "SeImpersonatePrivilege";
2942 - break;
2943 - case "increaseBasePriority":
2944 - privilege = "SeIncreaseBasePriorityPrivilege";
2945 - break;
2946 - case "increaseQuota":
2947 - privilege = "SeIncreaseQuotaPrivilege";
2948 - break;
2949 - case "increaseWorkingSet":
2950 - privilege = "SeIncreaseWorkingSetPrivilege";
2951 - break;
2952 - case "loadDriver":
2953 - privilege = "SeLoadDriverPrivilege";
2954 - break;
2955 - case "lockMemory":
2956 - privilege = "SeLockMemoryPrivilege";
2957 - break;
2958 - case "machineAccount":
2959 - privilege = "SeMachineAccountPrivilege";
2960 - break;
2961 - case "manageVolume":
2962 - privilege = "SeManageVolumePrivilege";
2963 - break;
2964 - case "profileSingleProcess":
2965 - privilege = "SeProfileSingleProcessPrivilege";
2966 - break;
2967 - case "relabel":
2968 - privilege = "SeRelabelPrivilege";
2969 - break;
2970 - case "remoteShutdown":
2971 - privilege = "SeRemoteShutdownPrivilege";
2972 - break;
2973 - case "restore":
2974 - privilege = "SeRestorePrivilege";
2975 - break;
2976 - case "security":
2977 - privilege = "SeSecurityPrivilege";
2978 - break;
2979 - case "shutdown":
2980 - privilege = "SeShutdownPrivilege";
2981 - break;
2982 - case "syncAgent":
2983 - privilege = "SeSyncAgentPrivilege";
2984 - break;
2985 - case "systemEnvironment":
2986 - privilege = "SeSystemEnvironmentPrivilege";
2987 - break;
2988 - case "systemProfile":
2989 - privilege = "SeSystemProfilePrivilege";
2990 - break;
2991 - case "systemTime":
2992 - case "modifySystemTime":
2993 - privilege = "SeSystemtimePrivilege";
2994 - break;
2995 - case "takeOwnership":
2996 - privilege = "SeTakeOwnershipPrivilege";
2997 - break;
2998 - case "tcb":
2999 - case "trustedComputerBase":
3000 - privilege = "SeTcbPrivilege";
3001 - break;
3002 - case "timeZone":
3003 - case "modifyTimeZone":
3004 - privilege = "SeTimeZonePrivilege";
3005 - break;
3006 - case "trustedCredManAccess":
3007 - case "trustedCredentialManagerAccess":
3008 - privilege = "SeTrustedCredManAccessPrivilege";
3009 - break;
3010 - case "undock":
3011 - privilege = "SeUndockPrivilege";
3012 - break;
3013 - case "unsolicitedInput":
3014 - privilege = "SeUnsolicitedInputPrivilege";
3015 - break;
3016 - default:
3017 - // allow everything else to pass through that are hopefully "formatted" Properties.
3018 - break;
3019 - }
3020 -
3021 - if (null != requiredPrivileges)
3022 - {
3023 - requiredPrivileges = String.Concat(requiredPrivileges, "[~]");
3024 - }
3025 - requiredPrivileges = String.Concat(requiredPrivileges, privilege);
2910 + requiredPrivileges = this.ParseRequiredPrivilege(child, requiredPrivileges);
2911 break;
2912 default:
2913 this.Core.UnexpectedElement(node, child);
@@ -3128,6 +3013,157 @@ namespace WixToolset.Core
3013 }
3014 }
3015
3016 + private string ParseRequiredPrivilege(XElement node, string requiredPrivileges)
3017 + {
3018 + var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3019 + string privilege = null;
3020 +
3021 + foreach (var attrib in node.Attributes())
3022 + {
3023 + if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace)
3024 + {
3025 + switch (attrib.Name.LocalName)
3026 + {
3027 + case "Name":
3028 + privilege = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3029 + switch (privilege)
3030 + {
3031 + case "assignPrimaryToken":
3032 + privilege = "SeAssignPrimaryTokenPrivilege";
3033 + break;
3034 + case "audit":
3035 + privilege = "SeAuditPrivilege";
3036 + break;
3037 + case "backup":
3038 + privilege = "SeBackupPrivilege";
3039 + break;
3040 + case "changeNotify":
3041 + privilege = "SeChangeNotifyPrivilege";
3042 + break;
3043 + case "createGlobal":
3044 + privilege = "SeCreateGlobalPrivilege";
3045 + break;
3046 + case "createPagefile":
3047 + privilege = "SeCreatePagefilePrivilege";
3048 + break;
3049 + case "createPermanent":
3050 + privilege = "SeCreatePermanentPrivilege";
3051 + break;
3052 + case "createSymbolicLink":
3053 + privilege = "SeCreateSymbolicLinkPrivilege";
3054 + break;
3055 + case "createToken":
3056 + privilege = "SeCreateTokenPrivilege";
3057 + break;
3058 + case "debug":
3059 + privilege = "SeDebugPrivilege";
3060 + break;
3061 + case "enableDelegation":
3062 + privilege = "SeEnableDelegationPrivilege";
3063 + break;
3064 + case "impersonate":
3065 + privilege = "SeImpersonatePrivilege";
3066 + break;
3067 + case "increaseBasePriority":
3068 + privilege = "SeIncreaseBasePriorityPrivilege";
3069 + break;
3070 + case "increaseQuota":
3071 + privilege = "SeIncreaseQuotaPrivilege";
3072 + break;
3073 + case "increaseWorkingSet":
3074 + privilege = "SeIncreaseWorkingSetPrivilege";
3075 + break;
3076 + case "loadDriver":
3077 + privilege = "SeLoadDriverPrivilege";
3078 + break;
3079 + case "lockMemory":
3080 + privilege = "SeLockMemoryPrivilege";
3081 + break;
3082 + case "machineAccount":
3083 + privilege = "SeMachineAccountPrivilege";
3084 + break;
3085 + case "manageVolume":
3086 + privilege = "SeManageVolumePrivilege";
3087 + break;
3088 + case "profileSingleProcess":
3089 + privilege = "SeProfileSingleProcessPrivilege";
3090 + break;
3091 + case "relabel":
3092 + privilege = "SeRelabelPrivilege";
3093 + break;
3094 + case "remoteShutdown":
3095 + privilege = "SeRemoteShutdownPrivilege";
3096 + break;
3097 + case "restore":
3098 + privilege = "SeRestorePrivilege";
3099 + break;
3100 + case "security":
3101 + privilege = "SeSecurityPrivilege";
3102 + break;
3103 + case "shutdown":
3104 + privilege = "SeShutdownPrivilege";
3105 + break;
3106 + case "syncAgent":
3107 + privilege = "SeSyncAgentPrivilege";
3108 + break;
3109 + case "systemEnvironment":
3110 + privilege = "SeSystemEnvironmentPrivilege";
3111 + break;
3112 + case "systemProfile":
3113 + privilege = "SeSystemProfilePrivilege";
3114 + break;
3115 + case "systemTime":
3116 + case "modifySystemTime":
3117 + privilege = "SeSystemtimePrivilege";
3118 + break;
3119 + case "takeOwnership":
3120 + privilege = "SeTakeOwnershipPrivilege";
3121 + break;
3122 + case "tcb":
3123 + case "trustedComputerBase":
3124 + privilege = "SeTcbPrivilege";
3125 + break;
3126 + case "timeZone":
3127 + case "modifyTimeZone":
3128 + privilege = "SeTimeZonePrivilege";
3129 + break;
3130 + case "trustedCredManAccess":
3131 + case "trustedCredentialManagerAccess":
3132 + privilege = "SeTrustedCredManAccessPrivilege";
3133 + break;
3134 + case "undock":
3135 + privilege = "SeUndockPrivilege";
3136 + break;
3137 + case "unsolicitedInput":
3138 + privilege = "SeUnsolicitedInputPrivilege";
3139 + break;
3140 + default:
3141 + // allow everything else to pass through that are hopefully "formatted" Properties.
3142 + break;
3143 + }
3144 + break;
3145 + default:
3146 + this.Core.UnexpectedAttribute(node, attrib);
3147 + break;
3148 + }
3149 + }
3150 + }
3151 +
3152 + if (privilege == null)
3153 + {
3154 + privilege = Common.GetInnerText(node);
3155 + }
3156 +
3157 + if (privilege == null)
3158 + {
3159 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
3160 + }
3161 +
3162 + this.Core.ParseForExtensionElements(node);
3163 +
3164 + return (requiredPrivileges == null) ? privilege : String.Concat(requiredPrivileges, "[~]", privilege);
3165 + }
3166 +
3167 /// <summary>
3168 /// Parses a service config failure actions element.
3169 /// </summary>
@@ -3427,11 +3463,7 @@ namespace WixToolset.Core
3463 switch (child.Name.LocalName)
3464 {
3465 case "ServiceArgument":
3430 - if (null != arguments)
3431 - {
3432 - arguments = String.Concat(arguments, "[~]");
3433 - }
3434 - arguments = String.Concat(arguments, this.Core.GetTrimmedInnerText(child));
3466 + arguments = this.ParseServiceArgument(child, arguments);
3467 break;
3468 default:
3469 this.Core.UnexpectedElement(node, child);
@@ -3462,6 +3494,42 @@ namespace WixToolset.Core
3494 }
3495 }
3496
3497 + private string ParseServiceArgument(XElement node, string arguments)
3498 + {
3499 + var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3500 + string argument = null;
3501 +
3502 + foreach (var attrib in node.Attributes())
3503 + {
3504 + if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace)
3505 + {
3506 + switch (attrib.Name.LocalName)
3507 + {
3508 + case "Value":
3509 + argument = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3510 + break;
3511 + default:
3512 + this.Core.UnexpectedAttribute(node, attrib);
3513 + break;
3514 + }
3515 + }
3516 + }
3517 +
3518 + if (argument == null)
3519 + {
3520 + argument = this.Core.GetTrimmedInnerText(node);
3521 + }
3522 +
3523 + if (argument == null)
3524 + {
3525 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
3526 + }
3527 +
3528 + this.Core.ParseForExtensionElements(node);
3529 +
3530 + return (arguments == null) ? argument : String.Concat(arguments, "[~]", argument);
3531 + }
3532 +
3533 /// <summary>
3534 /// Parses a service dependency element.
3535 /// </summary>
@@ -3746,6 +3814,9 @@ namespace WixToolset.Core
3814 case "Action":
3815 actionName = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3816 break;
3817 + case "Condition":
3818 + condition = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3819 + break;
3820 case "Id":
3821 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3822 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Directory, id);
@@ -3786,7 +3857,10 @@ namespace WixToolset.Core
3857 }
3858 }
3859
3789 - condition = this.Core.GetConditionInnerText(node);
3860 + if (condition == null)
3861 + {
3862 + condition = this.Core.GetConditionInnerText(node);
3863 + }
3864
3865 if (null == id)
3866 {
@@ -3831,6 +3905,7 @@ namespace WixToolset.Core
3905 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3906 string actionName = null;
3907 string id = null;
3908 + string condition = null;
3909 string afterAction = null;
3910 string beforeAction = null;
3911 var executionType = CustomActionExecutionType.Immediate;
@@ -3849,6 +3924,9 @@ namespace WixToolset.Core
3924 case "Id":
3925 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3926 break;
3927 + case "Condition":
3928 + condition = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3929 + break;
3930 case "After":
3931 afterAction = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3932 break;
@@ -3914,7 +3992,10 @@ namespace WixToolset.Core
3992 }
3993 }
3994
3917 - var condition = this.Core.GetConditionInnerText(node);
3995 + if (condition == null)
3996 + {
3997 + condition = this.Core.GetConditionInnerText(node);
3998 + }
3999
4000 if (null == id)
4001 {
src/WixToolset.Core/Compiler_EmbeddedUI.cs
+9 -2
@@ -23,6 +23,7 @@ namespace WixToolset.Core
23 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
24 Identifier id = null;
25 string commandLine = null;
26 + string condition = null;
27 string source = null;
28 var type = 0;
29
@@ -47,6 +48,9 @@ namespace WixToolset.Core
48 case "CommandLine":
49 commandLine = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
50 break;
51 + case "Condition":
52 + condition = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
53 + break;
54 case "FileSource":
55 if (null != source)
56 {
@@ -76,8 +80,11 @@ namespace WixToolset.Core
80 }
81 }
82
79 - // Get the condition from the inner text of the element.
80 - var condition = this.Core.GetConditionInnerText(node);
83 + if (condition == null)
84 + {
85 + // Get the condition from the inner text of the element.
86 + condition = this.Core.GetConditionInnerText(node);
87 + }
88
89 if (null == id)
90 {
src/WixToolset.Core/Compiler_UI.cs
+33 -5
@@ -666,6 +666,7 @@ namespace WixToolset.Core
666 {
667 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
668 string action = null;
669 + string message = null;
670 string template = null;
671
672 foreach (var attrib in node.Attributes())
@@ -677,6 +678,9 @@ namespace WixToolset.Core
678 case "Action":
679 action = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
680 break;
681 + case "Message":
682 + message = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
683 + break;
684 case "Template":
685 template = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
686 break;
@@ -696,6 +700,11 @@ namespace WixToolset.Core
700 this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
701 }
702
703 + if (null == message)
704 + {
705 + message = Common.GetInnerText(node);
706 + }
707 +
708 this.Core.ParseForExtensionElements(node);
709
710 if (!this.Core.EncounteredError)
@@ -703,7 +712,7 @@ namespace WixToolset.Core
712 this.Core.AddTuple(new ActionTextTuple(sourceLineNumbers)
713 {
714 Action = action,
706 - Description = Common.GetInnerText(node),
715 + Description = message,
716 Template = template,
717 });
718 }
@@ -728,6 +737,9 @@ namespace WixToolset.Core
737 case "Id":
738 id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib);
739 break;
740 + case "Value":
741 + text = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
742 + break;
743 default:
744 this.Core.UnexpectedAttribute(node, attrib);
745 break;
@@ -739,7 +751,10 @@ namespace WixToolset.Core
751 }
752 }
753
742 - text = Common.GetInnerText(node);
754 + if (null == text)
755 + {
756 + text = Common.GetInnerText(node);
757 + }
758
759 if (null == id)
760 {
@@ -1406,6 +1421,9 @@ namespace WixToolset.Core
1421 case "SourceFile":
1422 sourceFile = this.Core.GetAttributeValue(childSourceLineNumbers, attrib);
1423 break;
1424 + case "Value":
1425 + text = this.Core.GetAttributeValue(childSourceLineNumbers, attrib);
1426 + break;
1427 default:
1428 this.Core.UnexpectedAttribute(child, attrib);
1429 break;
@@ -1417,10 +1435,14 @@ namespace WixToolset.Core
1435 }
1436 }
1437
1420 - text = Common.GetInnerText(child);
1438 + if (null == text)
1439 + {
1440 + text = Common.GetInnerText(child);
1441 + }
1442 +
1443 if (!String.IsNullOrEmpty(text) && null != sourceFile)
1444 {
1423 - this.Core.Write(ErrorMessages.IllegalAttributeWithInnerText(childSourceLineNumbers, child.Name.LocalName, "SourceFile"));
1445 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "SourceFile", "Text"));
1446 }
1447 break;
1448 default:
@@ -1589,6 +1611,9 @@ namespace WixToolset.Core
1611 {
1612 switch (attrib.Name.LocalName)
1613 {
1614 + case "Condition":
1615 + condition = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1616 + break;
1617 case "Control":
1618 if (null != control)
1619 {
@@ -1627,7 +1652,10 @@ namespace WixToolset.Core
1652 }
1653 }
1654
1630 - condition = this.Core.GetConditionInnerText(node);
1655 + if (null == condition)
1656 + {
1657 + condition = this.Core.GetConditionInnerText(node);
1658 + }
1659
1660 if (null == control)
1661 {