@joebigelow / wix / commits / 4fac8fca

Fix loading BAFunctions.

Sean Hall committed Jun 4, 2021 at 13:38 UTC 4fac8fca0e04b6d7f9be8c3cf90439f9f614cecf
3 files changed +14 -23
src/ext/Bal/wixext/BalBurnBackendExtension.cs
+4 -2
@@ -107,12 +107,14 @@ namespace WixToolset.Bal
107 }
108 else
109 {
110 - var payloadId = baFunctionsSymbol.Id;
111 - var bundlePayloadSymbol = payloadPropertiesSymbols.Single(x => payloadId == x.Id);
110 + var payloadId = baFunctionsSymbol.PayloadId;
111 + var bundlePayloadSymbol = payloadPropertiesSymbols.Single(x => payloadId == x.Id.Id);
112 if (BurnConstants.BurnUXContainerName != bundlePayloadSymbol.ContainerRef)
113 {
114 this.Messaging.Write(BalErrors.BAFunctionsPayloadRequiredInUXContainer(baFunctionsSymbol.SourceLineNumbers));
115 }
116 +
117 + baFunctionsSymbol.FilePath = bundlePayloadSymbol.Name;
118 }
119 }
120
src/ext/Bal/wixext/Symbols/WixBalBAFunctionsSymbol.cs
+8
@@ -12,6 +12,7 @@ namespace WixToolset.Bal
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(WixBalBAFunctionsSymbolFields.PayloadId), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(WixBalBAFunctionsSymbolFields.FilePath), IntermediateFieldType.String),
16 },
17 typeof(WixBalBAFunctionsSymbol));
18 }
@@ -24,6 +25,7 @@ namespace WixToolset.Bal.Symbols
25 public enum WixBalBAFunctionsSymbolFields
26 {
27 PayloadId,
28 + FilePath,
29 }
30
31 public class WixBalBAFunctionsSymbol : IntermediateSymbol
@@ -43,5 +45,11 @@ namespace WixToolset.Bal.Symbols
45 get => this.Fields[(int)WixBalBAFunctionsSymbolFields.PayloadId].AsString();
46 set => this.Set((int)WixBalBAFunctionsSymbolFields.PayloadId, value);
47 }
48 +
49 + public string FilePath
50 + {
51 + get => this.Fields[(int)WixBalBAFunctionsSymbolFields.FilePath].AsString();
52 + set => this.Set((int)WixBalBAFunctionsSymbolFields.FilePath, value);
53 + }
54 }
55 }
\ No newline at end of file
src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp
+2 -21
@@ -3849,9 +3849,6 @@ private: // privates
3849 {
3850 HRESULT hr = S_OK;
3851 IXMLDOMNode* pBAFunctionsNode = NULL;
3852 - IXMLDOMNode* pPayloadNode = NULL;
3853 - LPWSTR sczPayloadId = NULL;
3854 - LPWSTR sczPayloadXPath = NULL;
3852 LPWSTR sczBafName = NULL;
3853 LPWSTR sczBafPath = NULL;
3854 BA_FUNCTIONS_CREATE_ARGS bafCreateArgs = { };
@@ -3865,21 +3862,8 @@ private: // privates
3862 ExitFunction();
3863 }
3864
3868 - hr = XmlGetAttributeEx(pBAFunctionsNode, L"PayloadId", &sczPayloadId);
3869 - BalExitOnFailure(hr, "Failed to get BAFunctions PayloadId.");
3870 -
3871 - hr = StrAllocFormatted(&sczPayloadXPath, L"/BootstrapperApplicationData/WixPayloadProperties[@Payload='%ls']", sczPayloadId);
3872 - BalExitOnFailure(hr, "Failed to format BAFunctions payload XPath.");
3873 -
3874 - hr = XmlSelectSingleNode(pixdManifest, sczPayloadXPath, &pPayloadNode);
3875 - if (S_FALSE == hr)
3876 - {
3877 - hr = E_NOTFOUND;
3878 - }
3879 - BalExitOnFailure(hr, "Failed to find WixPayloadProperties node for BAFunctions PayloadId: %ls.", sczPayloadId);
3880 -
3881 - hr = XmlGetAttributeEx(pPayloadNode, L"Name", &sczBafName);
3882 - BalExitOnFailure(hr, "Failed to get BAFunctions Name.");
3865 + hr = XmlGetAttributeEx(pBAFunctionsNode, L"FilePath", &sczBafName);
3866 + BalExitOnFailure(hr, "Failed to get BAFunctions FilePath.");
3867
3868 hr = PathRelativeToModule(&sczBafPath, sczBafName, m_hModule);
3869 BalExitOnFailure(hr, "Failed to get path to BAFunctions DLL.");
@@ -3912,10 +3896,7 @@ private: // privates
3896 }
3897 ReleaseStr(sczBafPath);
3898 ReleaseStr(sczBafName);
3915 - ReleaseStr(sczPayloadXPath);
3916 - ReleaseStr(sczPayloadId);
3899 ReleaseObject(pBAFunctionsNode);
3918 - ReleaseObject(pPayloadNode);
3900
3901 return hr;
3902 }