summaryrefslogtreecommitdiff
path: root/src/ext/Bal/wixext/BalBurnBackendExtension.cs
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-09-09 16:03:29 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-09-09 21:14:27 -0500
commita1307cd4e76a89598c53cb68309358a7012db553 (patch)
treef79cf181b49f0b754afcd4ec25487bf2b284d45e /src/ext/Bal/wixext/BalBurnBackendExtension.cs
parentf61479585d865372645cb18c982aa708dd975da3 (diff)
downloadwix-a1307cd4e76a89598c53cb68309358a7012db553.tar.gz
wix-a1307cd4e76a89598c53cb68309358a7012db553.tar.bz2
wix-a1307cd4e76a89598c53cb68309358a7012db553.zip
Move `Bundle/@CommandLineVariables` into Bal.wixext.
Implements 6858
Diffstat (limited to 'src/ext/Bal/wixext/BalBurnBackendExtension.cs')
-rw-r--r--src/ext/Bal/wixext/BalBurnBackendExtension.cs40
1 files changed, 35 insertions, 5 deletions
diff --git a/src/ext/Bal/wixext/BalBurnBackendExtension.cs b/src/ext/Bal/wixext/BalBurnBackendExtension.cs
index 6f615796..a27ff739 100644
--- a/src/ext/Bal/wixext/BalBurnBackendExtension.cs
+++ b/src/ext/Bal/wixext/BalBurnBackendExtension.cs
@@ -24,6 +24,7 @@ namespace WixToolset.Bal
24 BalSymbolDefinitions.WixBalPackageInfo, 24 BalSymbolDefinitions.WixBalPackageInfo,
25 BalSymbolDefinitions.WixDncOptions, 25 BalSymbolDefinitions.WixDncOptions,
26 BalSymbolDefinitions.WixMbaPrereqInformation, 26 BalSymbolDefinitions.WixMbaPrereqInformation,
27 BalSymbolDefinitions.WixStdbaCommandLine,
27 BalSymbolDefinitions.WixStdbaOptions, 28 BalSymbolDefinitions.WixStdbaOptions,
28 BalSymbolDefinitions.WixStdbaOverridableVariable, 29 BalSymbolDefinitions.WixStdbaOverridableVariable,
29 BalSymbolDefinitions.WixMbaPrereqOptions, 30 BalSymbolDefinitions.WixMbaPrereqOptions,
@@ -61,6 +62,30 @@ namespace WixToolset.Bal
61 62
62 return true; 63 return true;
63 } 64 }
65 else if (symbol is WixStdbaCommandLineSymbol stdbaCommandLineSymbol)
66 {
67 var sb = new StringBuilder();
68 using (var writer = XmlWriter.Create(sb))
69 {
70 writer.WriteStartElement(symbol.Definition.Name, BurnConstants.BootstrapperApplicationDataNamespace);
71
72 switch (stdbaCommandLineSymbol.VariableType)
73 {
74 case WixStdbaCommandLineVariableType.CaseInsensitive:
75 writer.WriteAttributeString("VariableType", "caseInsensitive");
76 break;
77 default:
78 writer.WriteAttributeString("VariableType", "caseSensitive");
79 break;
80 }
81
82 writer.WriteEndElement();
83 }
84
85 this.BackendHelper.AddBootstrapperApplicationData(sb.ToString());
86
87 return true;
88 }
64 else 89 else
65 { 90 {
66 return base.TryProcessSymbol(section, symbol); 91 return base.TryProcessSymbol(section, symbol);
@@ -418,19 +443,24 @@ namespace WixToolset.Bal
418 443
419 private void VerifyOverridableVariables(IntermediateSection section) 444 private void VerifyOverridableVariables(IntermediateSection section)
420 { 445 {
421 var bundleSymbol = section.Symbols.OfType<WixBundleSymbol>().Single(); 446 var commandLineSymbol = section.Symbols.OfType<WixStdbaCommandLineSymbol>().SingleOrDefault();
422 if (bundleSymbol.CommandLineVariables != WixBundleCommandLineVariables.UpperCase) 447 if (commandLineSymbol?.VariableType != WixStdbaCommandLineVariableType.CaseInsensitive)
423 { 448 {
424 return; 449 return;
425 } 450 }
426 451
427 var overridableVariableSymbols = section.Symbols.OfType<WixStdbaOverridableVariableSymbol>().ToList(); 452 var overridableVariableSymbols = section.Symbols.OfType<WixStdbaOverridableVariableSymbol>().ToList();
453 var overridableVariables = new Dictionary<string, WixStdbaOverridableVariableSymbol>(StringComparer.InvariantCultureIgnoreCase);
428 foreach (var overridableVariableSymbol in overridableVariableSymbols) 454 foreach (var overridableVariableSymbol in overridableVariableSymbols)
429 { 455 {
430 var upperName = overridableVariableSymbol.Name.ToUpperInvariant(); 456 if (!overridableVariables.TryGetValue(overridableVariableSymbol.Name, out var collisionVariableSymbol))
431 if (upperName != overridableVariableSymbol.Name) 457 {
458 overridableVariables.Add(overridableVariableSymbol.Name, overridableVariableSymbol);
459 }
460 else
432 { 461 {
433 this.Messaging.Write(BalErrors.NonUpperCaseOverridableVariable(overridableVariableSymbol.SourceLineNumbers, overridableVariableSymbol.Name, upperName)); 462 this.Messaging.Write(BalErrors.OverridableVariableCollision(overridableVariableSymbol.SourceLineNumbers, overridableVariableSymbol.Name, collisionVariableSymbol.Name));
463 this.Messaging.Write(BalErrors.OverridableVariableCollision2(collisionVariableSymbol.SourceLineNumbers));
434 } 464 }
435 } 465 }
436 } 466 }