diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-04-24 16:29:26 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-04-25 23:06:35 -0500 |
| commit | 07bee0d033f1b4acb63e3da17764a3855503bce2 (patch) | |
| tree | e16896f1e61f071b8c2637e0e3bb8c8976f8a2f4 /src | |
| parent | f4709371fa21ca1d0c06e04d1b53c0b10bfafeed (diff) | |
| download | wix-07bee0d033f1b4acb63e3da17764a3855503bce2.tar.gz wix-07bee0d033f1b4acb63e3da17764a3855503bce2.tar.bz2 wix-07bee0d033f1b4acb63e3da17764a3855503bce2.zip | |
Block well known bundle ids in the compiler.
Diffstat (limited to 'src')
3 files changed, 38 insertions, 15 deletions
diff --git a/src/WixToolset.Core.Burn/Bundles/OrderPackagesAndRollbackBoundariesCommand.cs b/src/WixToolset.Core.Burn/Bundles/OrderPackagesAndRollbackBoundariesCommand.cs index 19fd7619..ccf6b1c2 100644 --- a/src/WixToolset.Core.Burn/Bundles/OrderPackagesAndRollbackBoundariesCommand.cs +++ b/src/WixToolset.Core.Burn/Bundles/OrderPackagesAndRollbackBoundariesCommand.cs | |||
| @@ -6,13 +6,12 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
| 7 | using System.Linq; | 7 | using System.Linq; |
| 8 | using WixToolset.Data; | 8 | using WixToolset.Data; |
| 9 | using WixToolset.Data.Burn; | ||
| 9 | using WixToolset.Data.Symbols; | 10 | using WixToolset.Data.Symbols; |
| 10 | using WixToolset.Extensibility.Services; | 11 | using WixToolset.Extensibility.Services; |
| 11 | 12 | ||
| 12 | internal class OrderPackagesAndRollbackBoundariesCommand | 13 | internal class OrderPackagesAndRollbackBoundariesCommand |
| 13 | { | 14 | { |
| 14 | private const string DefaultBoundaryId = "WixDefaultBoundary"; | ||
| 15 | |||
| 16 | public OrderPackagesAndRollbackBoundariesCommand(IMessaging messaging, IntermediateSection section, IDictionary<string, PackageFacade> packageFacades) | 15 | public OrderPackagesAndRollbackBoundariesCommand(IMessaging messaging, IntermediateSection section, IDictionary<string, PackageFacade> packageFacades) |
| 17 | { | 16 | { |
| 18 | this.Messaging = messaging; | 17 | this.Messaging = messaging; |
| @@ -47,14 +46,14 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 47 | // We handle uninstall (aka: backwards) rollback boundaries after | 46 | // We handle uninstall (aka: backwards) rollback boundaries after |
| 48 | // we get these install/repair (aka: forward) rollback boundaries | 47 | // we get these install/repair (aka: forward) rollback boundaries |
| 49 | // defined. | 48 | // defined. |
| 50 | var pendingRollbackBoundary = new WixBundleRollbackBoundarySymbol(null, new Identifier(AccessModifier.Section, DefaultBoundaryId)) { Vital = true }; | 49 | var pendingRollbackBoundary = new WixBundleRollbackBoundarySymbol(null, new Identifier(AccessModifier.Section, BurnConstants.BundleDefaultBoundaryId)) { Vital = true }; |
| 51 | var lastRollbackBoundary = pendingRollbackBoundary; | 50 | var lastRollbackBoundary = pendingRollbackBoundary; |
| 52 | var boundaryHadX86Package = false; | 51 | var boundaryHadX86Package = false; |
| 53 | var warnedMsiTransaction = false; | 52 | var warnedMsiTransaction = false; |
| 54 | 53 | ||
| 55 | foreach (var groupSymbol in groupSymbols) | 54 | foreach (var groupSymbol in groupSymbols) |
| 56 | { | 55 | { |
| 57 | if (ComplexReferenceChildType.Package == groupSymbol.ChildType && ComplexReferenceParentType.PackageGroup == groupSymbol.ParentType && "WixChain" == groupSymbol.ParentId) | 56 | if (ComplexReferenceChildType.Package == groupSymbol.ChildType && ComplexReferenceParentType.PackageGroup == groupSymbol.ParentType && BurnConstants.BundleChainPackageGroupId == groupSymbol.ParentId) |
| 58 | { | 57 | { |
| 59 | if (this.PackageFacades.TryGetValue(groupSymbol.ChildId, out var facade)) | 58 | if (this.PackageFacades.TryGetValue(groupSymbol.ChildId, out var facade)) |
| 60 | { | 59 | { |
| @@ -63,7 +62,7 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 63 | if (null != pendingRollbackBoundary) | 62 | if (null != pendingRollbackBoundary) |
| 64 | { | 63 | { |
| 65 | // If we used the default boundary, ensure the symbol is added to the section. | 64 | // If we used the default boundary, ensure the symbol is added to the section. |
| 66 | if (pendingRollbackBoundary.Id.Id == DefaultBoundaryId) | 65 | if (pendingRollbackBoundary.Id.Id == BurnConstants.BundleDefaultBoundaryId) |
| 67 | { | 66 | { |
| 68 | this.Section.AddSymbol(pendingRollbackBoundary); | 67 | this.Section.AddSymbol(pendingRollbackBoundary); |
| 69 | } | 68 | } |
| @@ -97,7 +96,7 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 97 | var nextRollbackBoundary = boundariesById[groupSymbol.ChildId]; | 96 | var nextRollbackBoundary = boundariesById[groupSymbol.ChildId]; |
| 98 | if (null != pendingRollbackBoundary) | 97 | if (null != pendingRollbackBoundary) |
| 99 | { | 98 | { |
| 100 | if (pendingRollbackBoundary.Id.Id != DefaultBoundaryId) | 99 | if (pendingRollbackBoundary.Id.Id != BurnConstants.BundleDefaultBoundaryId) |
| 101 | { | 100 | { |
| 102 | this.Messaging.Write(WarningMessages.DiscardedRollbackBoundary(nextRollbackBoundary.SourceLineNumbers, nextRollbackBoundary.Id.Id)); | 101 | this.Messaging.Write(WarningMessages.DiscardedRollbackBoundary(nextRollbackBoundary.SourceLineNumbers, nextRollbackBoundary.Id.Id)); |
| 103 | } | 102 | } |
diff --git a/src/WixToolset.Core/Compiler_Bundle.cs b/src/WixToolset.Core/Compiler_Bundle.cs index e09246df..6d2e75f7 100644 --- a/src/WixToolset.Core/Compiler_Bundle.cs +++ b/src/WixToolset.Core/Compiler_Bundle.cs | |||
| @@ -535,6 +535,10 @@ namespace WixToolset.Core | |||
| 535 | { | 535 | { |
| 536 | case "Id": | 536 | case "Id": |
| 537 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 537 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
| 538 | if (id?.Id == BurnConstants.BurnUXContainerName || id?.Id == BurnConstants.BurnDefaultAttachedContainerName) | ||
| 539 | { | ||
| 540 | this.Messaging.Write(CompilerErrors.ReservedValue(sourceLineNumbers, node.Name.LocalName, "Id", id.Id)); | ||
| 541 | } | ||
| 538 | break; | 542 | break; |
| 539 | case "DownloadUrl": | 543 | case "DownloadUrl": |
| 540 | downloadUrl = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | 544 | downloadUrl = this.Core.GetAttributeValue(sourceLineNumbers, attrib); |
| @@ -1736,27 +1740,27 @@ namespace WixToolset.Core | |||
| 1736 | switch (child.Name.LocalName) | 1740 | switch (child.Name.LocalName) |
| 1737 | { | 1741 | { |
| 1738 | case "MsiPackage": | 1742 | case "MsiPackage": |
| 1739 | previousId = this.ParseMsiPackageElement(child, ComplexReferenceParentType.PackageGroup, "WixChain", previousType, previousId); | 1743 | previousId = this.ParseMsiPackageElement(child, ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, previousType, previousId); |
| 1740 | previousType = ComplexReferenceChildType.Package; | 1744 | previousType = ComplexReferenceChildType.Package; |
| 1741 | break; | 1745 | break; |
| 1742 | case "MspPackage": | 1746 | case "MspPackage": |
| 1743 | previousId = this.ParseMspPackageElement(child, ComplexReferenceParentType.PackageGroup, "WixChain", previousType, previousId); | 1747 | previousId = this.ParseMspPackageElement(child, ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, previousType, previousId); |
| 1744 | previousType = ComplexReferenceChildType.Package; | 1748 | previousType = ComplexReferenceChildType.Package; |
| 1745 | break; | 1749 | break; |
| 1746 | case "MsuPackage": | 1750 | case "MsuPackage": |
| 1747 | previousId = this.ParseMsuPackageElement(child, ComplexReferenceParentType.PackageGroup, "WixChain", previousType, previousId); | 1751 | previousId = this.ParseMsuPackageElement(child, ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, previousType, previousId); |
| 1748 | previousType = ComplexReferenceChildType.Package; | 1752 | previousType = ComplexReferenceChildType.Package; |
| 1749 | break; | 1753 | break; |
| 1750 | case "ExePackage": | 1754 | case "ExePackage": |
| 1751 | previousId = this.ParseExePackageElement(child, ComplexReferenceParentType.PackageGroup, "WixChain", previousType, previousId); | 1755 | previousId = this.ParseExePackageElement(child, ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, previousType, previousId); |
| 1752 | previousType = ComplexReferenceChildType.Package; | 1756 | previousType = ComplexReferenceChildType.Package; |
| 1753 | break; | 1757 | break; |
| 1754 | case "RollbackBoundary": | 1758 | case "RollbackBoundary": |
| 1755 | previousId = this.ParseRollbackBoundaryElement(child, ComplexReferenceParentType.PackageGroup, "WixChain", previousType, previousId); | 1759 | previousId = this.ParseRollbackBoundaryElement(child, ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, previousType, previousId); |
| 1756 | previousType = ComplexReferenceChildType.Package; | 1760 | previousType = ComplexReferenceChildType.Package; |
| 1757 | break; | 1761 | break; |
| 1758 | case "PackageGroupRef": | 1762 | case "PackageGroupRef": |
| 1759 | previousId = this.ParsePackageGroupRefElement(child, ComplexReferenceParentType.PackageGroup, "WixChain", previousType, previousId); | 1763 | previousId = this.ParsePackageGroupRefElement(child, ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, previousType, previousId); |
| 1760 | previousType = ComplexReferenceChildType.PackageGroup; | 1764 | previousType = ComplexReferenceChildType.PackageGroup; |
| 1761 | break; | 1765 | break; |
| 1762 | default: | 1766 | default: |
| @@ -1873,6 +1877,10 @@ namespace WixToolset.Core | |||
| 1873 | { | 1877 | { |
| 1874 | case "Id": | 1878 | case "Id": |
| 1875 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 1879 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
| 1880 | if (id?.Id == BurnConstants.BundleDefaultBoundaryId) | ||
| 1881 | { | ||
| 1882 | this.Messaging.Write(CompilerErrors.ReservedValue(sourceLineNumbers, node.Name.LocalName, "Id", id.Id)); | ||
| 1883 | } | ||
| 1876 | break; | 1884 | break; |
| 1877 | case "Vital": | 1885 | case "Vital": |
| 1878 | vital = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); | 1886 | vital = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); |
| @@ -2151,6 +2159,11 @@ namespace WixToolset.Core | |||
| 2151 | compilerPayload.FinishCompilingPackage(); | 2159 | compilerPayload.FinishCompilingPackage(); |
| 2152 | var id = compilerPayload.Id; | 2160 | var id = compilerPayload.Id; |
| 2153 | 2161 | ||
| 2162 | if (id.Id == BurnConstants.BundleDefaultBoundaryId) | ||
| 2163 | { | ||
| 2164 | this.Messaging.Write(CompilerErrors.ReservedValue(sourceLineNumbers, node.Name.LocalName, "Id", id.Id)); | ||
| 2165 | } | ||
| 2166 | |||
| 2154 | if (null == logPathVariable) | 2167 | if (null == logPathVariable) |
| 2155 | { | 2168 | { |
| 2156 | logPathVariable = String.Concat("WixBundleLog_", id.Id); | 2169 | logPathVariable = String.Concat("WixBundleLog_", id.Id); |
| @@ -2588,6 +2601,10 @@ namespace WixToolset.Core | |||
| 2588 | { | 2601 | { |
| 2589 | case "Id": | 2602 | case "Id": |
| 2590 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 2603 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
| 2604 | if (id?.Id == BurnConstants.BundleChainPackageGroupId) | ||
| 2605 | { | ||
| 2606 | this.Messaging.Write(CompilerErrors.ReservedValue(sourceLineNumbers, node.Name.LocalName, "Id", id.Id)); | ||
| 2607 | } | ||
| 2591 | break; | 2608 | break; |
| 2592 | default: | 2609 | default: |
| 2593 | this.Core.UnexpectedAttribute(node, attrib); | 2610 | this.Core.UnexpectedAttribute(node, attrib); |
| @@ -2694,7 +2711,14 @@ namespace WixToolset.Core | |||
| 2694 | { | 2711 | { |
| 2695 | case "Id": | 2712 | case "Id": |
| 2696 | id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 2713 | id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
| 2697 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixBundlePackageGroup, id); | 2714 | if (id == BurnConstants.BundleChainPackageGroupId) |
| 2715 | { | ||
| 2716 | this.Messaging.Write(CompilerErrors.ReservedValue(sourceLineNumbers, node.Name.LocalName, "Id", id)); | ||
| 2717 | } | ||
| 2718 | else | ||
| 2719 | { | ||
| 2720 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixBundlePackageGroup, id); | ||
| 2721 | } | ||
| 2698 | break; | 2722 | break; |
| 2699 | case "After": | 2723 | case "After": |
| 2700 | after = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 2724 | after = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
diff --git a/src/WixToolset.Core/Link/FlattenAndProcessBundleTablesCommand.cs b/src/WixToolset.Core/Link/FlattenAndProcessBundleTablesCommand.cs index e8df25ed..52734141 100644 --- a/src/WixToolset.Core/Link/FlattenAndProcessBundleTablesCommand.cs +++ b/src/WixToolset.Core/Link/FlattenAndProcessBundleTablesCommand.cs | |||
| @@ -54,7 +54,7 @@ namespace WixToolset.Core.Link | |||
| 54 | 54 | ||
| 55 | // Create Chain packages... | 55 | // Create Chain packages... |
| 56 | groups.UseTypes(new[] { ComplexReferenceParentType.PackageGroup }, new[] { ComplexReferenceChildType.Package, ComplexReferenceChildType.PackageGroup }); | 56 | groups.UseTypes(new[] { ComplexReferenceParentType.PackageGroup }, new[] { ComplexReferenceChildType.Package, ComplexReferenceChildType.PackageGroup }); |
| 57 | groups.FlattenAndRewriteRows(ComplexReferenceParentType.PackageGroup, "WixChain", false); | 57 | groups.FlattenAndRewriteRows(ComplexReferenceParentType.PackageGroup, BurnConstants.BundleChainPackageGroupId, false); |
| 58 | 58 | ||
| 59 | groups.RemoveUsedGroupRows(); | 59 | groups.RemoveUsedGroupRows(); |
| 60 | } | 60 | } |
| @@ -93,7 +93,7 @@ namespace WixToolset.Core.Link | |||
| 93 | switch (groupSymbol.ParentType) | 93 | switch (groupSymbol.ParentType) |
| 94 | { | 94 | { |
| 95 | case ComplexReferenceParentType.PackageGroup: | 95 | case ComplexReferenceParentType.PackageGroup: |
| 96 | if (groupSymbol.ParentId == "WixChain") | 96 | if (groupSymbol.ParentId == BurnConstants.BundleChainPackageGroupId) |
| 97 | { | 97 | { |
| 98 | referencedPackages.Add(groupSymbol.ChildId); | 98 | referencedPackages.Add(groupSymbol.ChildId); |
| 99 | } | 99 | } |
