From 4fac8fca0e04b6d7f9be8c3cf90439f9f614cecf Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 4 Jun 2021 13:38:04 -0500 Subject: Fix loading BAFunctions. --- src/ext/Bal/wixext/BalBurnBackendExtension.cs | 6 ++++-- .../Bal/wixext/Symbols/WixBalBAFunctionsSymbol.cs | 8 ++++++++ .../WixStandardBootstrapperApplication.cpp | 23 ++-------------------- 3 files changed, 14 insertions(+), 23 deletions(-) (limited to 'src/ext/Bal') diff --git a/src/ext/Bal/wixext/BalBurnBackendExtension.cs b/src/ext/Bal/wixext/BalBurnBackendExtension.cs index e8dc7a3e..c6a1e0c1 100644 --- a/src/ext/Bal/wixext/BalBurnBackendExtension.cs +++ b/src/ext/Bal/wixext/BalBurnBackendExtension.cs @@ -107,12 +107,14 @@ namespace WixToolset.Bal } else { - var payloadId = baFunctionsSymbol.Id; - var bundlePayloadSymbol = payloadPropertiesSymbols.Single(x => payloadId == x.Id); + var payloadId = baFunctionsSymbol.PayloadId; + var bundlePayloadSymbol = payloadPropertiesSymbols.Single(x => payloadId == x.Id.Id); if (BurnConstants.BurnUXContainerName != bundlePayloadSymbol.ContainerRef) { this.Messaging.Write(BalErrors.BAFunctionsPayloadRequiredInUXContainer(baFunctionsSymbol.SourceLineNumbers)); } + + baFunctionsSymbol.FilePath = bundlePayloadSymbol.Name; } } diff --git a/src/ext/Bal/wixext/Symbols/WixBalBAFunctionsSymbol.cs b/src/ext/Bal/wixext/Symbols/WixBalBAFunctionsSymbol.cs index 19c7602d..83dd20b0 100644 --- a/src/ext/Bal/wixext/Symbols/WixBalBAFunctionsSymbol.cs +++ b/src/ext/Bal/wixext/Symbols/WixBalBAFunctionsSymbol.cs @@ -12,6 +12,7 @@ namespace WixToolset.Bal new[] { new IntermediateFieldDefinition(nameof(WixBalBAFunctionsSymbolFields.PayloadId), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBalBAFunctionsSymbolFields.FilePath), IntermediateFieldType.String), }, typeof(WixBalBAFunctionsSymbol)); } @@ -24,6 +25,7 @@ namespace WixToolset.Bal.Symbols public enum WixBalBAFunctionsSymbolFields { PayloadId, + FilePath, } public class WixBalBAFunctionsSymbol : IntermediateSymbol @@ -43,5 +45,11 @@ namespace WixToolset.Bal.Symbols get => this.Fields[(int)WixBalBAFunctionsSymbolFields.PayloadId].AsString(); set => this.Set((int)WixBalBAFunctionsSymbolFields.PayloadId, value); } + + public string FilePath + { + get => this.Fields[(int)WixBalBAFunctionsSymbolFields.FilePath].AsString(); + set => this.Set((int)WixBalBAFunctionsSymbolFields.FilePath, value); + } } } \ No newline at end of file diff --git a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp index d4bf7b43..42dfb220 100644 --- a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp +++ b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp @@ -3849,9 +3849,6 @@ private: // privates { HRESULT hr = S_OK; IXMLDOMNode* pBAFunctionsNode = NULL; - IXMLDOMNode* pPayloadNode = NULL; - LPWSTR sczPayloadId = NULL; - LPWSTR sczPayloadXPath = NULL; LPWSTR sczBafName = NULL; LPWSTR sczBafPath = NULL; BA_FUNCTIONS_CREATE_ARGS bafCreateArgs = { }; @@ -3865,21 +3862,8 @@ private: // privates ExitFunction(); } - hr = XmlGetAttributeEx(pBAFunctionsNode, L"PayloadId", &sczPayloadId); - BalExitOnFailure(hr, "Failed to get BAFunctions PayloadId."); - - hr = StrAllocFormatted(&sczPayloadXPath, L"/BootstrapperApplicationData/WixPayloadProperties[@Payload='%ls']", sczPayloadId); - BalExitOnFailure(hr, "Failed to format BAFunctions payload XPath."); - - hr = XmlSelectSingleNode(pixdManifest, sczPayloadXPath, &pPayloadNode); - if (S_FALSE == hr) - { - hr = E_NOTFOUND; - } - BalExitOnFailure(hr, "Failed to find WixPayloadProperties node for BAFunctions PayloadId: %ls.", sczPayloadId); - - hr = XmlGetAttributeEx(pPayloadNode, L"Name", &sczBafName); - BalExitOnFailure(hr, "Failed to get BAFunctions Name."); + hr = XmlGetAttributeEx(pBAFunctionsNode, L"FilePath", &sczBafName); + BalExitOnFailure(hr, "Failed to get BAFunctions FilePath."); hr = PathRelativeToModule(&sczBafPath, sczBafName, m_hModule); BalExitOnFailure(hr, "Failed to get path to BAFunctions DLL."); @@ -3912,10 +3896,7 @@ private: // privates } ReleaseStr(sczBafPath); ReleaseStr(sczBafName); - ReleaseStr(sczPayloadXPath); - ReleaseStr(sczPayloadId); ReleaseObject(pBAFunctionsNode); - ReleaseObject(pPayloadNode); return hr; } -- cgit v1.2.3-55-g6feb