diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-09-09 16:03:29 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-09-09 21:14:27 -0500 |
commit | a1307cd4e76a89598c53cb68309358a7012db553 (patch) | |
tree | f79cf181b49f0b754afcd4ec25487bf2b284d45e /src/ext/Bal/wixext/BalBurnBackendExtension.cs | |
parent | f61479585d865372645cb18c982aa708dd975da3 (diff) | |
download | wix-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.cs | 40 |
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 | } |