From ca5d60d267051b4b75e22763ad8eda06f0501451 Mon Sep 17 00:00:00 2001 From: Sean Hall <r.sean.hall@gmail.com> Date: Wed, 2 Dec 2020 22:38:23 -0600 Subject: WIXFEAT:4626,5386 - Add more BA events. OnBeginMsiTransactionBegin, OnBeginMsiTransactionComplete, OnCommitMsiTransactionBegin, OnCommitMsiTransactionComplete, OnRollbackMsiTransactionBegin, OnRollbackMsiTransactionComplete, OnPauseAutomaticUpdatesBegin, OnPauseAutomaticUpdatesComplete, OnSystemRestorePointBegin, OnSystemRestorePointComplete --- src/WixToolset.Mba.Core/BootstrapperApplication.cs | 278 ++++++++++++++++++++- src/WixToolset.Mba.Core/EventArgs.cs | 191 +++++++++++++- .../IBootstrapperApplication.cs | 64 ++++- .../IDefaultBootstrapperApplication.cs | 15 +- src/balutil/balutil.vcxproj | 8 +- src/balutil/inc/BAFunctions.h | 10 + src/balutil/inc/BalBaseBAFunctions.h | 73 ++++++ src/balutil/inc/BalBaseBAFunctionsProc.h | 10 + src/balutil/inc/BalBaseBootstrapperApplication.h | 75 ++++++ .../inc/BalBaseBootstrapperApplicationProc.h | 119 +++++++++ src/balutil/inc/IBootstrapperApplication.h | 43 ++++ src/balutil/packages.config | 4 +- src/bextutil/bextutil.vcxproj | 8 +- src/bextutil/packages.config | 4 +- src/mbanative/mbanative.vcxproj | 8 +- src/mbanative/packages.config | 4 +- src/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj | 8 +- src/test/BalUtilUnitTest/packages.config | 4 +- src/test/BextUtilUnitTest/BextUtilUnitTest.vcxproj | 8 +- src/test/BextUtilUnitTest/packages.config | 4 +- 20 files changed, 893 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/WixToolset.Mba.Core/BootstrapperApplication.cs index 472c553a..2d527427 100644 --- a/src/WixToolset.Mba.Core/BootstrapperApplication.cs +++ b/src/WixToolset.Mba.Core/BootstrapperApplication.cs @@ -320,12 +320,62 @@ namespace WixToolset.Mba.Core /// <summary> /// Fired when the engine is about to launch the preapproved executable. /// </summary> - public event EventHandler<LaunchApprovedExeBeginArgs> LaunchApprovedExeBegin; + public event EventHandler<LaunchApprovedExeBeginEventArgs> LaunchApprovedExeBegin; /// <summary> /// Fired when the engine has completed launching the preapproved executable. /// </summary> - public event EventHandler<LaunchApprovedExeCompleteArgs> LaunchApprovedExeComplete; + public event EventHandler<LaunchApprovedExeCompleteEventArgs> LaunchApprovedExeComplete; + + /// <summary> + /// Fired when the engine is about to begin an MSI transaction. + /// </summary> + public event EventHandler<BeginMsiTransactionBeginEventArgs> BeginMsiTransactionBegin; + + /// <summary> + /// Fired when the engine has completed beginning an MSI transaction. + /// </summary> + public event EventHandler<BeginMsiTransactionCompleteEventArgs> BeginMsiTransactionComplete; + + /// <summary> + /// Fired when the engine is about to commit an MSI transaction. + /// </summary> + public event EventHandler<CommitMsiTransactionBeginEventArgs> CommitMsiTransactionBegin; + + /// <summary> + /// Fired when the engine has completed comitting an MSI transaction. + /// </summary> + public event EventHandler<CommitMsiTransactionCompleteEventArgs> CommitMsiTransactionComplete; + + /// <summary> + /// Fired when the engine is about to rollback an MSI transaction. + /// </summary> + public event EventHandler<RollbackMsiTransactionBeginEventArgs> RollbackMsiTransactionBegin; + + /// <summary> + /// Fired when the engine has completed rolling back an MSI transaction. + /// </summary> + public event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete; + + /// <summary> + /// Fired when the engine is about to pause Windows automatic updates. + /// </summary> + public event EventHandler<PauseAutomaticUpdatesBeginEventArgs> PauseAutomaticUpdatesBegin; + + /// <summary> + /// Fired when the engine has completed pausing Windows automatic updates. + /// </summary> + public event EventHandler<PauseAutomaticUpdatesCompleteEventArgs> PauseAutomaticUpdatesComplete; + + /// <summary> + /// Fired when the engine is about to take a system restore point. + /// </summary> + public event EventHandler<SystemRestorePointBeginEventArgs> SystemRestorePointBegin; + + /// <summary> + /// Fired when the engine has completed taking a system restore point. + /// </summary> + public event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete; /// <summary> /// Entry point that is called when the bootstrapper application is ready to run. @@ -1071,9 +1121,9 @@ namespace WixToolset.Mba.Core /// Called by the engine before trying to launch the preapproved executable. /// </summary> /// <param name="args">Additional arguments for this event.</param> - protected virtual void OnLaunchApprovedExeBegin(LaunchApprovedExeBeginArgs args) + protected virtual void OnLaunchApprovedExeBegin(LaunchApprovedExeBeginEventArgs args) { - EventHandler<LaunchApprovedExeBeginArgs> handler = this.LaunchApprovedExeBegin; + EventHandler<LaunchApprovedExeBeginEventArgs> handler = this.LaunchApprovedExeBegin; if (null != handler) { handler(this, args); @@ -1084,9 +1134,139 @@ namespace WixToolset.Mba.Core /// Called by the engine after trying to launch the preapproved executable. /// </summary> /// <param name="args">Additional arguments for this event.</param> - protected virtual void OnLaunchApprovedExeComplete(LaunchApprovedExeCompleteArgs args) + protected virtual void OnLaunchApprovedExeComplete(LaunchApprovedExeCompleteEventArgs args) + { + EventHandler<LaunchApprovedExeCompleteEventArgs> handler = this.LaunchApprovedExeComplete; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine before beginning an MSI transaction. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnBeginMsiTransactionBegin(BeginMsiTransactionBeginEventArgs args) + { + EventHandler<BeginMsiTransactionBeginEventArgs> handler = this.BeginMsiTransactionBegin; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine after beginning an MSI transaction. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnBeginMsiTransactionComplete(BeginMsiTransactionCompleteEventArgs args) + { + EventHandler<BeginMsiTransactionCompleteEventArgs> handler = this.BeginMsiTransactionComplete; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine before committing an MSI transaction. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnCommitMsiTransactionBegin(CommitMsiTransactionBeginEventArgs args) + { + EventHandler<CommitMsiTransactionBeginEventArgs> handler = this.CommitMsiTransactionBegin; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine after committing an MSI transaction. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnCommitMsiTransactionComplete(CommitMsiTransactionCompleteEventArgs args) + { + EventHandler<CommitMsiTransactionCompleteEventArgs> handler = this.CommitMsiTransactionComplete; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine before rolling back an MSI transaction. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnRollbackMsiTransactionBegin(RollbackMsiTransactionBeginEventArgs args) + { + EventHandler<RollbackMsiTransactionBeginEventArgs> handler = this.RollbackMsiTransactionBegin; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine after rolling back an MSI transaction. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnRollbackMsiTransactionComplete(RollbackMsiTransactionCompleteEventArgs args) + { + EventHandler<RollbackMsiTransactionCompleteEventArgs> handler = this.RollbackMsiTransactionComplete; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine before pausing Windows automatic updates. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnPauseAutomaticUpdatesBegin(PauseAutomaticUpdatesBeginEventArgs args) + { + EventHandler<PauseAutomaticUpdatesBeginEventArgs> handler = this.PauseAutomaticUpdatesBegin; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine after pausing Windows automatic updates. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnPauseAutomaticUpdatesComplete(PauseAutomaticUpdatesCompleteEventArgs args) + { + EventHandler<PauseAutomaticUpdatesCompleteEventArgs> handler = this.PauseAutomaticUpdatesComplete; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine before taking a system restore point. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnSystemRestorePointBegin(SystemRestorePointBeginEventArgs args) { - EventHandler<LaunchApprovedExeCompleteArgs> handler = this.LaunchApprovedExeComplete; + EventHandler<SystemRestorePointBeginEventArgs> handler = this.SystemRestorePointBegin; + if (null != handler) + { + handler(this, args); + } + } + + /// <summary> + /// Called by the engine after taking a system restore point. + /// </summary> + /// <param name="args">Additional arguments for this event.</param> + protected virtual void OnSystemRestorePointComplete(SystemRestorePointCompleteEventArgs args) + { + EventHandler<SystemRestorePointCompleteEventArgs> handler = this.SystemRestorePointComplete; if (null != handler) { handler(this, args); @@ -1588,7 +1768,7 @@ namespace WixToolset.Mba.Core int IBootstrapperApplication.OnLaunchApprovedExeBegin(ref bool fCancel) { - LaunchApprovedExeBeginArgs args = new LaunchApprovedExeBeginArgs(fCancel); + LaunchApprovedExeBeginEventArgs args = new LaunchApprovedExeBeginEventArgs(fCancel); this.OnLaunchApprovedExeBegin(args); fCancel = args.Cancel; @@ -1597,12 +1777,94 @@ namespace WixToolset.Mba.Core int IBootstrapperApplication.OnLaunchApprovedExeComplete(int hrStatus, int processId) { - LaunchApprovedExeCompleteArgs args = new LaunchApprovedExeCompleteArgs(hrStatus, processId); + LaunchApprovedExeCompleteEventArgs args = new LaunchApprovedExeCompleteEventArgs(hrStatus, processId); this.OnLaunchApprovedExeComplete(args); return args.HResult; } + int IBootstrapperApplication.OnBeginMsiTransactionBegin(string transactionId, ref bool fCancel) + { + BeginMsiTransactionBeginEventArgs args = new BeginMsiTransactionBeginEventArgs(transactionId, fCancel); + this.OnBeginMsiTransactionBegin(args); + + fCancel = args.Cancel; + return args.HResult; + } + + int IBootstrapperApplication.OnBeginMsiTransactionComplete(string transactionId, int hrStatus) + { + BeginMsiTransactionCompleteEventArgs args = new BeginMsiTransactionCompleteEventArgs(transactionId, hrStatus); + this.OnBeginMsiTransactionComplete(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnCommitMsiTransactionBegin(string transactionId, ref bool fCancel) + { + CommitMsiTransactionBeginEventArgs args = new CommitMsiTransactionBeginEventArgs(transactionId, fCancel); + this.OnCommitMsiTransactionBegin(args); + + fCancel = args.Cancel; + return args.HResult; + } + + int IBootstrapperApplication.OnCommitMsiTransactionComplete(string transactionId, int hrStatus) + { + CommitMsiTransactionCompleteEventArgs args = new CommitMsiTransactionCompleteEventArgs(transactionId, hrStatus); + this.OnCommitMsiTransactionComplete(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnRollbackMsiTransactionBegin(string transactionId) + { + RollbackMsiTransactionBeginEventArgs args = new RollbackMsiTransactionBeginEventArgs(transactionId); + this.OnRollbackMsiTransactionBegin(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnRollbackMsiTransactionComplete(string transactionId, int hrStatus) + { + RollbackMsiTransactionCompleteEventArgs args = new RollbackMsiTransactionCompleteEventArgs(transactionId, hrStatus); + this.OnRollbackMsiTransactionComplete(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnPauseAutomaticUpdatesBegin() + { + PauseAutomaticUpdatesBeginEventArgs args = new PauseAutomaticUpdatesBeginEventArgs(); + this.OnPauseAutomaticUpdatesBegin(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnPauseAutomaticUpdatesComplete(int hrStatus) + { + PauseAutomaticUpdatesCompleteEventArgs args = new PauseAutomaticUpdatesCompleteEventArgs(hrStatus); + this.OnPauseAutomaticUpdatesComplete(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnSystemRestorePointBegin() + { + SystemRestorePointBeginEventArgs args = new SystemRestorePointBeginEventArgs(); + this.OnSystemRestorePointBegin(args); + + return args.HResult; + } + + int IBootstrapperApplication.OnSystemRestorePointComplete(int hrStatus) + { + SystemRestorePointCompleteEventArgs args = new SystemRestorePointCompleteEventArgs(hrStatus); + this.OnSystemRestorePointComplete(args); + + return args.HResult; + } + int IBootstrapperApplication.BAProc(int message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext) { switch (message) diff --git a/src/WixToolset.Mba.Core/EventArgs.cs b/src/WixToolset.Mba.Core/EventArgs.cs index 71bd15e1..b52b893a 100644 --- a/src/WixToolset.Mba.Core/EventArgs.cs +++ b/src/WixToolset.Mba.Core/EventArgs.cs @@ -1948,9 +1948,9 @@ namespace WixToolset.Mba.Core /// Additional arguments passed by the engine before it tries to launch the preapproved executable. /// </summary> [Serializable] - public class LaunchApprovedExeBeginArgs : CancellableHResultEventArgs + public class LaunchApprovedExeBeginEventArgs : CancellableHResultEventArgs { - public LaunchApprovedExeBeginArgs(bool cancelRecommendation) + public LaunchApprovedExeBeginEventArgs(bool cancelRecommendation) : base(cancelRecommendation) { } @@ -1960,11 +1960,11 @@ namespace WixToolset.Mba.Core /// Additional arguments passed by the engine after it finished trying to launch the preapproved executable. /// </summary> [Serializable] - public class LaunchApprovedExeCompleteArgs : StatusEventArgs + public class LaunchApprovedExeCompleteEventArgs : StatusEventArgs { private int processId; - public LaunchApprovedExeCompleteArgs(int hrStatus, int processId) + public LaunchApprovedExeCompleteEventArgs(int hrStatus, int processId) : base(hrStatus) { this.processId = processId; @@ -1979,4 +1979,187 @@ namespace WixToolset.Mba.Core get { return this.processId; } } } + + /// <summary> + /// Additional arguments passed by the engine before beginning an MSI transaction. + /// </summary> + [Serializable] + public class BeginMsiTransactionBeginEventArgs : CancellableHResultEventArgs + { + private string transactionId; + + public BeginMsiTransactionBeginEventArgs(string transactionId, bool cancelRecommendation) + : base(cancelRecommendation) + { + this.transactionId = transactionId; + } + + /// <summary> + /// Gets the MSI transaction Id. + /// </summary> + public string TransactionId + { + get { return this.transactionId; } + } + } + + /// <summary> + /// Additional arguments passed by the engine after beginning an MSI transaction. + /// </summary> + [Serializable] + public class BeginMsiTransactionCompleteEventArgs : StatusEventArgs + { + private string transactionId; + + public BeginMsiTransactionCompleteEventArgs(string transactionId, int hrStatus) + : base(hrStatus) + { + this.transactionId = transactionId; + } + + /// <summary> + /// Gets the MSI transaction Id. + /// </summary> + public string TransactionId + { + get { return this.transactionId; } + } + } + + /// <summary> + /// Additional arguments passed by the engine before committing an MSI transaction. + /// </summary> + [Serializable] + public class CommitMsiTransactionBeginEventArgs : CancellableHResultEventArgs + { + private string transactionId; + + public CommitMsiTransactionBeginEventArgs(string transactionId, bool cancelRecommendation) + : base(cancelRecommendation) + { + this.transactionId = transactionId; + } + + /// <summary> + /// Gets the MSI transaction Id. + /// </summary> + public string TransactionId + { + get { return this.transactionId; } + } + } + + /// <summary> + /// Additional arguments passed by the engine after committing an MSI transaction. + /// </summary> + [Serializable] + public class CommitMsiTransactionCompleteEventArgs : StatusEventArgs + { + private string transactionId; + + public CommitMsiTransactionCompleteEventArgs(string transactionId, int hrStatus) + : base(hrStatus) + { + this.transactionId = transactionId; + } + + /// <summary> + /// Gets the MSI transaction Id. + /// </summary> + public string TransactionId + { + get { return this.transactionId; } + } + } + + /// <summary> + /// Additional arguments passed by the engine before rolling back an MSI transaction. + /// </summary> + [Serializable] + public class RollbackMsiTransactionBeginEventArgs : HResultEventArgs + { + private string transactionId; + + public RollbackMsiTransactionBeginEventArgs(string transactionId) + { + this.transactionId = transactionId; + } + + /// <summary> + /// Gets the MSI transaction Id. + /// </summary> + public string TransactionId + { + get { return this.transactionId; } + } + } + + /// <summary> + /// Additional arguments passed by the engine after rolling back an MSI transaction. + /// </summary> + [Serializable] + public class RollbackMsiTransactionCompleteEventArgs : StatusEventArgs + { + private string transactionId; + + public RollbackMsiTransactionCompleteEventArgs(string transactionId, int hrStatus) + : base(hrStatus) + { + this.transactionId = transactionId; + } + + /// <summary> + /// Gets the MSI transaction Id. + /// </summary> + public string TransactionId + { + get { return this.transactionId; } + } + } + + /// <summary> + /// Additional arguments passed by the engine before pausing Windows automatic updates. + /// </summary> + [Serializable] + public class PauseAutomaticUpdatesBeginEventArgs : HResultEventArgs + { + public PauseAutomaticUpdatesBeginEventArgs() + { + } + } + + /// <summary> + /// Additional arguments passed by the engine after pausing Windows automatic updates. + /// </summary> + [Serializable] + public class PauseAutomaticUpdatesCompleteEventArgs : StatusEventArgs + { + public PauseAutomaticUpdatesCompleteEventArgs(int hrStatus) + : base(hrStatus) + { + } + } + + /// <summary> + /// Additional arguments passed by the engine before taking a system restore point. + /// </summary> + [Serializable] + public class SystemRestorePointBeginEventArgs : HResultEventArgs + { + public SystemRestorePointBeginEventArgs() + { + } + } + + /// <summary> + /// Additional arguments passed by the engine after taking a system restore point. + /// </summary> + [Serializable] + public class SystemRestorePointCompleteEventArgs : StatusEventArgs + { + public SystemRestorePointCompleteEventArgs(int hrStatus) + : base(hrStatus) + { + } + } } diff --git a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs index 0d79122d..f1a631a3 100644 --- a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs +++ b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs @@ -12,7 +12,6 @@ namespace WixToolset.Mba.Core [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("53C31D56-49C0-426B-AB06-099D717C67FE")] - [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")] public interface IBootstrapperApplication { [PreserveSig] @@ -500,6 +499,69 @@ namespace WixToolset.Mba.Core int processId ); + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnBeginMsiTransactionBegin( + [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId, + [MarshalAs(UnmanagedType.Bool)] ref bool fCancel + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnBeginMsiTransactionComplete( + [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId, + int hrStatus + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnCommitMsiTransactionBegin( + [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId, + [MarshalAs(UnmanagedType.Bool)] ref bool fCancel + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnCommitMsiTransactionComplete( + [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId, + int hrStatus + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnRollbackMsiTransactionBegin( + [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnRollbackMsiTransactionComplete( + [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId, + int hrStatus + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnPauseAutomaticUpdatesBegin( + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnPauseAutomaticUpdatesComplete( + int hrStatus + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnSystemRestorePointBegin( + ); + + [PreserveSig] + [return: MarshalAs(UnmanagedType.I4)] + int OnSystemRestorePointComplete( + int hrStatus + ); + [PreserveSig] [return: MarshalAs(UnmanagedType.I4)] int BAProc( diff --git a/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs index 9bea6418..4a30da7e 100644 --- a/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs +++ b/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs @@ -8,6 +8,8 @@ namespace WixToolset.Mba.Core { event EventHandler<ApplyBeginEventArgs> ApplyBegin; event EventHandler<ApplyCompleteEventArgs> ApplyComplete; + event EventHandler<BeginMsiTransactionBeginEventArgs> BeginMsiTransactionBegin; + event EventHandler<BeginMsiTransactionCompleteEventArgs> BeginMsiTransactionComplete; event EventHandler<CacheAcquireBeginEventArgs> CacheAcquireBegin; event EventHandler<CacheAcquireCompleteEventArgs> CacheAcquireComplete; event EventHandler<CacheAcquireProgressEventArgs> CacheAcquireProgress; @@ -17,6 +19,8 @@ namespace WixToolset.Mba.Core event EventHandler<CachePackageCompleteEventArgs> CachePackageComplete; event EventHandler<CacheVerifyBeginEventArgs> CacheVerifyBegin; event EventHandler<CacheVerifyCompleteEventArgs> CacheVerifyComplete; + event EventHandler<CommitMsiTransactionBeginEventArgs> CommitMsiTransactionBegin; + event EventHandler<CommitMsiTransactionCompleteEventArgs> CommitMsiTransactionComplete; event EventHandler<DetectBeginEventArgs> DetectBegin; event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage; event EventHandler<DetectCompleteEventArgs> DetectComplete; @@ -41,13 +45,16 @@ namespace WixToolset.Mba.Core event EventHandler<ExecutePackageCompleteEventArgs> ExecutePackageComplete; event EventHandler<ExecutePatchTargetEventArgs> ExecutePatchTarget; event EventHandler<ExecuteProgressEventArgs> ExecuteProgress; - event EventHandler<LaunchApprovedExeBeginArgs> LaunchApprovedExeBegin; - event EventHandler<LaunchApprovedExeCompleteArgs> LaunchApprovedExeComplete; + event EventHandler<LaunchApprovedExeBeginEventArgs> LaunchApprovedExeBegin; + event EventHandler<LaunchApprovedExeCompleteEventArgs> LaunchApprovedExeComplete; + event EventHandler<PauseAutomaticUpdatesBeginEventArgs> PauseAutomaticUpdatesBegin; + event EventHandler<PauseAutomaticUpdatesCompleteEventArgs> PauseAutomaticUpdatesComplete; event EventHandler<PlanBeginEventArgs> PlanBegin; event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin; event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete; event EventHandler<PlanCompleteEventArgs> PlanComplete; event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature; + event EventHandler<PlanMsiPackageEventArgs> PlanMsiPackage; event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin; event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; event EventHandler<PlanRelatedBundleEventArgs> PlanRelatedBundle; @@ -56,8 +63,12 @@ namespace WixToolset.Mba.Core event EventHandler<RegisterBeginEventArgs> RegisterBegin; event EventHandler<RegisterCompleteEventArgs> RegisterComplete; event EventHandler<ResolveSourceEventArgs> ResolveSource; + event EventHandler<RollbackMsiTransactionBeginEventArgs> RollbackMsiTransactionBegin; + event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete; event EventHandler<ShutdownEventArgs> Shutdown; event EventHandler<StartupEventArgs> Startup; + event EventHandler<SystemRestorePointBeginEventArgs> SystemRestorePointBegin; + event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete; event EventHandler<SystemShutdownEventArgs> SystemShutdown; event EventHandler<UnregisterBeginEventArgs> UnregisterBegin; event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete; diff --git a/src/balutil/balutil.vcxproj b/src/balutil/balutil.vcxproj index d35a7a77..4793770a 100644 --- a/src/balutil/balutil.vcxproj +++ b/src/balutil/balutil.vcxproj @@ -2,8 +2,8 @@ <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" /> - <Import Project="..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" /> + <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" /> + <Import Project="..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" /> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|ARM64"> @@ -98,8 +98,8 @@ <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> - <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props'))" /> - <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props'))" /> + <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props'))" /> + <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props'))" /> <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets'))" /> </Target> </Project> diff --git a/src/balutil/inc/BAFunctions.h b/src/balutil/inc/BAFunctions.h index 8101afdb..a95b7a03 100644 --- a/src/balutil/inc/BAFunctions.h +++ b/src/balutil/inc/BAFunctions.h @@ -65,6 +65,16 @@ enum BA_FUNCTIONS_MESSAGE BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN, BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE, BA_FUNCTIONS_MESSAGE_ONPLANMSIPACKAGE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE, + BA_FUNCTIONS_MESSAGE_ONBEGINMSITRANSACTIONBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN, + BA_FUNCTIONS_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE, + BA_FUNCTIONS_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN, + BA_FUNCTIONS_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE, + BA_FUNCTIONS_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN, + BA_FUNCTIONS_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE, + BA_FUNCTIONS_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN, + BA_FUNCTIONS_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE, + BA_FUNCTIONS_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN, + BA_FUNCTIONS_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE, BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, BA_FUNCTIONS_MESSAGE_WNDPROC, diff --git a/src/balutil/inc/BalBaseBAFunctions.h b/src/balutil/inc/BalBaseBAFunctions.h index 72edadd5..39934128 100644 --- a/src/balutil/inc/BalBaseBAFunctions.h +++ b/src/balutil/inc/BalBaseBAFunctions.h @@ -612,6 +612,79 @@ public: // IBootstrapperApplication return S_OK; } + virtual STDMETHODIMP OnBeginMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/, + __inout BOOL* /*pfCancel*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnBeginMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnCommitMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/, + __inout BOOL* /*pfCancel*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnCommitMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnRollbackMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnRollbackMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPauseAutomaticUpdatesBegin( + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPauseAutomaticUpdatesComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnSystemRestorePointBegin( + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnSystemRestorePointComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + virtual STDMETHODIMP_(HRESULT) BAProc( __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, __in const LPVOID /*pvArgs*/, diff --git a/src/balutil/inc/BalBaseBAFunctionsProc.h b/src/balutil/inc/BalBaseBAFunctionsProc.h index f6ebd9f6..69843301 100644 --- a/src/balutil/inc/BalBaseBAFunctionsProc.h +++ b/src/balutil/inc/BalBaseBAFunctionsProc.h @@ -100,6 +100,16 @@ static HRESULT WINAPI BalBaseBAFunctionsProc( case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN: case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE: case BA_FUNCTIONS_MESSAGE_ONPLANMSIPACKAGE: + case BA_FUNCTIONS_MESSAGE_ONBEGINMSITRANSACTIONBEGIN: + case BA_FUNCTIONS_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE: + case BA_FUNCTIONS_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN: + case BA_FUNCTIONS_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE: + case BA_FUNCTIONS_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN: + case BA_FUNCTIONS_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE: + case BA_FUNCTIONS_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN: + case BA_FUNCTIONS_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE: + case BA_FUNCTIONS_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN: + case BA_FUNCTIONS_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE: hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); break; case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: diff --git a/src/balutil/inc/BalBaseBootstrapperApplication.h b/src/balutil/inc/BalBaseBootstrapperApplication.h index 612faf54..ad0c60e5 100644 --- a/src/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/balutil/inc/BalBaseBootstrapperApplication.h @@ -798,6 +798,81 @@ public: // IBootstrapperApplication return S_OK; } + virtual STDMETHODIMP OnBeginMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnBeginMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnCommitMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCommitMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnRollbackMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnRollbackMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPauseAutomaticUpdatesBegin( + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPauseAutomaticUpdatesComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnSystemRestorePointBegin( + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnSystemRestorePointComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + virtual STDMETHODIMP_(HRESULT) BAProc( __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, __in const LPVOID /*pvArgs*/, diff --git a/src/balutil/inc/BalBaseBootstrapperApplicationProc.h b/src/balutil/inc/BalBaseBootstrapperApplicationProc.h index 7d5de8e4..648252b5 100644 --- a/src/balutil/inc/BalBaseBootstrapperApplicationProc.h +++ b/src/balutil/inc/BalBaseBootstrapperApplicationProc.h @@ -513,6 +513,96 @@ static HRESULT BalBaseBAProcOnPlanMsiPackage( return pBA->OnPlanMsiPackage(pArgs->wzPackageId, pArgs->fExecute, pArgs->action, &pResults->fCancel, &pResults->actionMsiProperty, &pResults->uiLevel, &pResults->fDisableExternalUiHandler); } +static HRESULT BalBaseBAProcOnBeginMsiTransactionBegin( + __in IBootstrapperApplication* pBA, + __in BA_ONBEGINMSITRANSACTIONBEGIN_ARGS* pArgs, + __inout BA_ONBEGINMSITRANSACTIONBEGIN_RESULTS* pResults + ) +{ + return pBA->OnBeginMsiTransactionBegin(pArgs->wzTransactionId, &pResults->fCancel); +} + +static HRESULT BalBaseBAProcOnBeginMsiTransactionComplete( + __in IBootstrapperApplication* pBA, + __in BA_ONBEGINMSITRANSACTIONCOMPLETE_ARGS* pArgs, + __inout BA_ONBEGINMSITRANSACTIONCOMPLETE_RESULTS* /*pResults*/ + ) +{ + return pBA->OnBeginMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus); +} + +static HRESULT BalBaseBAProcOnCommitMsiTransactionBegin( + __in IBootstrapperApplication* pBA, + __in BA_ONCOMMITMSITRANSACTIONBEGIN_ARGS* pArgs, + __inout BA_ONCOMMITMSITRANSACTIONBEGIN_RESULTS* pResults + ) +{ + return pBA->OnCommitMsiTransactionBegin(pArgs->wzTransactionId, &pResults->fCancel); +} + +static HRESULT BalBaseBAProcOnCommitMsiTransactionComplete( + __in IBootstrapperApplication* pBA, + __in BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS* pArgs, + __inout BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS* /*pResults*/ + ) +{ + return pBA->OnCommitMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus); +} + +static HRESULT BalBaseBAProcOnRollbackMsiTransactionBegin( + __in IBootstrapperApplication* pBA, + __in BA_ONROLLBACKMSITRANSACTIONBEGIN_ARGS* pArgs, + __inout BA_ONROLLBACKMSITRANSACTIONBEGIN_RESULTS* /*pResults*/ + ) +{ + return pBA->OnRollbackMsiTransactionBegin(pArgs->wzTransactionId); +} + +static HRESULT BalBaseBAProcOnRollbackMsiTransactionComplete( + __in IBootstrapperApplication* pBA, + __in BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS* pArgs, + __inout BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS* /*pResults*/ + ) +{ + return pBA->OnRollbackMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus); +} + +static HRESULT BalBaseBAProcOnPauseAutomaticUpdatesBegin( + __in IBootstrapperApplication* pBA, + __in BA_ONPAUSEAUTOMATICUPDATESBEGIN_ARGS* /*pArgs*/, + __inout BA_ONPAUSEAUTOMATICUPDATESBEGIN_RESULTS* /*pResults*/ + ) +{ + return pBA->OnPauseAutomaticUpdatesBegin(); +} + +static HRESULT BalBaseBAProcOnPauseAutomaticUpdatesComplete( + __in IBootstrapperApplication* pBA, + __in BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_ARGS* pArgs, + __inout BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_RESULTS* /*pResults*/ + ) +{ + return pBA->OnPauseAutomaticUpdatesComplete(pArgs->hrStatus); +} + +static HRESULT BalBaseBAProcOnSystemRestorePointBegin( + __in IBootstrapperApplication* pBA, + __in BA_ONSYSTEMRESTOREPOINTBEGIN_ARGS* /*pArgs*/, + __inout BA_ONSYSTEMRESTOREPOINTBEGIN_RESULTS* /*pResults*/ + ) +{ + return pBA->OnSystemRestorePointBegin(); +} + +static HRESULT BalBaseBAProcOnSystemRestorePointComplete( + __in IBootstrapperApplication* pBA, + __in BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS* pArgs, + __inout BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS* /*pResults*/ + ) +{ + return pBA->OnSystemRestorePointComplete(pArgs->hrStatus); +} + /******************************************************************* BalBaseBootstrapperApplicationProc - requires pvContext to be of type IBootstrapperApplication. Provides a default mapping between the new message based BA interface and @@ -701,6 +791,35 @@ static HRESULT WINAPI BalBaseBootstrapperApplicationProc( case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE: hr = BalBaseBAProcOnPlanMsiPackage(pBA, reinterpret_cast<BA_ONPLANMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANMSIPACKAGE_RESULTS*>(pvResults)); break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN: + hr = BalBaseBAProcOnBeginMsiTransactionBegin(pBA, reinterpret_cast<BA_ONBEGINMSITRANSACTIONBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONBEGINMSITRANSACTIONBEGIN_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE: + hr = BalBaseBAProcOnBeginMsiTransactionComplete(pBA, reinterpret_cast<BA_ONBEGINMSITRANSACTIONCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONBEGINMSITRANSACTIONCOMPLETE_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN: + hr = BalBaseBAProcOnCommitMsiTransactionBegin(pBA, reinterpret_cast<BA_ONCOMMITMSITRANSACTIONBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONCOMMITMSITRANSACTIONBEGIN_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE: + hr = BalBaseBAProcOnCommitMsiTransactionComplete(pBA, reinterpret_cast<BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN: + hr = BalBaseBAProcOnRollbackMsiTransactionBegin(pBA, reinterpret_cast<BA_ONROLLBACKMSITRANSACTIONBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONROLLBACKMSITRANSACTIONBEGIN_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE: + hr = BalBaseBAProcOnRollbackMsiTransactionComplete(pBA, reinterpret_cast<BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS*>(pvResults)); + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN: + hr = BalBaseBAProcOnPauseAutomaticUpdatesBegin(pBA, reinterpret_cast<BA_ONPAUSEAUTOMATICUPDATESBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONPAUSEAUTOMATICUPDATESBEGIN_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE: + hr = BalBaseBAProcOnPauseAutomaticUpdatesComplete(pBA, reinterpret_cast<BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN: + hr = BalBaseBAProcOnSystemRestorePointBegin(pBA, reinterpret_cast<BA_ONSYSTEMRESTOREPOINTBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONSYSTEMRESTOREPOINTBEGIN_RESULTS*>(pvResults)); + break; + case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE: + hr = BalBaseBAProcOnSystemRestorePointComplete(pBA, reinterpret_cast<BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS*>(pvResults)); + break; } } diff --git a/src/balutil/inc/IBootstrapperApplication.h b/src/balutil/inc/IBootstrapperApplication.h index 75ea7bc9..dd8f8024 100644 --- a/src/balutil/inc/IBootstrapperApplication.h +++ b/src/balutil/inc/IBootstrapperApplication.h @@ -518,6 +518,49 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A __in DWORD dwProcessId ) = 0; + STDMETHOD(OnBeginMsiTransactionBegin)( + __in_z LPCWSTR wzTransactionId, + __inout BOOL* pfCancel + ) = 0; + + STDMETHOD(OnBeginMsiTransactionComplete)( + __in_z LPCWSTR wzTransactionId, + __in HRESULT hrStatus + ) = 0; + + STDMETHOD(OnCommitMsiTransactionBegin)( + __in_z LPCWSTR wzTransactionId, + __inout BOOL* pfCancel + ) = 0; + + STDMETHOD(OnCommitMsiTransactionComplete)( + __in_z LPCWSTR wzTransactionId, + __in HRESULT hrStatus + ) = 0; + + STDMETHOD(OnRollbackMsiTransactionBegin)( + __in_z LPCWSTR wzTransactionId + ) = 0; + + STDMETHOD(OnRollbackMsiTransactionComplete)( + __in_z LPCWSTR wzTransactionId, + __in HRESULT hrStatus + ) = 0; + + STDMETHOD(OnPauseAutomaticUpdatesBegin)( + ) = 0; + + STDMETHOD(OnPauseAutomaticUpdatesComplete)( + __in HRESULT hrStatus + ) = 0; + + STDMETHOD(OnSystemRestorePointBegin)( + ) = 0; + + STDMETHOD(OnSystemRestorePointComplete)( + __in HRESULT hrStatus + ) = 0; + // BAProc - The PFN_BOOTSTRAPPER_APPLICATION_PROC can call this method to give the BA raw access to the callback from the engine. // This might be used to help the BA support more than one version of the engine. STDMETHOD(BAProc)( diff --git a/src/balutil/packages.config b/src/balutil/packages.config index dbc4eb18..e6716363 100644 --- a/src/balutil/packages.config +++ b/src/balutil/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Nerdbank.GitVersioning" version="3.3.37" targetFramework="native" developmentDependency="true" /> - <package id="WixToolset.BootstrapperCore.Native" version="4.0.38" targetFramework="native" /> - <package id="WixToolset.DUtil" version="4.0.55" targetFramework="native" /> + <package id="WixToolset.BootstrapperCore.Native" version="4.0.54" targetFramework="native" /> + <package id="WixToolset.DUtil" version="4.0.56" targetFramework="native" /> </packages> \ No newline at end of file diff --git a/src/bextutil/bextutil.vcxproj b/src/bextutil/bextutil.vcxproj index def0dd59..2e248d2c 100644 --- a/src/bextutil/bextutil.vcxproj +++ b/src/bextutil/bextutil.vcxproj @@ -2,8 +2,8 @@ <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" /> - <Import Project="..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" /> + <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" /> + <Import Project="..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" /> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|ARM64"> @@ -87,8 +87,8 @@ <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> - <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props'))" /> - <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props'))" /> + <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props'))" /> + <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props'))" /> <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets'))" /> </Target> </Project> diff --git a/src/bextutil/packages.config b/src/bextutil/packages.config index dbc4eb18..e6716363 100644 --- a/src/bextutil/packages.config +++ b/src/bextutil/packages.config @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Nerdbank.GitVersioning" version="3.3.37" targetFramework="native" developmentDependency="true" /> - <package id="WixToolset.BootstrapperCore.Native" version="4.0.38" targetFramework="native" /> - <package id="WixToolset.DUtil" version="4.0.55" targetFramework="native" /> + <package id="WixToolset.BootstrapperCore.Native" version="4.0.54" targetFramework="native" /> + <package id="WixToolset.DUtil" version="4.0.56" targetFramework="native" /> </packages> \ No newline at end of file diff --git a/src/mbanative/mbanative.vcxproj b/src/mbanative/mbanative.vcxproj index 69309f8a..be60f3a9 100644 --- a/src/mbanative/mbanative.vcxproj +++ b/src/mbanative/mbanative.vcxproj @@ -5,8 +5,8 @@ <Import Project="..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props" Condition="Exists('..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props')" /> <Import Project="..\..\packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props" Condition="Exists('..\..\packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props')" /> <Import Project="..\..\packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props" Condition="Exists('..\..\packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props')" /> - <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" /> - <Import Project="..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" /> + <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" /> + <Import Project="..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" /> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|ARM64"> @@ -94,7 +94,7 @@ <Error Condition="!Exists('..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props'))" /> <Error Condition="!Exists('..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets'))" /> <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets'))" /> - <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props'))" /> - <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props'))" /> + <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props'))" /> + <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props'))" /> </Target> </Project> \ No newline at end of file diff --git a/src/mbanative/packages.config b/src/mbanative/packages.config index 20047373..46972411 100644 --- a/src/mbanative/packages.config +++ b/src/mbanative/packages.config @@ -4,6 +4,6 @@ <package id="Microsoft.SourceLink.Common" version="1.0.0" targetFramework="native" developmentDependency="true" /> <package id="Microsoft.SourceLink.GitHub" version="1.0.0" targetFramework="native" developmentDependency="true" /> <package id="Nerdbank.GitVersioning" version="3.3.37" targetFramework="native" developmentDependency="true" /> - <package id="WixToolset.BootstrapperCore.Native" version="4.0.38" targetFramework="native" /> - <package id="WixToolset.DUtil" version="4.0.55" targetFramework="native" /> + <package id="WixToolset.BootstrapperCore.Native" version="4.0.54" targetFramework="native" /> + <package id="WixToolset.DUtil" version="4.0.56" targetFramework="native" /> </packages> \ No newline at end of file diff --git a/src/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj b/src/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj index 53d14cd7..a57c6f01 100644 --- a/src/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj +++ b/src/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj @@ -4,8 +4,8 @@ <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props')" /> - <Import Project="..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" /> - <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" /> + <Import Project="..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" /> + <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" /> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|Win32"> <Configuration>Debug</Configuration> @@ -67,7 +67,7 @@ </PropertyGroup> <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props'))" /> <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.targets'))" /> - <Error Condition="!Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props'))" /> - <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props'))" /> + <Error Condition="!Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props'))" /> + <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props'))" /> </Target> </Project> diff --git a/src/test/BalUtilUnitTest/packages.config b/src/test/BalUtilUnitTest/packages.config index b8423837..e3b144e6 100644 --- a/src/test/BalUtilUnitTest/packages.config +++ b/src/test/BalUtilUnitTest/packages.config @@ -10,6 +10,6 @@ <package id="xunit.runner.visualstudio" version="2.4.1" /> <package id="WixBuildTools.TestSupport" version="4.0.47" /> <package id="WixBuildTools.TestSupport.Native" version="4.0.47" /> - <package id="WixToolset.BootstrapperCore.Native" version="4.0.38" targetFramework="native" /> - <package id="WixToolset.DUtil" version="4.0.55" targetFramework="native" /> + <package id="WixToolset.BootstrapperCore.Native" version="4.0.54" targetFramework="native" /> + <package id="WixToolset.DUtil" version="4.0.56" targetFramework="native" /> </packages> \ No newline at end of file diff --git a/src/test/BextUtilUnitTest/BextUtilUnitTest.vcxproj b/src/test/BextUtilUnitTest/BextUtilUnitTest.vcxproj index 15a1f51d..c1cf107c 100644 --- a/src/test/BextUtilUnitTest/BextUtilUnitTest.vcxproj +++ b/src/test/BextUtilUnitTest/BextUtilUnitTest.vcxproj @@ -4,8 +4,8 @@ <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props')" /> - <Import Project="..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" /> - <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" /> + <Import Project="..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" /> + <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" /> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|Win32"> <Configuration>Debug</Configuration> @@ -66,7 +66,7 @@ </PropertyGroup> <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props'))" /> <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.targets'))" /> - <Error Condition="!Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.38\build\WixToolset.BootstrapperCore.Native.props'))" /> - <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.55\build\WixToolset.DUtil.props'))" /> + <Error Condition="!Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.54\build\WixToolset.BootstrapperCore.Native.props'))" /> + <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.56\build\WixToolset.DUtil.props'))" /> </Target> </Project> diff --git a/src/test/BextUtilUnitTest/packages.config b/src/test/BextUtilUnitTest/packages.config index b8423837..e3b144e6 100644 --- a/src/test/BextUtilUnitTest/packages.config +++ b/src/test/BextUtilUnitTest/packages.config @@ -10,6 +10,6 @@ <package id="xunit.runner.visualstudio" version="2.4.1" /> <package id="WixBuildTools.TestSupport" version="4.0.47" /> <package id="WixBuildTools.TestSupport.Native" version="4.0.47" /> - <package id="WixToolset.BootstrapperCore.Native" version="4.0.38" targetFramework="native" /> - <package id="WixToolset.DUtil" version="4.0.55" targetFramework="native" /> + <package id="WixToolset.BootstrapperCore.Native" version="4.0.54" targetFramework="native" /> + <package id="WixToolset.DUtil" version="4.0.56" targetFramework="native" /> </packages> \ No newline at end of file -- cgit v1.2.3-55-g6feb