diff options
| author | Nir Bar <nir.bar@panel-sw.co.il> | 2022-12-06 13:22:41 +0200 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-12-12 21:50:39 -0600 |
| commit | 50e24e9cf2084b6cb67b5d8fc509163061408bb6 (patch) | |
| tree | 05c9df57480eb6308c3462c13847b43288f9dbb4 /src/api/burn/balutil | |
| parent | c54f3083489827a1e57c6fd7f3d76f62ddc6e85e (diff) | |
| download | wix-50e24e9cf2084b6cb67b5d8fc509163061408bb6.tar.gz wix-50e24e9cf2084b6cb67b5d8fc509163061408bb6.tar.bz2 wix-50e24e9cf2084b6cb67b5d8fc509163061408bb6.zip | |
Use MSI transaction end result to detect whether reboot is needed
Diffstat (limited to 'src/api/burn/balutil')
4 files changed, 49 insertions, 15 deletions
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctions.h b/src/api/burn/balutil/inc/BalBaseBAFunctions.h index 9a8ac87e..6ad109c3 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctions.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctions.h | |||
| @@ -710,7 +710,10 @@ public: // IBootstrapperApplication | |||
| 710 | 710 | ||
| 711 | virtual STDMETHODIMP OnCommitMsiTransactionComplete( | 711 | virtual STDMETHODIMP OnCommitMsiTransactionComplete( |
| 712 | __in_z LPCWSTR /*wzTransactionId*/, | 712 | __in_z LPCWSTR /*wzTransactionId*/, |
| 713 | __in HRESULT /*hrStatus*/ | 713 | __in HRESULT /*hrStatus*/, |
| 714 | __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, | ||
| 715 | __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, | ||
| 716 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ | ||
| 714 | ) | 717 | ) |
| 715 | { | 718 | { |
| 716 | return S_OK; | 719 | return S_OK; |
| @@ -725,7 +728,10 @@ public: // IBootstrapperApplication | |||
| 725 | 728 | ||
| 726 | virtual STDMETHODIMP OnRollbackMsiTransactionComplete( | 729 | virtual STDMETHODIMP OnRollbackMsiTransactionComplete( |
| 727 | __in_z LPCWSTR /*wzTransactionId*/, | 730 | __in_z LPCWSTR /*wzTransactionId*/, |
| 728 | __in HRESULT /*hrStatus*/ | 731 | __in HRESULT /*hrStatus*/, |
| 732 | __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, | ||
| 733 | __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, | ||
| 734 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ | ||
| 729 | ) | 735 | ) |
| 730 | { | 736 | { |
| 731 | return S_OK; | 737 | return S_OK; |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h index 58cc0673..c8b80d13 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | |||
| @@ -197,7 +197,7 @@ public: // IBootstrapperApplication | |||
| 197 | __in LPCWSTR /*wzVersion*/, | 197 | __in LPCWSTR /*wzVersion*/, |
| 198 | __in BOOTSTRAPPER_RELATED_OPERATION /*operation*/, | 198 | __in BOOTSTRAPPER_RELATED_OPERATION /*operation*/, |
| 199 | __inout BOOL* pfCancel | 199 | __inout BOOL* pfCancel |
| 200 | ) | 200 | ) |
| 201 | { | 201 | { |
| 202 | *pfCancel |= CheckCanceled(); | 202 | *pfCancel |= CheckCanceled(); |
| 203 | return S_OK; | 203 | return S_OK; |
| @@ -902,10 +902,21 @@ public: // IBootstrapperApplication | |||
| 902 | 902 | ||
| 903 | virtual STDMETHODIMP OnCommitMsiTransactionComplete( | 903 | virtual STDMETHODIMP OnCommitMsiTransactionComplete( |
| 904 | __in_z LPCWSTR /*wzTransactionId*/, | 904 | __in_z LPCWSTR /*wzTransactionId*/, |
| 905 | __in HRESULT /*hrStatus*/ | 905 | __in HRESULT /*hrStatus*/, |
| 906 | __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, | ||
| 907 | __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, | ||
| 908 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ | ||
| 906 | ) | 909 | ) |
| 907 | { | 910 | { |
| 908 | return S_OK; | 911 | HRESULT hr = S_OK; |
| 912 | |||
| 913 | if (CheckCanceled()) | ||
| 914 | { | ||
| 915 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); | ||
| 916 | } | ||
| 917 | |||
| 918 | LExit: | ||
| 919 | return hr; | ||
| 909 | } | 920 | } |
| 910 | 921 | ||
| 911 | virtual STDMETHODIMP OnRollbackMsiTransactionBegin( | 922 | virtual STDMETHODIMP OnRollbackMsiTransactionBegin( |
| @@ -917,10 +928,21 @@ public: // IBootstrapperApplication | |||
| 917 | 928 | ||
| 918 | virtual STDMETHODIMP OnRollbackMsiTransactionComplete( | 929 | virtual STDMETHODIMP OnRollbackMsiTransactionComplete( |
| 919 | __in_z LPCWSTR /*wzTransactionId*/, | 930 | __in_z LPCWSTR /*wzTransactionId*/, |
| 920 | __in HRESULT /*hrStatus*/ | 931 | __in HRESULT /*hrStatus*/, |
| 932 | __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, | ||
| 933 | __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, | ||
| 934 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ | ||
| 921 | ) | 935 | ) |
| 922 | { | 936 | { |
| 923 | return S_OK; | 937 | HRESULT hr = S_OK; |
| 938 | |||
| 939 | if (CheckCanceled()) | ||
| 940 | { | ||
| 941 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); | ||
| 942 | } | ||
| 943 | |||
| 944 | LExit: | ||
| 945 | return hr; | ||
| 924 | } | 946 | } |
| 925 | 947 | ||
| 926 | virtual STDMETHODIMP OnPauseAutomaticUpdatesBegin( | 948 | virtual STDMETHODIMP OnPauseAutomaticUpdatesBegin( |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h index 62cb85bc..34739ba3 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h | |||
| @@ -579,10 +579,10 @@ static HRESULT BalBaseBAProcOnCommitMsiTransactionBegin( | |||
| 579 | static HRESULT BalBaseBAProcOnCommitMsiTransactionComplete( | 579 | static HRESULT BalBaseBAProcOnCommitMsiTransactionComplete( |
| 580 | __in IBootstrapperApplication* pBA, | 580 | __in IBootstrapperApplication* pBA, |
| 581 | __in BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS* pArgs, | 581 | __in BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS* pArgs, |
| 582 | __inout BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS* /*pResults*/ | 582 | __inout BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS* pResults |
| 583 | ) | 583 | ) |
| 584 | { | 584 | { |
| 585 | return pBA->OnCommitMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus); | 585 | return pBA->OnCommitMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus, pArgs->restart, pArgs->recommendation, &pResults->action); |
| 586 | } | 586 | } |
| 587 | 587 | ||
| 588 | static HRESULT BalBaseBAProcOnRollbackMsiTransactionBegin( | 588 | static HRESULT BalBaseBAProcOnRollbackMsiTransactionBegin( |
| @@ -597,10 +597,10 @@ static HRESULT BalBaseBAProcOnRollbackMsiTransactionBegin( | |||
| 597 | static HRESULT BalBaseBAProcOnRollbackMsiTransactionComplete( | 597 | static HRESULT BalBaseBAProcOnRollbackMsiTransactionComplete( |
| 598 | __in IBootstrapperApplication* pBA, | 598 | __in IBootstrapperApplication* pBA, |
| 599 | __in BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS* pArgs, | 599 | __in BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS* pArgs, |
| 600 | __inout BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS* /*pResults*/ | 600 | __inout BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS* pResults |
| 601 | ) | 601 | ) |
| 602 | { | 602 | { |
| 603 | return pBA->OnRollbackMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus); | 603 | return pBA->OnRollbackMsiTransactionComplete(pArgs->wzTransactionId, pArgs->hrStatus, pArgs->restart, pArgs->recommendation, &pResults->action); |
| 604 | } | 604 | } |
| 605 | 605 | ||
| 606 | static HRESULT BalBaseBAProcOnPauseAutomaticUpdatesBegin( | 606 | static HRESULT BalBaseBAProcOnPauseAutomaticUpdatesBegin( |
| @@ -780,7 +780,7 @@ static HRESULT WINAPI BalBaseBootstrapperApplicationProc( | |||
| 780 | { | 780 | { |
| 781 | IBootstrapperApplication* pBA = reinterpret_cast<IBootstrapperApplication*>(pvContext); | 781 | IBootstrapperApplication* pBA = reinterpret_cast<IBootstrapperApplication*>(pvContext); |
| 782 | HRESULT hr = pBA->BAProc(message, pvArgs, pvResults, pvContext); | 782 | HRESULT hr = pBA->BAProc(message, pvArgs, pvResults, pvContext); |
| 783 | 783 | ||
| 784 | if (E_NOTIMPL == hr) | 784 | if (E_NOTIMPL == hr) |
| 785 | { | 785 | { |
| 786 | switch (message) | 786 | switch (message) |
diff --git a/src/api/burn/balutil/inc/IBootstrapperApplication.h b/src/api/burn/balutil/inc/IBootstrapperApplication.h index fba919ea..faa211e4 100644 --- a/src/api/burn/balutil/inc/IBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/IBootstrapperApplication.h | |||
| @@ -574,7 +574,7 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
| 574 | ) = 0; | 574 | ) = 0; |
| 575 | 575 | ||
| 576 | // OnLaunchApprovedExeBegin - called before trying to launch the preapproved executable. | 576 | // OnLaunchApprovedExeBegin - called before trying to launch the preapproved executable. |
| 577 | // | 577 | // |
| 578 | STDMETHOD(OnLaunchApprovedExeBegin)( | 578 | STDMETHOD(OnLaunchApprovedExeBegin)( |
| 579 | __inout BOOL* pfCancel | 579 | __inout BOOL* pfCancel |
| 580 | ) = 0; | 580 | ) = 0; |
| @@ -603,7 +603,10 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
| 603 | 603 | ||
| 604 | STDMETHOD(OnCommitMsiTransactionComplete)( | 604 | STDMETHOD(OnCommitMsiTransactionComplete)( |
| 605 | __in_z LPCWSTR wzTransactionId, | 605 | __in_z LPCWSTR wzTransactionId, |
| 606 | __in HRESULT hrStatus | 606 | __in HRESULT hrStatus, |
| 607 | __in BOOTSTRAPPER_APPLY_RESTART restart, | ||
| 608 | __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation, | ||
| 609 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* pAction | ||
| 607 | ) = 0; | 610 | ) = 0; |
| 608 | 611 | ||
| 609 | STDMETHOD(OnRollbackMsiTransactionBegin)( | 612 | STDMETHOD(OnRollbackMsiTransactionBegin)( |
| @@ -612,7 +615,10 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
| 612 | 615 | ||
| 613 | STDMETHOD(OnRollbackMsiTransactionComplete)( | 616 | STDMETHOD(OnRollbackMsiTransactionComplete)( |
| 614 | __in_z LPCWSTR wzTransactionId, | 617 | __in_z LPCWSTR wzTransactionId, |
| 615 | __in HRESULT hrStatus | 618 | __in HRESULT hrStatus, |
| 619 | __in BOOTSTRAPPER_APPLY_RESTART restart, | ||
| 620 | __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation, | ||
| 621 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* pAction | ||
| 616 | ) = 0; | 622 | ) = 0; |
| 617 | 623 | ||
| 618 | STDMETHOD(OnPauseAutomaticUpdatesBegin)( | 624 | STDMETHOD(OnPauseAutomaticUpdatesBegin)( |
