From 9bdf3730cd43e1af8a4ea9be6cf2fba77fcff2d2 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 1 Jul 2021 09:30:10 -0500 Subject: Add bundle option for command line variables to always be uppercase. Fixes #3777 --- .../WixToolset.Mba.Core/OverridableVariables.cs | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs') diff --git a/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs b/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs index 855ce9a9..148acb34 100644 --- a/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs +++ b/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs @@ -12,6 +12,9 @@ namespace WixToolset.Mba.Core /// public class OverridableVariablesInfo : IOverridableVariables { + /// + public VariableCommandLineType CommandLineType { get; internal set; } + /// public IDictionary Variables { get; internal set; } @@ -26,9 +29,36 @@ namespace WixToolset.Mba.Core { XmlNamespaceManager namespaceManager = new XmlNamespaceManager(root.NameTable); namespaceManager.AddNamespace("p", BootstrapperApplicationData.XMLNamespace); + XPathNavigator commandLineNode = root.SelectSingleNode("/p:BootstrapperApplicationData/p:CommandLine", namespaceManager); XPathNodeIterator nodes = root.Select("/p:BootstrapperApplicationData/p:WixStdbaOverridableVariable", namespaceManager); var overridableVariables = new OverridableVariablesInfo(); + + if (commandLineNode == null) + { + throw new Exception("Failed to select command line information."); + } + + string variablesValue = BootstrapperApplicationData.GetAttribute(commandLineNode, "Variables"); + + if (variablesValue == null) + { + throw new Exception("Failed to get command line variable type."); + } + + if (variablesValue.Equals("upperCase", StringComparison.InvariantCulture)) + { + overridableVariables.CommandLineType = VariableCommandLineType.UpperCase; + } + else if (variablesValue.Equals("caseSensitive", StringComparison.InvariantCulture)) + { + overridableVariables.CommandLineType = VariableCommandLineType.CaseSensitive; + } + else + { + throw new Exception(string.Format("Unknown command line variable type: '{0}'", variablesValue)); + } + overridableVariables.Variables = new Dictionary(); foreach (XPathNavigator node in nodes) -- cgit v1.2.3-55-g6feb