From 48aea40184697a5394875e07aac2293da10875bb Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sat, 27 Jun 2020 23:53:04 -0700 Subject: Handle multiple Condition conversions --- src/WixToolset.Converters/WixConverter.cs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'src/WixToolset.Converters') diff --git a/src/WixToolset.Converters/WixConverter.cs b/src/WixToolset.Converters/WixConverter.cs index 7ac64710..86a1bfba 100644 --- a/src/WixToolset.Converters/WixConverter.cs +++ b/src/WixToolset.Converters/WixConverter.cs @@ -416,8 +416,9 @@ namespace WixToolset.Converters private void ConvertControlElement(XElement element) { - var xCondition = element.Element(ConditionElementName); - if (xCondition != null) + var remove = new List(); + + foreach (var xCondition in element.Elements(ConditionElementName)) { var action = UppercaseFirstChar(xCondition.Attribute("Action")?.Value); if (!String.IsNullOrEmpty(action) && @@ -425,9 +426,14 @@ namespace WixToolset.Converters this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the '{1}Condition' attribute instead.", xCondition.Name.LocalName, action)) { element.Add(new XAttribute(action + "Condition", text)); - xCondition.Remove(); + remove.Add(xCondition); } } + + for (var i = remove.Count - 1; i >= 0; i--) + { + remove[i].Remove(); + } } private void ConvertComponentElement(XElement element) @@ -517,8 +523,9 @@ namespace WixToolset.Converters private void ConvertFragmentElement(XElement element) { - var xCondition = element.Element(ConditionElementName); - if (xCondition != null) + var remove = new List(); + + foreach (var xCondition in element.Elements(ConditionElementName)) { var message = xCondition.Attribute("Message")?.Value; @@ -530,9 +537,14 @@ namespace WixToolset.Converters new XAttribute("Condition", text), new XAttribute("Message", message) )); - xCondition.Remove(); + remove.Add(xCondition); } } + + for (var i = remove.Count - 1; i >= 0; i--) + { + remove[i].Remove(); + } } private void ConvertEmbeddedChainerElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Condition"); -- cgit v1.2.3-55-g6feb