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 | ||
