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 /src | |
| parent | b0b50f1d8512b6d7ebd087d19406629db0a5ef9b (diff) | |
| download | wix-780cd25e41f2d2982807a0a2a24a734684d27fe6.tar.gz wix-780cd25e41f2d2982807a0a2a24a734684d27fe6.tar.bz2 wix-780cd25e41f2d2982807a0a2a24a734684d27fe6.zip | |
WIXFEAT:6164 Add OnPlanMsiPackage.
Diffstat (limited to 'src')
| -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 | ||
