@joebigelow / wix / commits / 3f6a6337

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