@joebigelow / wix-1 / commits / cc3313d9

Move launch conditions to Launch element

Rob Mensching committed Jun 22, 2020 at 23:15 UTC cc3313d974870cd62ac7ae7eccbcf41a85417e33
1 file changed +58
src/WixToolset.Core/Compiler.cs
+58
@@ -6277,6 +6277,9 @@ namespace WixToolset.Core
6277 case "MediaTemplate":
6278 this.ParseMediaTemplateElement(child, null);
6279 break;
6280 + case "Launch":
6281 + this.ParseLaunchElement(child);
6282 + break;
6283 case "PackageGroup":
6284 this.ParsePackageGroupElement(child);
6285 break;
@@ -6353,6 +6356,61 @@ namespace WixToolset.Core
6356 }
6357 }
6358
6359 + /// <summary>
6360 + /// Parses a launch condition element.
6361 + /// </summary>
6362 + /// <param name="node">Element to parse.</param>
6363 + private void ParseLaunchElement(XElement node)
6364 + {
6365 + var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
6366 + string condition = null;
6367 + string message = null;
6368 +
6369 + foreach (var attrib in node.Attributes())
6370 + {
6371 + if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace)
6372 + {
6373 + switch (attrib.Name.LocalName)
6374 + {
6375 + case "Cndition":
6376 + condition = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
6377 + break;
6378 + case "Message":
6379 + message = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
6380 + break;
6381 + default:
6382 + this.Core.UnexpectedAttribute(node, attrib);
6383 + break;
6384 + }
6385 + }
6386 + else
6387 + {
6388 + this.Core.ParseExtensionAttribute(node, attrib);
6389 + }
6390 + }
6391 +
6392 + if (String.IsNullOrEmpty(condition))
6393 + {
6394 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Condition"));
6395 + }
6396 +
6397 + if (String.IsNullOrEmpty(message))
6398 + {
6399 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Message"));
6400 + }
6401 +
6402 +
6403 + this.Core.ParseForExtensionElements(node);
6404 +
6405 + if (!this.Core.EncounteredError)
6406 + {
6407 + this.Core.AddTuple(new LaunchConditionTuple(sourceLineNumbers)
6408 + {
6409 + Condition = condition,
6410 + Description = message
6411 + });
6412 + }
6413 + }
6414
6415 /// <summary>
6416 /// Parses a condition element.