diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-04-25 17:53:51 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-04-26 12:59:15 -0500 |
commit | c3fa0b4cfe33109244d6f4e1c12d79abb7b28864 (patch) | |
tree | 4d505b1354c6fd3867ed821436c2e905c9efb710 /src | |
parent | 0ee63890d8eacd044115524476eb9419114500a7 (diff) | |
download | wix-c3fa0b4cfe33109244d6f4e1c12d79abb7b28864.tar.gz wix-c3fa0b4cfe33109244d6f4e1c12d79abb7b28864.tar.bz2 wix-c3fa0b4cfe33109244d6f4e1c12d79abb7b28864.zip |
Enforce that Update and RemoteBundle can only be specified once.
Also, RemoteBundle is required if BundlePackagePayload is remote.
Diffstat (limited to 'src')
-rw-r--r-- | src/wix/WixToolset.Core/Compiler_Bundle.cs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/wix/WixToolset.Core/Compiler_Bundle.cs b/src/wix/WixToolset.Core/Compiler_Bundle.cs index bd1d70f3..88188f6b 100644 --- a/src/wix/WixToolset.Core/Compiler_Bundle.cs +++ b/src/wix/WixToolset.Core/Compiler_Bundle.cs | |||
@@ -309,6 +309,7 @@ namespace WixToolset.Core | |||
309 | 309 | ||
310 | var chainSeen = false; | 310 | var chainSeen = false; |
311 | var logSeen = false; | 311 | var logSeen = false; |
312 | var updateSeen = false; | ||
312 | 313 | ||
313 | foreach (var child in node.Elements()) | 314 | foreach (var child in node.Elements()) |
314 | { | 315 | { |
@@ -386,7 +387,13 @@ namespace WixToolset.Core | |||
386 | this.ParseBundleTagElement(child); | 387 | this.ParseBundleTagElement(child); |
387 | break; | 388 | break; |
388 | case "Update": | 389 | case "Update": |
390 | if (updateSeen) | ||
391 | { | ||
392 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); | ||
393 | this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "Update")); | ||
394 | } | ||
389 | this.ParseUpdateElement(child); | 395 | this.ParseUpdateElement(child); |
396 | updateSeen = true; | ||
390 | break; | 397 | break; |
391 | case "Variable": | 398 | case "Variable": |
392 | this.ParseVariableElement(child); | 399 | this.ParseVariableElement(child); |
@@ -2670,6 +2677,8 @@ namespace WixToolset.Core | |||
2670 | this.Core.ParseExtensionAttribute(node, extensionAttribute, context); | 2677 | this.Core.ParseExtensionAttribute(node, extensionAttribute, context); |
2671 | } | 2678 | } |
2672 | 2679 | ||
2680 | var remoteBundleSeen = false; | ||
2681 | |||
2673 | foreach (var child in node.Elements()) | 2682 | foreach (var child in node.Elements()) |
2674 | { | 2683 | { |
2675 | if (CompilerCore.WixNamespace == child.Name.Namespace) | 2684 | if (CompilerCore.WixNamespace == child.Name.Namespace) |
@@ -2682,7 +2691,13 @@ namespace WixToolset.Core | |||
2682 | 2691 | ||
2683 | if (allowed) | 2692 | if (allowed) |
2684 | { | 2693 | { |
2694 | if (remoteBundleSeen) | ||
2695 | { | ||
2696 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); | ||
2697 | this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "RemoteBundle")); | ||
2698 | } | ||
2685 | this.ParseRemoteBundleElement(child, compilerPayload.Id.Id); | 2699 | this.ParseRemoteBundleElement(child, compilerPayload.Id.Id); |
2700 | remoteBundleSeen = true; | ||
2686 | } | 2701 | } |
2687 | 2702 | ||
2688 | break; | 2703 | break; |
@@ -2702,6 +2717,12 @@ namespace WixToolset.Core | |||
2702 | } | 2717 | } |
2703 | } | 2718 | } |
2704 | 2719 | ||
2720 | var isLocal = !String.IsNullOrEmpty(compilerPayload.SourceFile); | ||
2721 | if (packageType == WixBundlePackageType.Bundle && !isLocal && !remoteBundleSeen) | ||
2722 | { | ||
2723 | this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "RemoteBundle")); | ||
2724 | } | ||
2725 | |||
2705 | return compilerPayload; | 2726 | return compilerPayload; |
2706 | } | 2727 | } |
2707 | 2728 | ||