From 386a3578413ba16b3c0615d47870ee44a0e461f6 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 30 Mar 2022 17:08:40 -0500 Subject: Implement BundlePackage. 3693 --- .../inc/BootstrapperApplication.h | 1 + .../IBootstrapperApplication.cs | 5 + .../WixToolset.Data/Symbols/SymbolDefinitions.cs | 8 ++ .../Symbols/WixBundleBundlePackagePayloadSymbol.cs | 36 +++++++ .../Symbols/WixBundleBundlePackageSymbol.cs | 118 +++++++++++++++++++++ .../Symbols/WixBundlePackageSymbol.cs | 3 +- 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackagePayloadSymbol.cs create mode 100644 src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs (limited to 'src/api') diff --git a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h index df8cac76..943f5ead 100644 --- a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h +++ b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h @@ -106,6 +106,7 @@ enum BOOTSTRAPPER_RELATION_TYPE BOOTSTRAPPER_RELATION_DEPENDENT_ADDON, BOOTSTRAPPER_RELATION_DEPENDENT_PATCH, BOOTSTRAPPER_RELATION_UPDATE, + BOOTSTRAPPER_RELATION_CHAIN_PACKAGE, }; enum BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE diff --git a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs index 1786eecd..7cf0957a 100644 --- a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs @@ -1714,6 +1714,11 @@ namespace WixToolset.Mba.Core /// /// Update, + + /// + /// + /// + ChainPackage, } /// diff --git a/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs b/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs index 21ca1b6d..d4a91343 100644 --- a/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs +++ b/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs @@ -125,6 +125,8 @@ namespace WixToolset.Data WixBundleCustomData, WixBundleCustomDataAttribute, WixBundleCustomDataCell, + WixBundleBundlePackage, + WixBundleBundlePackagePayload, WixBundleExePackage, WixBundleExePackagePayload, WixBundleExtension, @@ -553,6 +555,12 @@ namespace WixToolset.Data case SymbolDefinitionType.WixBundle: return SymbolDefinitions.WixBundle; + case SymbolDefinitionType.WixBundleBundlePackage: + return SymbolDefinitions.WixBundleBundlePackage; + + case SymbolDefinitionType.WixBundleBundlePackagePayload: + return SymbolDefinitions.WixBundleBundlePackagePayload; + case SymbolDefinitionType.WixBundleContainer: return SymbolDefinitions.WixBundleContainer; diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackagePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackagePayloadSymbol.cs new file mode 100644 index 00000000..a171682d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackagePayloadSymbol.cs @@ -0,0 +1,36 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolset.Data +{ + using WixToolset.Data.Symbols; + + public static partial class SymbolDefinitions + { + public static readonly IntermediateSymbolDefinition WixBundleBundlePackagePayload = new IntermediateSymbolDefinition( + SymbolDefinitionType.WixBundleBundlePackagePayload, + new IntermediateFieldDefinition[] + { + }, + typeof(WixBundleBundlePackagePayloadSymbol)); + } +} + +namespace WixToolset.Data.Symbols +{ + public enum WixBundleBundlePackagePayloadSymbolFields + { + } + + public class WixBundleBundlePackagePayloadSymbol : IntermediateSymbol + { + public WixBundleBundlePackagePayloadSymbol() : base(SymbolDefinitions.WixBundleBundlePackagePayload, null, null) + { + } + + public WixBundleBundlePackagePayloadSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleBundlePackagePayload, sourceLineNumber, id) + { + } + + public IntermediateField this[WixBundleBundlePackagePayloadSymbolFields index] => this.Fields[(int)index]; + } +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs new file mode 100644 index 00000000..36b9eb67 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs @@ -0,0 +1,118 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolset.Data +{ + using WixToolset.Data.Symbols; + + public static partial class SymbolDefinitions + { + public static readonly IntermediateSymbolDefinition WixBundleBundlePackage = new IntermediateSymbolDefinition( + SymbolDefinitionType.WixBundleBundlePackage, + new[] + { + new IntermediateFieldDefinition(nameof(WixBundleBundlePackageSymbolFields.Attributes), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixBundleBundlePackageSymbolFields.BundleId), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBundleBundlePackageSymbolFields.InstallCommand), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBundleBundlePackageSymbolFields.RepairCommand), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBundleBundlePackageSymbolFields.UninstallCommand), IntermediateFieldType.String), + }, + typeof(WixBundleBundlePackageSymbol)); + } +} + +namespace WixToolset.Data.Symbols +{ + using System; + + public enum WixBundleBundlePackageSymbolFields + { + Attributes, + BundleId, + InstallCommand, + RepairCommand, + UninstallCommand, + } + + [Flags] + public enum WixBundleBundlePackageAttributes + { + None = 0, + SupportsBurnProtocol = 1, + Win64 = 2, + } + + public class WixBundleBundlePackageSymbol : IntermediateSymbol + { + public WixBundleBundlePackageSymbol() : base(SymbolDefinitions.WixBundleBundlePackage, null, null) + { + } + + public WixBundleBundlePackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleBundlePackage, sourceLineNumber, id) + { + } + + public IntermediateField this[WixBundleBundlePackageSymbolFields index] => this.Fields[(int)index]; + + public WixBundleBundlePackageAttributes Attributes + { + get => (WixBundleBundlePackageAttributes)(int)this.Fields[(int)WixBundleBundlePackageSymbolFields.Attributes]; + set => this.Set((int)WixBundleBundlePackageSymbolFields.Attributes, (int)value); + } + + public string BundleId + { + get => (string)this.Fields[(int)WixBundleBundlePackageSymbolFields.BundleId]; + set => this.Set((int)WixBundleBundlePackageSymbolFields.BundleId, value); + } + + public string InstallCommand + { + get => (string)this.Fields[(int)WixBundleBundlePackageSymbolFields.InstallCommand]; + set => this.Set((int)WixBundleBundlePackageSymbolFields.InstallCommand, value); + } + + public string RepairCommand + { + get => (string)this.Fields[(int)WixBundleBundlePackageSymbolFields.RepairCommand]; + set => this.Set((int)WixBundleBundlePackageSymbolFields.RepairCommand, value); + } + + public string UninstallCommand + { + get => (string)this.Fields[(int)WixBundleBundlePackageSymbolFields.UninstallCommand]; + set => this.Set((int)WixBundleBundlePackageSymbolFields.UninstallCommand, value); + } + + public bool SupportsBurnProtocol + { + get { return this.Attributes.HasFlag(WixBundleBundlePackageAttributes.SupportsBurnProtocol); } + set + { + if (value) + { + this.Attributes |= WixBundleBundlePackageAttributes.SupportsBurnProtocol; + } + else + { + this.Attributes &= ~WixBundleBundlePackageAttributes.SupportsBurnProtocol; + } + } + } + + public bool Win64 + { + get { return this.Attributes.HasFlag(WixBundleBundlePackageAttributes.Win64); } + set + { + if (value) + { + this.Attributes |= WixBundleBundlePackageAttributes.Win64; + } + else + { + this.Attributes &= ~WixBundleBundlePackageAttributes.Win64; + } + } + } + } +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs index 3d1a6ce8..e68a9d09 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs @@ -66,6 +66,7 @@ namespace WixToolset.Data.Symbols /// public enum WixBundlePackageType { + Bundle, Exe, Msi, Msp, @@ -209,4 +210,4 @@ namespace WixToolset.Data.Symbols public bool Permanent => (this.Attributes & WixBundlePackageAttributes.Permanent) == WixBundlePackageAttributes.Permanent; } -} \ No newline at end of file +} -- cgit v1.2.3-55-g6feb