diff options
| author | Rob Mensching <rob@firegiant.com> | 2020-06-17 12:10:28 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2020-06-23 02:10:31 -0700 |
| commit | 457c144720964a7f50b1d184e6b19faa930e970e (patch) | |
| tree | 1ec77949cafae525204a381de2145362f1c1b59b /src/WixToolset.Core | |
| parent | 461350c09839f1e59fb3dafe1a67e74bf152f803 (diff) | |
| download | wix-457c144720964a7f50b1d184e6b19faa930e970e.tar.gz wix-457c144720964a7f50b1d184e6b19faa930e970e.tar.bz2 wix-457c144720964a7f50b1d184e6b19faa930e970e.zip | |
Introduce Value attribute on MultiString/MultiStringValue elements
Diffstat (limited to 'src/WixToolset.Core')
| -rw-r--r-- | src/WixToolset.Core/Compiler_2.cs | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs index 9e2ddb5b..84961f9b 100644 --- a/src/WixToolset.Core/Compiler_2.cs +++ b/src/WixToolset.Core/Compiler_2.cs | |||
| @@ -1964,18 +1964,15 @@ namespace WixToolset.Core | |||
| 1964 | { | 1964 | { |
| 1965 | switch (child.Name.LocalName) | 1965 | switch (child.Name.LocalName) |
| 1966 | { | 1966 | { |
| 1967 | case "MultiString": | ||
| 1967 | case "MultiStringValue": | 1968 | case "MultiStringValue": |
| 1968 | if (RegistryValueType.MultiString != valueType && null != value) | 1969 | if (RegistryValueType.MultiString != valueType && null != value) |
| 1969 | { | 1970 | { |
| 1970 | this.Core.Write(ErrorMessages.RegistryMultipleValuesWithoutMultiString(sourceLineNumbers, node.Name.LocalName, "Value", child.Name.LocalName, "Type")); | 1971 | this.Core.Write(ErrorMessages.RegistryMultipleValuesWithoutMultiString(sourceLineNumbers, node.Name.LocalName, "Value", child.Name.LocalName, "Type")); |
| 1971 | } | 1972 | } |
| 1972 | else if (null == value) | ||
| 1973 | { | ||
| 1974 | value = Common.GetInnerText(child); | ||
| 1975 | } | ||
| 1976 | else | 1973 | else |
| 1977 | { | 1974 | { |
| 1978 | value = String.Concat(value, "[~]", Common.GetInnerText(child)); | 1975 | value = this.ParseRegistryMultiStringElement(child, value); |
| 1979 | } | 1976 | } |
| 1980 | break; | 1977 | break; |
| 1981 | case "Permission": | 1978 | case "Permission": |
| @@ -2069,6 +2066,42 @@ namespace WixToolset.Core | |||
| 2069 | return keyPath; | 2066 | return keyPath; |
| 2070 | } | 2067 | } |
| 2071 | 2068 | ||
| 2069 | private string ParseRegistryMultiStringElement(XElement node, string value) | ||
| 2070 | { | ||
| 2071 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | ||
| 2072 | string multiStringValue = null; | ||
| 2073 | |||
| 2074 | foreach (var attrib in node.Attributes()) | ||
| 2075 | { | ||
| 2076 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace) | ||
| 2077 | { | ||
| 2078 | switch (attrib.Name.LocalName) | ||
| 2079 | { | ||
| 2080 | case "Value": | ||
| 2081 | multiStringValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | ||
| 2082 | break; | ||
| 2083 | default: | ||
| 2084 | this.Core.UnexpectedAttribute(node, attrib); | ||
| 2085 | break; | ||
| 2086 | } | ||
| 2087 | } | ||
| 2088 | } | ||
| 2089 | |||
| 2090 | if (multiStringValue == null) | ||
| 2091 | { | ||
| 2092 | multiStringValue = Common.GetInnerText(node); | ||
| 2093 | } | ||
| 2094 | |||
| 2095 | if (multiStringValue == null) | ||
| 2096 | { | ||
| 2097 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value")); | ||
| 2098 | } | ||
| 2099 | |||
| 2100 | this.Core.ParseForExtensionElements(node); | ||
| 2101 | |||
| 2102 | return (null == value) ? multiStringValue : String.Concat(value, "[~]", multiStringValue); | ||
| 2103 | } | ||
| 2104 | |||
| 2072 | /// <summary> | 2105 | /// <summary> |
| 2073 | /// Parses a RemoveRegistryKey element. | 2106 | /// Parses a RemoveRegistryKey element. |
| 2074 | /// </summary> | 2107 | /// </summary> |
