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
}