From 0d3d54992104288e9ee0c834d0b96e8502fd2d42 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 11 Jan 2024 18:26:20 -0800 Subject: Move the BootstrapperApplication out of proc --- src/ext/Bal/wixext/BalBurnBackendExtension.cs | 74 ++++++--------------------- 1 file changed, 15 insertions(+), 59 deletions(-) (limited to 'src/ext/Bal/wixext/BalBurnBackendExtension.cs') diff --git a/src/ext/Bal/wixext/BalBurnBackendExtension.cs b/src/ext/Bal/wixext/BalBurnBackendExtension.cs index 0293b236..84e4323e 100644 --- a/src/ext/Bal/wixext/BalBurnBackendExtension.cs +++ b/src/ext/Bal/wixext/BalBurnBackendExtension.cs @@ -18,16 +18,17 @@ namespace WixToolset.Bal { private static readonly IntermediateSymbolDefinition[] BurnSymbolDefinitions = { +#pragma warning disable 0612 // obsolete BalSymbolDefinitions.WixBalBAFactoryAssembly, +#pragma warning restore 0612 BalSymbolDefinitions.WixBalBAFunctions, BalSymbolDefinitions.WixBalCondition, BalSymbolDefinitions.WixBalPackageInfo, - BalSymbolDefinitions.WixDncOptions, - BalSymbolDefinitions.WixMbaPrereqInformation, + BalSymbolDefinitions.WixPrereqInformation, BalSymbolDefinitions.WixStdbaCommandLine, BalSymbolDefinitions.WixStdbaOptions, BalSymbolDefinitions.WixStdbaOverridableVariable, - BalSymbolDefinitions.WixMbaPrereqOptions, + BalSymbolDefinitions.WixPrereqOptions, }; protected override IReadOnlyCollection SymbolDefinitions => BurnSymbolDefinitions; @@ -112,59 +113,28 @@ namespace WixToolset.Bal } var isIuiBA = balBaSymbol.Type == WixBalBootstrapperApplicationType.InternalUi; + var isPreqBA = balBaSymbol.Type == WixBalBootstrapperApplicationType.Prerequisite; var isStdBA = balBaSymbol.Type == WixBalBootstrapperApplicationType.Standard; - var isMBA = balBaSymbol.Type == WixBalBootstrapperApplicationType.ManagedHost; - var isDNC = balBaSymbol.Type == WixBalBootstrapperApplicationType.DotNetCoreHost; - var isSCD = isDNC && this.VerifySCD(section); - - if (!isIuiBA && !isStdBA && !isMBA && !isDNC) + if (!isIuiBA && !isPreqBA && !isStdBA) { throw new WixException($"Invalid WixBalBootstrapperApplicationType: '{balBaSymbol.Type}'"); } + this.VerifyBAFunctions(section); + if (isIuiBA) { // This needs to happen before VerifyPrereqPackages because it can add prereq packages. this.VerifyPrimaryPackages(section, balBaSymbol.SourceLineNumbers); } - if (isDNC) + if (isIuiBA || isPreqBA) { - this.FinalizeBAFactorySymbol(section, balBaSymbol.SourceLineNumbers); - } - - if (isIuiBA || isStdBA || isMBA || isDNC) - { - this.VerifyBAFunctions(section); - } - - if (isIuiBA || isMBA || (isDNC && !isSCD)) - { - this.VerifyPrereqPackages(section, balBaSymbol.SourceLineNumbers, isDNC, isIuiBA); + this.VerifyPrereqPackages(section, balBaSymbol.SourceLineNumbers, isIuiBA); } } - private void FinalizeBAFactorySymbol(IntermediateSection section, SourceLineNumber baSourceLineNumbers) - { - var factorySymbol = section.Symbols.OfType().SingleOrDefault(); - if (null == factorySymbol) - { - this.Messaging.Write(BalErrors.MissingDNCBAFactoryAssembly(baSourceLineNumbers)); - return; - } - - var factoryPayloadSymbol = section.Symbols.OfType() - .Where(p => p.Id.Id == factorySymbol.PayloadId) - .SingleOrDefault(); - if (null == factoryPayloadSymbol) - { - throw new WixException($"Missing payload symbol with id: 'factorySymbol.PayloadId'"); - } - - factorySymbol.FilePath = factoryPayloadSymbol.Name; - } - private void VerifyBAFunctions(IntermediateSection section) { WixBalBAFunctionsSymbol baFunctionsSymbol = null; @@ -234,7 +204,7 @@ namespace WixToolset.Bal var nonPermanentNonPrimaryPackages = new List(); var balPackageInfoSymbolsByPackageId = section.Symbols.OfType().ToDictionary(x => x.PackageId); - var mbaPrereqInfoSymbolsByPackageId = section.Symbols.OfType().ToDictionary(x => x.PackageId); + var mbaPrereqInfoSymbolsByPackageId = section.Symbols.OfType().ToDictionary(x => x.PackageId); var msiPackageSymbolsByPackageId = section.Symbols.OfType().ToDictionary(x => x.Id.Id); var packageSymbols = section.Symbols.OfType().ToList(); foreach (var packageSymbol in packageSymbols) @@ -263,7 +233,7 @@ namespace WixToolset.Bal { if (!isPrereq) { - var prereqInfoSymbol = section.AddSymbol(new WixMbaPrereqInformationSymbol(packageSymbol.SourceLineNumbers, new Identifier(AccessModifier.Global, packageId)) + var prereqInfoSymbol = section.AddSymbol(new WixPrereqInformationSymbol(packageSymbol.SourceLineNumbers, new Identifier(AccessModifier.Global, packageId)) { PackageId = packageId, }); @@ -476,13 +446,12 @@ namespace WixToolset.Bal } } - private void VerifyPrereqPackages(IntermediateSection section, SourceLineNumber baSourceLineNumbers, bool isDNC, bool isIuiBA) + private void VerifyPrereqPackages(IntermediateSection section, SourceLineNumber baSourceLineNumbers, bool isIuiBA) { - var prereqInfoSymbols = section.Symbols.OfType().ToList(); + var prereqInfoSymbols = section.Symbols.OfType().ToList(); if (!isIuiBA && prereqInfoSymbols.Count == 0) { - var message = isDNC ? BalErrors.MissingDNCPrereq(baSourceLineNumbers) : BalErrors.MissingMBAPrereq(baSourceLineNumbers); - this.Messaging.Write(message); + this.Messaging.Write(BalErrors.MissingPrereq(baSourceLineNumbers)); return; } @@ -514,18 +483,5 @@ namespace WixToolset.Bal } } } - - private bool VerifySCD(IntermediateSection section) - { - var isSCD = false; - - var dncOptions = section.Symbols.OfType().SingleOrDefault(); - if (dncOptions != null) - { - isSCD = dncOptions.SelfContainedDeployment != 0; - } - - return isSCD; - } } } -- cgit v1.2.3-55-g6feb