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
{