Add GetRelatedBundleVariable to managed IBootstrapperEngine.
Sean Hall committed
Nov 10, 2022 at 22:47 UTC
3f6a633769a9c732db765411ef9b810133ad3957
5 files changed
+47
src/api/burn/WixToolset.Mba.Core/BalUtil.cs
+8
@@ -35,6 +35,14 @@ namespace WixToolset.Mba.Core
35
ref StrUtil.StrHandle psczOut
36
);
37
38
+ [DllImport("mbanative.dll", ExactSpelling = true)]
39
+ internal static extern int BalGetRelatedBundleVariableFromEngine(
40
+ [MarshalAs(UnmanagedType.Interface)] IBootstrapperEngine pEngine,
41
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
42
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
43
+ ref StrUtil.StrHandle psczOut
44
+ );
45
+
46
[DllImport("mbanative.dll", ExactSpelling = true)]
47
[return: MarshalAs(UnmanagedType.Bool)]
48
internal static extern bool BalVariableExistsFromEngine(
src/api/burn/WixToolset.Mba.Core/Engine.cs
+20
@@ -215,6 +215,26 @@ namespace WixToolset.Mba.Core
215
}
216
}
217
218
+ /// <inheritdoc/>
219
+ public string GetRelatedBundleVariable(string bundleId, string name)
220
+ {
221
+ StrUtil.StrHandle handle = new StrUtil.StrHandle();
222
+ try
223
+ {
224
+ int ret = BalUtil.BalGetRelatedBundleVariableFromEngine(this.engine, bundleId, name, ref handle);
225
+ if (ret != NativeMethods.S_OK)
226
+ {
227
+ throw new Win32Exception(ret);
228
+ }
229
+
230
+ return handle.ToUniString();
231
+ }
232
+ finally
233
+ {
234
+ handle.Dispose();
235
+ }
236
+ }
237
+
238
/// <inheritdoc/>
239
public void LaunchApprovedExe(IntPtr hwndParent, string approvedExeForElevationId, string arguments)
240
{
src/api/burn/WixToolset.Mba.Core/IBootstrapperEngine.cs
+11
@@ -278,6 +278,17 @@ namespace WixToolset.Mba.Core
278
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion2,
279
[MarshalAs(UnmanagedType.I4)] out int pnResult
280
);
281
+
282
+ /// <summary>
283
+ /// See <see cref="IEngine.GetRelatedBundleVariable(string, string)"/>.
284
+ /// </summary>
285
+ [PreserveSig]
286
+ int GetRelatedBundleVariable(
287
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
288
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
289
+ IntPtr wzValue,
290
+ ref IntPtr pcchValue
291
+ );
292
}
293
294
/// <summary>
src/api/burn/WixToolset.Mba.Core/IEngine.cs
+7
@@ -104,6 +104,13 @@ namespace WixToolset.Mba.Core
104
/// <param name="name">The name of the variable.</param>
105
string GetVariableVersion(string name);
106
107
+ /// <summary>
108
+ /// Gets persisted variables from a related bundle.
109
+ /// </summary>
110
+ /// <param name="bundleId">The BundleId of the related bundle.</param>
111
+ /// <param name="name">The name of the variable.</param>
112
+ string GetRelatedBundleVariable(string bundleId, string name);
113
+
114
/// <summary>
115
/// Launches a preapproved executable elevated. As long as the engine already elevated, there will be no UAC prompt.
116
/// </summary>
src/api/burn/mbanative/mbanative.def
+1
@@ -6,6 +6,7 @@ EXPORTS
6
BalFormatStringFromEngine
7
BalGetStringVariableFromEngine
8
BalGetVersionVariableFromEngine
9
+ BalGetRelatedBundleVariableFromEngine
10
BalVariableExistsFromEngine
11
InitializeFromCreateArgs
12
StoreBAInCreateResults