summaryrefslogtreecommitdiff
path: root/src/ext/Util/wixext/UtilCompiler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext/Util/wixext/UtilCompiler.cs')
-rw-r--r--src/ext/Util/wixext/UtilCompiler.cs36
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);