From 3f6a633769a9c732db765411ef9b810133ad3957 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 10 Nov 2022 22:47:39 -0600 Subject: Add GetRelatedBundleVariable to managed IBootstrapperEngine. --- src/api/burn/WixToolset.Mba.Core/BalUtil.cs | 8 ++++++++ src/api/burn/WixToolset.Mba.Core/Engine.cs | 20 ++++++++++++++++++++ .../burn/WixToolset.Mba.Core/IBootstrapperEngine.cs | 11 +++++++++++ src/api/burn/WixToolset.Mba.Core/IEngine.cs | 7 +++++++ src/api/burn/mbanative/mbanative.def | 1 + 5 files changed, 47 insertions(+) diff --git a/src/api/burn/WixToolset.Mba.Core/BalUtil.cs b/src/api/burn/WixToolset.Mba.Core/BalUtil.cs index 4c949a5a..e8b0b7c0 100644 --- a/src/api/burn/WixToolset.Mba.Core/BalUtil.cs +++ b/src/api/burn/WixToolset.Mba.Core/BalUtil.cs @@ -35,6 +35,14 @@ namespace WixToolset.Mba.Core ref StrUtil.StrHandle psczOut ); + [DllImport("mbanative.dll", ExactSpelling = true)] + internal static extern int BalGetRelatedBundleVariableFromEngine( + [MarshalAs(UnmanagedType.Interface)] IBootstrapperEngine pEngine, + [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId, + [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, + ref StrUtil.StrHandle psczOut + ); + [DllImport("mbanative.dll", ExactSpelling = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool BalVariableExistsFromEngine( diff --git a/src/api/burn/WixToolset.Mba.Core/Engine.cs b/src/api/burn/WixToolset.Mba.Core/Engine.cs index e7ab533b..3ff693c0 100644 --- a/src/api/burn/WixToolset.Mba.Core/Engine.cs +++ b/src/api/burn/WixToolset.Mba.Core/Engine.cs @@ -215,6 +215,26 @@ namespace WixToolset.Mba.Core } } + /// + public string GetRelatedBundleVariable(string bundleId, string name) + { + StrUtil.StrHandle handle = new StrUtil.StrHandle(); + try + { + int ret = BalUtil.BalGetRelatedBundleVariableFromEngine(this.engine, bundleId, name, ref handle); + if (ret != NativeMethods.S_OK) + { + throw new Win32Exception(ret); + } + + return handle.ToUniString(); + } + finally + { + handle.Dispose(); + } + } + /// public void LaunchApprovedExe(IntPtr hwndParent, string approvedExeForElevationId, string arguments) { diff --git a/src/api/burn/WixToolset.Mba.Core/IBootstrapperEngine.cs b/src/api/burn/WixToolset.Mba.Core/IBootstrapperEngine.cs index 408c9955..eca8dda1 100644 --- a/src/api/burn/WixToolset.Mba.Core/IBootstrapperEngine.cs +++ b/src/api/burn/WixToolset.Mba.Core/IBootstrapperEngine.cs @@ -278,6 +278,17 @@ namespace WixToolset.Mba.Core [MarshalAs(UnmanagedType.LPWStr)] string wzVersion2, [MarshalAs(UnmanagedType.I4)] out int pnResult ); + + /// + /// See . + /// + [PreserveSig] + int GetRelatedBundleVariable( + [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId, + [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, + IntPtr wzValue, + ref IntPtr pcchValue + ); } /// diff --git a/src/api/burn/WixToolset.Mba.Core/IEngine.cs b/src/api/burn/WixToolset.Mba.Core/IEngine.cs index 2b9a90e0..7ffa80d7 100644 --- a/src/api/burn/WixToolset.Mba.Core/IEngine.cs +++ b/src/api/burn/WixToolset.Mba.Core/IEngine.cs @@ -104,6 +104,13 @@ namespace WixToolset.Mba.Core /// The name of the variable. string GetVariableVersion(string name); + /// + /// Gets persisted variables from a related bundle. + /// + /// The BundleId of the related bundle. + /// The name of the variable. + string GetRelatedBundleVariable(string bundleId, string name); + /// /// Launches a preapproved executable elevated. As long as the engine already elevated, there will be no UAC prompt. /// diff --git a/src/api/burn/mbanative/mbanative.def b/src/api/burn/mbanative/mbanative.def index 4bad14d0..b7a858df 100644 --- a/src/api/burn/mbanative/mbanative.def +++ b/src/api/burn/mbanative/mbanative.def @@ -6,6 +6,7 @@ EXPORTS BalFormatStringFromEngine BalGetStringVariableFromEngine BalGetVersionVariableFromEngine + BalGetRelatedBundleVariableFromEngine BalVariableExistsFromEngine InitializeFromCreateArgs StoreBAInCreateResults -- cgit v1.2.3-55-g6feb