diff options
Diffstat (limited to 'src/ext/Util/wixext/UtilCompiler.cs')
| -rw-r--r-- | src/ext/Util/wixext/UtilCompiler.cs | 36 |
1 files changed, 11 insertions, 25 deletions
diff --git a/src/ext/Util/wixext/UtilCompiler.cs b/src/ext/Util/wixext/UtilCompiler.cs index 45079150..09a90928 100644 --- a/src/ext/Util/wixext/UtilCompiler.cs +++ b/src/ext/Util/wixext/UtilCompiler.cs | |||
| @@ -19,7 +19,7 @@ namespace WixToolset.Util | |||
| 19 | /// <summary> | 19 | /// <summary> |
| 20 | /// The compiler for the WiX Toolset Utility Extension. | 20 | /// The compiler for the WiX Toolset Utility Extension. |
| 21 | /// </summary> | 21 | /// </summary> |
| 22 | public sealed class UtilCompiler : BaseCompilerExtension | 22 | internal sealed class UtilCompiler : BaseCompilerExtension |
| 23 | { | 23 | { |
| 24 | // user creation attributes definitions (from sca.h) | 24 | // user creation attributes definitions (from sca.h) |
| 25 | internal const int UserDontExpirePasswrd = 0x00000001; | 25 | internal const int UserDontExpirePasswrd = 0x00000001; |
| @@ -37,7 +37,7 @@ namespace WixToolset.Util | |||
| 37 | 37 | ||
| 38 | private static readonly Regex FindPropertyBrackets = new Regex(@"\[(?!\\|\])|(?<!\[\\\]|\[\\|\\\[)\]", RegexOptions.ExplicitCapture | RegexOptions.Compiled); | 38 | private static readonly Regex FindPropertyBrackets = new Regex(@"\[(?!\\|\])|(?<!\[\\\]|\[\\|\\\[)\]", RegexOptions.ExplicitCapture | RegexOptions.Compiled); |
| 39 | 39 | ||
| 40 | public override XNamespace Namespace => "http://wixtoolset.org/schemas/v4/wxs/util"; | 40 | public override XNamespace Namespace => UtilConstants.Namespace; |
| 41 | 41 | ||
| 42 | /// <summary> | 42 | /// <summary> |
| 43 | /// Types of Internet shortcuts. | 43 | /// Types of Internet shortcuts. |
| @@ -94,13 +94,10 @@ namespace WixToolset.Util | |||
| 94 | var createFolderId = context["DirectoryId"]; | 94 | var createFolderId = context["DirectoryId"]; |
| 95 | var createFolderComponentId = context["ComponentId"]; | 95 | var createFolderComponentId = context["ComponentId"]; |
| 96 | 96 | ||
| 97 | // If this doesn't parse successfully, something really odd is going on, so let the exception get thrown | ||
| 98 | var createFolderWin64 = Boolean.Parse(context["Win64"]); | ||
| 99 | |||
| 100 | switch (element.Name.LocalName) | 97 | switch (element.Name.LocalName) |
| 101 | { | 98 | { |
| 102 | case "PermissionEx": | 99 | case "PermissionEx": |
| 103 | this.ParsePermissionExElement(intermediate, section, element, createFolderId, createFolderComponentId, createFolderWin64, "CreateFolder"); | 100 | this.ParsePermissionExElement(intermediate, section, element, createFolderId, createFolderComponentId, "CreateFolder"); |
| 104 | break; | 101 | break; |
| 105 | default: | 102 | default: |
| 106 | this.ParseHelper.UnexpectedElement(parentElement, element); | 103 | this.ParseHelper.UnexpectedElement(parentElement, element); |
| @@ -159,16 +156,13 @@ namespace WixToolset.Util | |||
| 159 | var fileId = context["FileId"]; | 156 | var fileId = context["FileId"]; |
| 160 | var fileComponentId = context["ComponentId"]; | 157 | var fileComponentId = context["ComponentId"]; |
| 161 | 158 | ||
| 162 | // If this doesn't parse successfully, something really odd is going on, so let the exception get thrown | ||
| 163 | var fileWin64 = Boolean.Parse(context["Win64"]); | ||
| 164 | |||
| 165 | switch (element.Name.LocalName) | 159 | switch (element.Name.LocalName) |
| 166 | { | 160 | { |
| 167 | case "PerfCounter": | 161 | case "PerfCounter": |
| 168 | this.ParsePerfCounterElement(intermediate, section, element, fileComponentId, fileId); | 162 | this.ParsePerfCounterElement(intermediate, section, element, fileComponentId, fileId); |
| 169 | break; | 163 | break; |
| 170 | case "PermissionEx": | 164 | case "PermissionEx": |
| 171 | this.ParsePermissionExElement(intermediate, section, element, fileId, fileComponentId, fileWin64, "File"); | 165 | this.ParsePermissionExElement(intermediate, section, element, fileId, fileComponentId, "File"); |
| 172 | break; | 166 | break; |
| 173 | case "PerfCounterManifest": | 167 | case "PerfCounterManifest": |
| 174 | this.ParsePerfCounterManifestElement(intermediate, section, element, fileComponentId, fileId); | 168 | this.ParsePerfCounterManifestElement(intermediate, section, element, fileComponentId, fileId); |
| @@ -177,7 +171,7 @@ namespace WixToolset.Util | |||
| 177 | this.ParseEventManifestElement(intermediate, section, element, fileComponentId, fileId); | 171 | this.ParseEventManifestElement(intermediate, section, element, fileComponentId, fileId); |
| 178 | break; | 172 | break; |
| 179 | case "FormatFile": | 173 | case "FormatFile": |
| 180 | this.ParseFormatFileElement(intermediate, section, element, fileId, fileWin64); | 174 | this.ParseFormatFileElement(intermediate, section, element, fileId); |
| 181 | break; | 175 | break; |
| 182 | default: | 176 | default: |
| 183 | this.ParseHelper.UnexpectedElement(parentElement, element); | 177 | this.ParseHelper.UnexpectedElement(parentElement, element); |
| @@ -296,13 +290,10 @@ namespace WixToolset.Util | |||
| 296 | var registryId = context["RegistryId"]; | 290 | var registryId = context["RegistryId"]; |
| 297 | var registryComponentId = context["ComponentId"]; | 291 | var registryComponentId = context["ComponentId"]; |
| 298 | 292 | ||
| 299 | // If this doesn't parse successfully, something really odd is going on, so let the exception get thrown | ||
| 300 | var registryWin64 = Boolean.Parse(context["Win64"]); | ||
| 301 | |||
| 302 | switch (element.Name.LocalName) | 293 | switch (element.Name.LocalName) |
| 303 | { | 294 | { |
| 304 | case "PermissionEx": | 295 | case "PermissionEx": |
| 305 | this.ParsePermissionExElement(intermediate, section, element, registryId, registryComponentId, registryWin64, "Registry"); | 296 | this.ParsePermissionExElement(intermediate, section, element, registryId, registryComponentId, "Registry"); |
| 306 | break; | 297 | break; |
| 307 | default: | 298 | default: |
| 308 | this.ParseHelper.UnexpectedElement(parentElement, element); | 299 | this.ParseHelper.UnexpectedElement(parentElement, element); |
| @@ -314,13 +305,10 @@ namespace WixToolset.Util | |||
| 314 | var serviceInstallName = context["ServiceInstallName"]; | 305 | var serviceInstallName = context["ServiceInstallName"]; |
| 315 | var serviceInstallComponentId = context["ServiceInstallComponentId"]; | 306 | var serviceInstallComponentId = context["ServiceInstallComponentId"]; |
| 316 | 307 | ||
| 317 | // If this doesn't parse successfully, something really odd is going on, so let the exception get thrown | ||
| 318 | var serviceInstallWin64 = Boolean.Parse(context["Win64"]); | ||
| 319 | |||
| 320 | switch (element.Name.LocalName) | 308 | switch (element.Name.LocalName) |
| 321 | { | 309 | { |
| 322 | case "PermissionEx": | 310 | case "PermissionEx": |
| 323 | this.ParsePermissionExElement(intermediate, section, element, serviceInstallId, serviceInstallComponentId, serviceInstallWin64, "ServiceInstall"); | 311 | this.ParsePermissionExElement(intermediate, section, element, serviceInstallId, serviceInstallComponentId, "ServiceInstall"); |
| 324 | break; | 312 | break; |
| 325 | case "ServiceConfig": | 313 | case "ServiceConfig": |
| 326 | this.ParseServiceConfigElement(intermediate, section, element, serviceInstallComponentId, "ServiceInstall", serviceInstallName); | 314 | this.ParseServiceConfigElement(intermediate, section, element, serviceInstallComponentId, "ServiceInstall", serviceInstallName); |
| @@ -536,7 +524,6 @@ namespace WixToolset.Util | |||
| 536 | private void ParseComponentSearchRefElement(Intermediate intermediate, IntermediateSection section, XElement element) | 524 | private void ParseComponentSearchRefElement(Intermediate intermediate, IntermediateSection section, XElement element) |
| 537 | { | 525 | { |
| 538 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | 526 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); |
| 539 | string refId = null; | ||
| 540 | 527 | ||
| 541 | foreach (var attrib in element.Attributes()) | 528 | foreach (var attrib in element.Attributes()) |
| 542 | { | 529 | { |
| @@ -545,7 +532,7 @@ namespace WixToolset.Util | |||
| 545 | switch (attrib.Name.LocalName) | 532 | switch (attrib.Name.LocalName) |
| 546 | { | 533 | { |
| 547 | case "Id": | 534 | case "Id": |
| 548 | refId = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 535 | var refId = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
| 549 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixComponentSearch, refId); | 536 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixComponentSearch, refId); |
| 550 | break; | 537 | break; |
| 551 | default: | 538 | default: |
| @@ -2284,7 +2271,7 @@ namespace WixToolset.Util | |||
| 2284 | /// <param name="element">Element to parse.</param> | 2271 | /// <param name="element">Element to parse.</param> |
| 2285 | /// <param name="fileId">Identifier of referenced file.</param> | 2272 | /// <param name="fileId">Identifier of referenced file.</param> |
| 2286 | /// <param name="win64">Flag to determine whether the component is 64-bit.</param> | 2273 | /// <param name="win64">Flag to determine whether the component is 64-bit.</param> |
| 2287 | private void ParseFormatFileElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId, bool win64) | 2274 | private void ParseFormatFileElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId) |
| 2288 | { | 2275 | { |
| 2289 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | 2276 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); |
| 2290 | string binaryId = null; | 2277 | string binaryId = null; |
| @@ -2415,7 +2402,6 @@ namespace WixToolset.Util | |||
| 2415 | ComponentRef = componentId, | 2402 | ComponentRef = componentId, |
| 2416 | }); | 2403 | }); |
| 2417 | } | 2404 | } |
| 2418 | |||
| 2419 | } | 2405 | } |
| 2420 | 2406 | ||
| 2421 | this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4ConfigureEventManifestRegister", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM64); | 2407 | this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4ConfigureEventManifestRegister", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM64); |
| @@ -2435,7 +2421,7 @@ namespace WixToolset.Util | |||
| 2435 | /// <param name="componentId">Identifier of component, used to determine install state.</param> | 2421 | /// <param name="componentId">Identifier of component, used to determine install state.</param> |
| 2436 | /// <param name="win64">Flag to determine whether the component is 64-bit.</param> | 2422 | /// <param name="win64">Flag to determine whether the component is 64-bit.</param> |
| 2437 | /// <param name="tableName">Name of table that contains objectId.</param> | 2423 | /// <param name="tableName">Name of table that contains objectId.</param> |
| 2438 | private void ParsePermissionExElement(Intermediate intermediate, IntermediateSection section, XElement element, string objectId, string componentId, bool win64, string tableName) | 2424 | private void ParsePermissionExElement(Intermediate intermediate, IntermediateSection section, XElement element, string objectId, string componentId, string tableName) |
| 2439 | { | 2425 | { |
| 2440 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | 2426 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); |
| 2441 | var bits = new BitArray(32); | 2427 | var bits = new BitArray(32); |
| @@ -2623,7 +2609,7 @@ namespace WixToolset.Util | |||
| 2623 | 2609 | ||
| 2624 | if (null == id) | 2610 | if (null == id) |
| 2625 | { | 2611 | { |
| 2626 | id = this.ParseHelper.CreateIdentifier("wps", variable, condition, after, (productCode == null ? upgradeCode : productCode), attributes.ToString()); | 2612 | id = this.ParseHelper.CreateIdentifier("wps", variable, condition, after, productCode ?? upgradeCode, attributes.ToString()); |
| 2627 | } | 2613 | } |
| 2628 | 2614 | ||
| 2629 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); | 2615 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); |
