diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2020-05-15 13:48:38 +1000 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2020-05-16 21:47:46 +1000 |
commit | 780cd25e41f2d2982807a0a2a24a734684d27fe6 (patch) | |
tree | eaf7322f1cb79f337f764d778d518f9fa2b2e175 | |
parent | b0b50f1d8512b6d7ebd087d19406629db0a5ef9b (diff) | |
download | wix-780cd25e41f2d2982807a0a2a24a734684d27fe6.tar.gz wix-780cd25e41f2d2982807a0a2a24a734684d27fe6.tar.bz2 wix-780cd25e41f2d2982807a0a2a24a734684d27fe6.zip |
WIXFEAT:6164 Add OnPlanMsiPackage.
-rw-r--r-- | src/WixToolset.Mba.Core/BootstrapperApplication.cs | 34 | ||||
-rw-r--r-- | src/WixToolset.Mba.Core/EventArgs.cs | 74 | ||||
-rw-r--r-- | src/WixToolset.Mba.Core/IBootstrapperApplication.cs | 109 | ||||
-rw-r--r-- | src/balutil/inc/BAFunctions.h | 1 | ||||
-rw-r--r-- | src/balutil/inc/BalBaseBAFunctions.h | 15 | ||||
-rw-r--r-- | src/balutil/inc/BalBaseBAFunctionsProc.h | 1 | ||||
-rw-r--r-- | src/balutil/inc/BalBaseBootstrapperApplication.h | 16 | ||||
-rw-r--r-- | src/balutil/inc/BalBaseBootstrapperApplicationProc.h | 14 | ||||
-rw-r--r-- | src/balutil/inc/IBootstrapperApplication.h | 14 |
9 files changed, 274 insertions, 4 deletions
diff --git a/src/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/WixToolset.Mba.Core/BootstrapperApplication.cs index 249c17c9..9ee909dc 100644 --- a/src/WixToolset.Mba.Core/BootstrapperApplication.cs +++ b/src/WixToolset.Mba.Core/BootstrapperApplication.cs | |||
@@ -162,6 +162,11 @@ namespace WixToolset.Mba.Core | |||
162 | public event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature; | 162 | public event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature; |
163 | 163 | ||
164 | /// <summary> | 164 | /// <summary> |
165 | /// Fired when the engine is planning an MSI or MSP package. | ||
166 | /// </summary> | ||
167 | public event EventHandler<PlanMsiPackageEventArgs> PlanMsiPackage; | ||
168 | |||
169 | /// <summary> | ||
165 | /// Fired when the engine has completed planning the installation of a specific package. | 170 | /// Fired when the engine has completed planning the installation of a specific package. |
166 | /// </summary> | 171 | /// </summary> |
167 | public event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; | 172 | public event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; |
@@ -659,6 +664,19 @@ namespace WixToolset.Mba.Core | |||
659 | } | 664 | } |
660 | 665 | ||
661 | /// <summary> | 666 | /// <summary> |
667 | /// Called when the engine is planning an MSI or MSP package. | ||
668 | /// </summary> | ||
669 | /// <param name="args">Additional arguments for this event.</param> | ||
670 | protected virtual void OnPlanMsiPackage(PlanMsiPackageEventArgs args) | ||
671 | { | ||
672 | EventHandler<PlanMsiPackageEventArgs> handler = this.PlanMsiPackage; | ||
673 | if (null != handler) | ||
674 | { | ||
675 | handler(this, args); | ||
676 | } | ||
677 | } | ||
678 | |||
679 | /// <summary> | ||
662 | /// Called when then engine has completed planning the installation of a specific package. | 680 | /// Called when then engine has completed planning the installation of a specific package. |
663 | /// </summary> | 681 | /// </summary> |
664 | /// <param name="args">Additional arguments for this event.</param> | 682 | /// <param name="args">Additional arguments for this event.</param> |
@@ -1288,6 +1306,18 @@ namespace WixToolset.Mba.Core | |||
1288 | return args.HResult; | 1306 | return args.HResult; |
1289 | } | 1307 | } |
1290 | 1308 | ||
1309 | int IBootstrapperApplication.OnPlanMsiPackage(string wzPackageId, bool fExecute, ActionState action, ref bool fCancel, ref BURN_MSI_PROPERTY actionMsiProperty, ref INSTALLUILEVEL uiLevel, ref bool fDisableExternalUiHandler) | ||
1310 | { | ||
1311 | PlanMsiPackageEventArgs args = new PlanMsiPackageEventArgs(wzPackageId, fExecute, action, fCancel, actionMsiProperty, uiLevel, fDisableExternalUiHandler); | ||
1312 | this.OnPlanMsiPackage(args); | ||
1313 | |||
1314 | fCancel = args.Cancel; | ||
1315 | actionMsiProperty = args.ActionMsiProperty; | ||
1316 | uiLevel = args.UiLevel; | ||
1317 | fDisableExternalUiHandler = args.DisableExternalUiHandler; | ||
1318 | return args.HResult; | ||
1319 | } | ||
1320 | |||
1291 | int IBootstrapperApplication.OnPlanPackageComplete(string wzPackageId, int hrStatus, PackageState state, RequestState requested, ActionState execute, ActionState rollback) | 1321 | int IBootstrapperApplication.OnPlanPackageComplete(string wzPackageId, int hrStatus, PackageState state, RequestState requested, ActionState execute, ActionState rollback) |
1292 | { | 1322 | { |
1293 | var args = new PlanPackageCompleteEventArgs(wzPackageId, hrStatus, state, requested, execute, rollback); | 1323 | var args = new PlanPackageCompleteEventArgs(wzPackageId, hrStatus, state, requested, execute, rollback); |
@@ -1466,9 +1496,9 @@ namespace WixToolset.Mba.Core | |||
1466 | return args.HResult; | 1496 | return args.HResult; |
1467 | } | 1497 | } |
1468 | 1498 | ||
1469 | int IBootstrapperApplication.OnExecutePackageBegin(string wzPackageId, bool fExecute, ActionState action, ref bool fCancel) | 1499 | int IBootstrapperApplication.OnExecutePackageBegin(string wzPackageId, bool fExecute, ActionState action, INSTALLUILEVEL uiLevel, bool fDisableExternalUiHandler, ref bool fCancel) |
1470 | { | 1500 | { |
1471 | ExecutePackageBeginEventArgs args = new ExecutePackageBeginEventArgs(wzPackageId, fExecute, action, fCancel); | 1501 | ExecutePackageBeginEventArgs args = new ExecutePackageBeginEventArgs(wzPackageId, fExecute, action, uiLevel, fDisableExternalUiHandler, fCancel); |
1472 | this.OnExecutePackageBegin(args); | 1502 | this.OnExecutePackageBegin(args); |
1473 | 1503 | ||
1474 | fCancel = args.Cancel; | 1504 | fCancel = args.Cancel; |
diff --git a/src/WixToolset.Mba.Core/EventArgs.cs b/src/WixToolset.Mba.Core/EventArgs.cs index ca0fa173..e739a853 100644 --- a/src/WixToolset.Mba.Core/EventArgs.cs +++ b/src/WixToolset.Mba.Core/EventArgs.cs | |||
@@ -996,6 +996,64 @@ namespace WixToolset.Mba.Core | |||
996 | } | 996 | } |
997 | 997 | ||
998 | /// <summary> | 998 | /// <summary> |
999 | /// Additional arguments used when the engine is planning an MSI or MSP package. | ||
1000 | /// </summary> | ||
1001 | [Serializable] | ||
1002 | public class PlanMsiPackageEventArgs : CancellableHResultEventArgs | ||
1003 | { | ||
1004 | /// <summary> | ||
1005 | /// Creates a new instance of the <see cref="PlanMsiPackageEventArgs"/> class. | ||
1006 | /// </summary> | ||
1007 | /// <param name="packageId">The identity of the package planned for.</param> | ||
1008 | /// <param name="shouldExecute">Whether the package is planned to execute or roll back.</param> | ||
1009 | /// <param name="action">The action planned for the package.</param> | ||
1010 | /// <param name="cancelRecommendation">The recommendation from the engine.</param> | ||
1011 | /// <param name="actionMsiProperty">The requested MSI property to add.</param> | ||
1012 | /// <param name="uiLevel">The requested internal UI level.</param> | ||
1013 | /// <param name="disableExternalUiHandler">Whether Burn is requested to set up an external UI handler.</param> | ||
1014 | public PlanMsiPackageEventArgs(string packageId, bool shouldExecute, ActionState action, bool cancelRecommendation, BURN_MSI_PROPERTY actionMsiProperty, INSTALLUILEVEL uiLevel, bool disableExternalUiHandler) | ||
1015 | : base(cancelRecommendation) | ||
1016 | { | ||
1017 | this.PackageId = packageId; | ||
1018 | this.ShouldExecute = shouldExecute; | ||
1019 | this.Action = action; | ||
1020 | this.ActionMsiProperty = actionMsiProperty; | ||
1021 | this.UiLevel = uiLevel; | ||
1022 | this.DisableExternalUiHandler = disableExternalUiHandler; | ||
1023 | } | ||
1024 | |||
1025 | /// <summary> | ||
1026 | /// Gets identity of the package planned for. | ||
1027 | /// </summary> | ||
1028 | public string PackageId { get; private set; } | ||
1029 | |||
1030 | /// <summary> | ||
1031 | /// Gets whether the package is planned to execute or roll back. | ||
1032 | /// </summary> | ||
1033 | public bool ShouldExecute { get; private set; } | ||
1034 | |||
1035 | /// <summary> | ||
1036 | /// Gets the action planned for the package. | ||
1037 | /// </summary> | ||
1038 | public ActionState Action { get; private set; } | ||
1039 | |||
1040 | /// <summary> | ||
1041 | /// Gets or sets the requested MSI property to add. | ||
1042 | /// </summary> | ||
1043 | public BURN_MSI_PROPERTY ActionMsiProperty { get; set; } | ||
1044 | |||
1045 | /// <summary> | ||
1046 | /// Gets or sets the requested internal UI level. | ||
1047 | /// </summary> | ||
1048 | public INSTALLUILEVEL UiLevel { get; set; } | ||
1049 | |||
1050 | /// <summary> | ||
1051 | /// Gets or sets whether Burn is requested to set up an external UI handler. | ||
1052 | /// </summary> | ||
1053 | public bool DisableExternalUiHandler { get; set; } | ||
1054 | } | ||
1055 | |||
1056 | /// <summary> | ||
999 | /// Additional arguments used when then engine has completed planning the installation of a specific package. | 1057 | /// Additional arguments used when then engine has completed planning the installation of a specific package. |
1000 | /// </summary> | 1058 | /// </summary> |
1001 | [Serializable] | 1059 | [Serializable] |
@@ -1503,13 +1561,17 @@ namespace WixToolset.Mba.Core | |||
1503 | /// <param name="packageId">The identity of the package to act on.</param> | 1561 | /// <param name="packageId">The identity of the package to act on.</param> |
1504 | /// <param name="shouldExecute">Whether the package is being executed or rolled back.</param> | 1562 | /// <param name="shouldExecute">Whether the package is being executed or rolled back.</param> |
1505 | /// <param name="action">The action about to be executed.</param> | 1563 | /// <param name="action">The action about to be executed.</param> |
1564 | /// <param name="uiLevel">The internal UI level (if this is an MSI or MSP package).</param> | ||
1565 | /// <param name="disableExternalUiHandler">Whether Burn will set up an external UI handler (if this is an MSI or MSP package).</param> | ||
1506 | /// <param name="cancelRecommendation">The recommendation from the engine.</param> | 1566 | /// <param name="cancelRecommendation">The recommendation from the engine.</param> |
1507 | public ExecutePackageBeginEventArgs(string packageId, bool shouldExecute, ActionState action, bool cancelRecommendation) | 1567 | public ExecutePackageBeginEventArgs(string packageId, bool shouldExecute, ActionState action, INSTALLUILEVEL uiLevel, bool disableExternalUiHandler, bool cancelRecommendation) |
1508 | : base(cancelRecommendation) | 1568 | : base(cancelRecommendation) |
1509 | { | 1569 | { |
1510 | this.PackageId = packageId; | 1570 | this.PackageId = packageId; |
1511 | this.ShouldExecute = shouldExecute; | 1571 | this.ShouldExecute = shouldExecute; |
1512 | this.Action = action; | 1572 | this.Action = action; |
1573 | this.UiLevel = uiLevel; | ||
1574 | this.DisableExternalUiHandler = disableExternalUiHandler; | ||
1513 | } | 1575 | } |
1514 | 1576 | ||
1515 | /// <summary> | 1577 | /// <summary> |
@@ -1526,6 +1588,16 @@ namespace WixToolset.Mba.Core | |||
1526 | /// Gets the action about to be executed. | 1588 | /// Gets the action about to be executed. |
1527 | /// </summary> | 1589 | /// </summary> |
1528 | public ActionState Action { get; private set; } | 1590 | public ActionState Action { get; private set; } |
1591 | |||
1592 | /// <summary> | ||
1593 | /// Gets the internal UI level (if this is an MSI or MSP package). | ||
1594 | /// </summary> | ||
1595 | public INSTALLUILEVEL UiLevel { get; private set; } | ||
1596 | |||
1597 | /// <summary> | ||
1598 | /// Gets whether Burn will set up an external UI handler (if this is an MSI or MSP package). | ||
1599 | /// </summary> | ||
1600 | public bool DisableExternalUiHandler { get; private set; } | ||
1529 | } | 1601 | } |
1530 | 1602 | ||
1531 | /// <summary> | 1603 | /// <summary> |
diff --git a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs index c4daaf32..fa655282 100644 --- a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs +++ b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs | |||
@@ -221,6 +221,18 @@ namespace WixToolset.Mba.Core | |||
221 | 221 | ||
222 | [PreserveSig] | 222 | [PreserveSig] |
223 | [return: MarshalAs(UnmanagedType.I4)] | 223 | [return: MarshalAs(UnmanagedType.I4)] |
224 | int OnPlanMsiPackage( | ||
225 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | ||
226 | [MarshalAs(UnmanagedType.Bool)] bool fExecute, | ||
227 | [MarshalAs(UnmanagedType.U4)] ActionState action, | ||
228 | [MarshalAs(UnmanagedType.Bool)] ref bool fCancel, | ||
229 | [MarshalAs(UnmanagedType.U4)] ref BURN_MSI_PROPERTY actionMsiProperty, | ||
230 | [MarshalAs(UnmanagedType.U4)] ref INSTALLUILEVEL uiLevel, | ||
231 | [MarshalAs(UnmanagedType.Bool)] ref bool fDisableExternalUiHandler | ||
232 | ); | ||
233 | |||
234 | [PreserveSig] | ||
235 | [return: MarshalAs(UnmanagedType.I4)] | ||
224 | int OnPlanPackageComplete( | 236 | int OnPlanPackageComplete( |
225 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | 237 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, |
226 | int hrStatus, | 238 | int hrStatus, |
@@ -393,6 +405,8 @@ namespace WixToolset.Mba.Core | |||
393 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | 405 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, |
394 | [MarshalAs(UnmanagedType.Bool)] bool fExecute, | 406 | [MarshalAs(UnmanagedType.Bool)] bool fExecute, |
395 | [MarshalAs(UnmanagedType.U4)] ActionState action, | 407 | [MarshalAs(UnmanagedType.U4)] ActionState action, |
408 | [MarshalAs(UnmanagedType.U4)] INSTALLUILEVEL uiLevel, | ||
409 | [MarshalAs(UnmanagedType.Bool)] bool fDisableExternalUiHandler, | ||
396 | [MarshalAs(UnmanagedType.Bool)] ref bool fCancel | 410 | [MarshalAs(UnmanagedType.Bool)] ref bool fCancel |
397 | ); | 411 | ); |
398 | 412 | ||
@@ -832,4 +846,99 @@ namespace WixToolset.Mba.Core | |||
832 | Restart, | 846 | Restart, |
833 | ReloadBootstrapper, | 847 | ReloadBootstrapper, |
834 | } | 848 | } |
849 | |||
850 | /// <summary> | ||
851 | /// The property Burn will add so the MSI can know the planned action for the package. | ||
852 | /// </summary> | ||
853 | public enum BURN_MSI_PROPERTY | ||
854 | { | ||
855 | /// <summary> | ||
856 | /// No property will be added. | ||
857 | /// </summary> | ||
858 | None, | ||
859 | |||
860 | /// <summary> | ||
861 | /// Add BURNMSIINSTALL=1 | ||
862 | /// </summary> | ||
863 | Install, | ||
864 | |||
865 | /// <summary> | ||
866 | /// Add BURNMSIMODFIY=1 | ||
867 | /// </summary> | ||
868 | Modify, | ||
869 | |||
870 | /// <summary> | ||
871 | /// Add BURNMSIREPAIR=1 | ||
872 | /// </summary> | ||
873 | Repair, | ||
874 | |||
875 | /// <summary> | ||
876 | /// Add BURNMSIUNINSTALL=1 | ||
877 | /// </summary> | ||
878 | Uninstall, | ||
879 | } | ||
880 | |||
881 | /// <summary> | ||
882 | /// From msi.h | ||
883 | /// https://docs.microsoft.com/en-us/windows/win32/api/msi/nf-msi-msisetinternalui | ||
884 | /// </summary> | ||
885 | [Flags] | ||
886 | public enum INSTALLUILEVEL | ||
887 | { | ||
888 | /// <summary> | ||
889 | /// UI level is unchanged | ||
890 | /// </summary> | ||
891 | NoChange = 0, | ||
892 | |||
893 | /// <summary> | ||
894 | /// default UI is used | ||
895 | /// </summary> | ||
896 | Default = 1, | ||
897 | |||
898 | /// <summary> | ||
899 | /// completely silent installation | ||
900 | /// </summary> | ||
901 | None = 2, | ||
902 | |||
903 | /// <summary> | ||
904 | /// simple progress and error handling | ||
905 | /// </summary> | ||
906 | Basic = 3, | ||
907 | |||
908 | /// <summary> | ||
909 | /// authored UI, wizard dialogs suppressed | ||
910 | /// </summary> | ||
911 | Reduced = 4, | ||
912 | |||
913 | /// <summary> | ||
914 | /// authored UI with wizards, progress, errors | ||
915 | /// </summary> | ||
916 | Full = 5, | ||
917 | |||
918 | /// <summary> | ||
919 | /// display success/failure dialog at end of install | ||
920 | /// </summary> | ||
921 | EndDialog = 0x80, | ||
922 | |||
923 | /// <summary> | ||
924 | /// display only progress dialog | ||
925 | /// </summary> | ||
926 | ProgressOnly = 0x40, | ||
927 | |||
928 | /// <summary> | ||
929 | /// do not display the cancel button in basic UI | ||
930 | /// </summary> | ||
931 | HideCancel = 0x20, | ||
932 | |||
933 | /// <summary> | ||
934 | /// force display of source resolution even if quiet | ||
935 | /// </summary> | ||
936 | SourceResOnly = 0x100, | ||
937 | |||
938 | /// <summary> | ||
939 | /// show UAC prompt even if quiet | ||
940 | /// Can only be used if on Windows Installer 5.0 or later | ||
941 | /// </summary> | ||
942 | UacOnly = 0x200, | ||
943 | } | ||
835 | } | 944 | } |
diff --git a/src/balutil/inc/BAFunctions.h b/src/balutil/inc/BAFunctions.h index 1338253d..8101afdb 100644 --- a/src/balutil/inc/BAFunctions.h +++ b/src/balutil/inc/BAFunctions.h | |||
@@ -64,6 +64,7 @@ enum BA_FUNCTIONS_MESSAGE | |||
64 | BA_FUNCTIONS_MESSAGE_ONAPPLYCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYCOMPLETE, | 64 | BA_FUNCTIONS_MESSAGE_ONAPPLYCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYCOMPLETE, |
65 | BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN, | 65 | BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN, |
66 | BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE, | 66 | BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE, |
67 | BA_FUNCTIONS_MESSAGE_ONPLANMSIPACKAGE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE, | ||
67 | 68 | ||
68 | BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, | 69 | BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, |
69 | BA_FUNCTIONS_MESSAGE_WNDPROC, | 70 | BA_FUNCTIONS_MESSAGE_WNDPROC, |
diff --git a/src/balutil/inc/BalBaseBAFunctions.h b/src/balutil/inc/BalBaseBAFunctions.h index 411524fb..4e095fb8 100644 --- a/src/balutil/inc/BalBaseBAFunctions.h +++ b/src/balutil/inc/BalBaseBAFunctions.h | |||
@@ -298,6 +298,19 @@ public: // IBootstrapperApplication | |||
298 | return S_OK; | 298 | return S_OK; |
299 | } | 299 | } |
300 | 300 | ||
301 | virtual STDMETHODIMP OnPlanMsiPackage( | ||
302 | __in_z LPCWSTR /*wzPackageId*/, | ||
303 | __in BOOL /*fExecute*/, | ||
304 | __in BOOTSTRAPPER_ACTION_STATE /*action*/, | ||
305 | __inout BOOL* /*pfCancel*/, | ||
306 | __inout BURN_MSI_PROPERTY* /*pActionMsiProperty*/, | ||
307 | __inout INSTALLUILEVEL* /*pUiLevel*/, | ||
308 | __inout BOOL* /*pfDisableExternalUiHandler*/ | ||
309 | ) | ||
310 | { | ||
311 | return S_OK; | ||
312 | } | ||
313 | |||
301 | virtual STDMETHODIMP OnPlanPackageComplete( | 314 | virtual STDMETHODIMP OnPlanPackageComplete( |
302 | __in_z LPCWSTR /*wzPackageId*/, | 315 | __in_z LPCWSTR /*wzPackageId*/, |
303 | __in HRESULT /*hrStatus*/, | 316 | __in HRESULT /*hrStatus*/, |
@@ -490,6 +503,8 @@ public: // IBootstrapperApplication | |||
490 | __in_z LPCWSTR /*wzPackageId*/, | 503 | __in_z LPCWSTR /*wzPackageId*/, |
491 | __in BOOL /*fExecute*/, | 504 | __in BOOL /*fExecute*/, |
492 | __in BOOTSTRAPPER_ACTION_STATE /*action*/, | 505 | __in BOOTSTRAPPER_ACTION_STATE /*action*/, |
506 | __in INSTALLUILEVEL /*uiLevel*/, | ||
507 | __in BOOL /*fDisableExternalUiHandler*/, | ||
493 | __inout BOOL* /*pfCancel*/ | 508 | __inout BOOL* /*pfCancel*/ |
494 | ) | 509 | ) |
495 | { | 510 | { |
diff --git a/src/balutil/inc/BalBaseBAFunctionsProc.h b/src/balutil/inc/BalBaseBAFunctionsProc.h index da0a71f7..f6ebd9f6 100644 --- a/src/balutil/inc/BalBaseBAFunctionsProc.h +++ b/src/balutil/inc/BalBaseBAFunctionsProc.h | |||
@@ -99,6 +99,7 @@ static HRESULT WINAPI BalBaseBAFunctionsProc( | |||
99 | case BA_FUNCTIONS_MESSAGE_ONAPPLYCOMPLETE: | 99 | case BA_FUNCTIONS_MESSAGE_ONAPPLYCOMPLETE: |
100 | case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN: | 100 | case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN: |
101 | case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE: | 101 | case BA_FUNCTIONS_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE: |
102 | case BA_FUNCTIONS_MESSAGE_ONPLANMSIPACKAGE: | ||
102 | hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); | 103 | hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); |
103 | break; | 104 | break; |
104 | case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: | 105 | case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: |
diff --git a/src/balutil/inc/BalBaseBootstrapperApplication.h b/src/balutil/inc/BalBaseBootstrapperApplication.h index 269777a6..1d014419 100644 --- a/src/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/balutil/inc/BalBaseBootstrapperApplication.h | |||
@@ -311,6 +311,20 @@ public: // IBootstrapperApplication | |||
311 | return S_OK; | 311 | return S_OK; |
312 | } | 312 | } |
313 | 313 | ||
314 | virtual STDMETHODIMP OnPlanMsiPackage( | ||
315 | __in_z LPCWSTR /*wzPackageId*/, | ||
316 | __in BOOL /*fExecute*/, | ||
317 | __in BOOTSTRAPPER_ACTION_STATE /*action*/, | ||
318 | __inout BOOL* pfCancel, | ||
319 | __inout BURN_MSI_PROPERTY* /*pActionMsiProperty*/, | ||
320 | __inout INSTALLUILEVEL* /*pUiLevel*/, | ||
321 | __inout BOOL* /*pfDisableExternalUiHandler*/ | ||
322 | ) | ||
323 | { | ||
324 | *pfCancel |= CheckCanceled(); | ||
325 | return S_OK; | ||
326 | } | ||
327 | |||
314 | virtual STDMETHODIMP OnPlanPackageComplete( | 328 | virtual STDMETHODIMP OnPlanPackageComplete( |
315 | __in_z LPCWSTR /*wzPackageId*/, | 329 | __in_z LPCWSTR /*wzPackageId*/, |
316 | __in HRESULT /*hrStatus*/, | 330 | __in HRESULT /*hrStatus*/, |
@@ -604,6 +618,8 @@ public: // IBootstrapperApplication | |||
604 | __in_z LPCWSTR wzPackageId, | 618 | __in_z LPCWSTR wzPackageId, |
605 | __in BOOL fExecute, | 619 | __in BOOL fExecute, |
606 | __in BOOTSTRAPPER_ACTION_STATE /*action*/, | 620 | __in BOOTSTRAPPER_ACTION_STATE /*action*/, |
621 | __in INSTALLUILEVEL /*uiLevel*/, | ||
622 | __in BOOL /*fDisableExternalUiHandler*/, | ||
607 | __inout BOOL* pfCancel | 623 | __inout BOOL* pfCancel |
608 | ) | 624 | ) |
609 | { | 625 | { |
diff --git a/src/balutil/inc/BalBaseBootstrapperApplicationProc.h b/src/balutil/inc/BalBaseBootstrapperApplicationProc.h index 35bc0a9e..d25af1f7 100644 --- a/src/balutil/inc/BalBaseBootstrapperApplicationProc.h +++ b/src/balutil/inc/BalBaseBootstrapperApplicationProc.h | |||
@@ -402,7 +402,7 @@ static HRESULT BalBaseBAProcOnExecutePackageBegin( | |||
402 | __inout BA_ONEXECUTEPACKAGEBEGIN_RESULTS* pResults | 402 | __inout BA_ONEXECUTEPACKAGEBEGIN_RESULTS* pResults |
403 | ) | 403 | ) |
404 | { | 404 | { |
405 | return pBA->OnExecutePackageBegin(pArgs->wzPackageId, pArgs->fExecute, pArgs->action, &pResults->fCancel); | 405 | return pBA->OnExecutePackageBegin(pArgs->wzPackageId, pArgs->fExecute, pArgs->action, pArgs->uiLevel, pArgs->fDisableExternalUiHandler, &pResults->fCancel); |
406 | } | 406 | } |
407 | 407 | ||
408 | static HRESULT BalBaseBAProcOnExecutePatchTarget( | 408 | static HRESULT BalBaseBAProcOnExecutePatchTarget( |
@@ -504,6 +504,15 @@ static HRESULT BalBaseBAProcOnLaunchApprovedExeComplete( | |||
504 | return pBA->OnLaunchApprovedExeComplete(pArgs->hrStatus, pArgs->dwProcessId); | 504 | return pBA->OnLaunchApprovedExeComplete(pArgs->hrStatus, pArgs->dwProcessId); |
505 | } | 505 | } |
506 | 506 | ||
507 | static HRESULT BalBaseBAProcOnPlanMsiPackage( | ||
508 | __in IBootstrapperApplication* pBA, | ||
509 | __in BA_ONPLANMSIPACKAGE_ARGS* pArgs, | ||
510 | __inout BA_ONPLANMSIPACKAGE_RESULTS* pResults | ||
511 | ) | ||
512 | { | ||
513 | return pBA->OnPlanMsiPackage(pArgs->wzPackageId, pArgs->fExecute, pArgs->action, &pResults->fCancel, &pResults->actionMsiProperty, &pResults->uiLevel, &pResults->fDisableExternalUiHandler); | ||
514 | } | ||
515 | |||
507 | /******************************************************************* | 516 | /******************************************************************* |
508 | BalBaseBootstrapperApplicationProc - requires pvContext to be of type IBootstrapperApplication. | 517 | BalBaseBootstrapperApplicationProc - requires pvContext to be of type IBootstrapperApplication. |
509 | Provides a default mapping between the new message based BA interface and | 518 | Provides a default mapping between the new message based BA interface and |
@@ -689,6 +698,9 @@ static HRESULT WINAPI BalBaseBootstrapperApplicationProc( | |||
689 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE: | 698 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE: |
690 | hr = BalBaseBAProcOnLaunchApprovedExeComplete(pBA, reinterpret_cast<BA_ONLAUNCHAPPROVEDEXECOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONLAUNCHAPPROVEDEXECOMPLETE_RESULTS*>(pvResults)); | 699 | hr = BalBaseBAProcOnLaunchApprovedExeComplete(pBA, reinterpret_cast<BA_ONLAUNCHAPPROVEDEXECOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONLAUNCHAPPROVEDEXECOMPLETE_RESULTS*>(pvResults)); |
691 | break; | 700 | break; |
701 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE: | ||
702 | hr = BalBaseBAProcOnPlanMsiPackage(pBA, reinterpret_cast<BA_ONPLANMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANMSIPACKAGE_RESULTS*>(pvResults)); | ||
703 | break; | ||
692 | } | 704 | } |
693 | } | 705 | } |
694 | 706 | ||
diff --git a/src/balutil/inc/IBootstrapperApplication.h b/src/balutil/inc/IBootstrapperApplication.h index 30b456c7..e17d2589 100644 --- a/src/balutil/inc/IBootstrapperApplication.h +++ b/src/balutil/inc/IBootstrapperApplication.h | |||
@@ -194,6 +194,18 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
194 | __inout BOOL* pfCancel | 194 | __inout BOOL* pfCancel |
195 | ) = 0; | 195 | ) = 0; |
196 | 196 | ||
197 | // OnPlanMsiPackage - called when the engine plans an MSI or MSP package. | ||
198 | // | ||
199 | STDMETHOD(OnPlanMsiPackage)( | ||
200 | __in_z LPCWSTR wzPackageId, | ||
201 | __in BOOL fExecute, // false means rollback. | ||
202 | __in BOOTSTRAPPER_ACTION_STATE action, | ||
203 | __inout BOOL* pfCancel, | ||
204 | __inout BURN_MSI_PROPERTY* pActionMsiProperty, | ||
205 | __inout INSTALLUILEVEL* pUiLevel, | ||
206 | __inout BOOL* pfDisableExternalUiHandler | ||
207 | ) = 0; | ||
208 | |||
197 | // OnPlanPackageComplete - called after the engine plans a package. | 209 | // OnPlanPackageComplete - called after the engine plans a package. |
198 | // | 210 | // |
199 | STDMETHOD(OnPlanPackageComplete)( | 211 | STDMETHOD(OnPlanPackageComplete)( |
@@ -390,6 +402,8 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
390 | __in_z LPCWSTR wzPackageId, | 402 | __in_z LPCWSTR wzPackageId, |
391 | __in BOOL fExecute, // false means rollback. | 403 | __in BOOL fExecute, // false means rollback. |
392 | __in BOOTSTRAPPER_ACTION_STATE action, | 404 | __in BOOTSTRAPPER_ACTION_STATE action, |
405 | __in INSTALLUILEVEL uiLevel, | ||
406 | __in BOOL fDisableExternalUiHandler, | ||
393 | __inout BOOL* pfCancel | 407 | __inout BOOL* pfCancel |
394 | ) = 0; | 408 | ) = 0; |
395 | 409 | ||