diff options
Diffstat (limited to '')
| -rw-r--r-- | src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | 90 |
1 files changed, 41 insertions, 49 deletions
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h index ae7b2a93..30c75fb6 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | |||
| @@ -3,8 +3,6 @@ | |||
| 3 | #include <windows.h> | 3 | #include <windows.h> |
| 4 | #include <msiquery.h> | 4 | #include <msiquery.h> |
| 5 | 5 | ||
| 6 | #include "BootstrapperEngine.h" | ||
| 7 | #include "BootstrapperApplication.h" | ||
| 8 | #include "IBootstrapperEngine.h" | 6 | #include "IBootstrapperEngine.h" |
| 9 | #include "IBootstrapperApplication.h" | 7 | #include "IBootstrapperApplication.h" |
| 10 | 8 | ||
| @@ -12,7 +10,9 @@ | |||
| 12 | #include "balinfo.h" | 10 | #include "balinfo.h" |
| 13 | #include "balretry.h" | 11 | #include "balretry.h" |
| 14 | 12 | ||
| 15 | class CBalBaseBootstrapperApplication : public IBootstrapperApplication | 13 | #define CBalBaseBootstrapperApplication CBootstrapperApplication |
| 14 | |||
| 15 | class CBootstrapperApplication : public IBootstrapperApplication | ||
| 16 | { | 16 | { |
| 17 | public: // IUnknown | 17 | public: // IUnknown |
| 18 | virtual STDMETHODIMP QueryInterface( | 18 | virtual STDMETHODIMP QueryInterface( |
| @@ -65,8 +65,7 @@ public: // IBootstrapperApplication | |||
| 65 | virtual STDMETHODIMP_(HRESULT) BAProc( | 65 | virtual STDMETHODIMP_(HRESULT) BAProc( |
| 66 | __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, | 66 | __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, |
| 67 | __in const LPVOID /*pvArgs*/, | 67 | __in const LPVOID /*pvArgs*/, |
| 68 | __inout LPVOID /*pvResults*/, | 68 | __inout LPVOID /*pvResults*/ |
| 69 | __in_opt LPVOID /*pvContext*/ | ||
| 70 | ) | 69 | ) |
| 71 | { | 70 | { |
| 72 | return E_NOTIMPL; | 71 | return E_NOTIMPL; |
| @@ -76,10 +75,35 @@ public: // IBootstrapperApplication | |||
| 76 | __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, | 75 | __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, |
| 77 | __in const LPVOID /*pvArgs*/, | 76 | __in const LPVOID /*pvArgs*/, |
| 78 | __inout LPVOID /*pvResults*/, | 77 | __inout LPVOID /*pvResults*/, |
| 79 | __inout HRESULT* /*phr*/, | 78 | __inout HRESULT* /*phr*/ |
| 80 | __in_opt LPVOID /*pvContext*/ | 79 | ) |
| 80 | { | ||
| 81 | } | ||
| 82 | |||
| 83 | virtual STDMETHODIMP OnCreate( | ||
| 84 | __in IBootstrapperEngine* pEngine, | ||
| 85 | __in BOOTSTRAPPER_COMMAND* pCommand | ||
| 86 | ) | ||
| 87 | { | ||
| 88 | HRESULT hr = S_OK; | ||
| 89 | |||
| 90 | m_commandDisplay = pCommand->display; | ||
| 91 | |||
| 92 | hr = BalInfoParseCommandLine(&m_BalInfoCommand, pCommand); | ||
| 93 | BalExitOnFailure(hr, "Failed to parse command line with balutil."); | ||
| 94 | |||
| 95 | pEngine->AddRef(); | ||
| 96 | m_pEngine = pEngine; | ||
| 97 | |||
| 98 | LExit: | ||
| 99 | return hr; | ||
| 100 | } | ||
| 101 | |||
| 102 | virtual STDMETHODIMP OnDestroy( | ||
| 103 | __in BOOL /*fReload*/ | ||
| 81 | ) | 104 | ) |
| 82 | { | 105 | { |
| 106 | return S_OK; | ||
| 83 | } | 107 | } |
| 84 | 108 | ||
| 85 | virtual STDMETHODIMP OnStartup() | 109 | virtual STDMETHODIMP OnStartup() |
| @@ -429,7 +453,7 @@ public: // IBootstrapperApplication | |||
| 429 | m_dwProgressPercentage = dwProgressPercentage; | 453 | m_dwProgressPercentage = dwProgressPercentage; |
| 430 | m_dwOverallProgressPercentage = dwOverallProgressPercentage; | 454 | m_dwOverallProgressPercentage = dwOverallProgressPercentage; |
| 431 | 455 | ||
| 432 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) | 456 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) |
| 433 | { | 457 | { |
| 434 | hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); | 458 | hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); |
| 435 | BalExitOnFailure(hr, "Failed to send embedded overall progress."); | 459 | BalExitOnFailure(hr, "Failed to send embedded overall progress."); |
| @@ -463,7 +487,7 @@ public: // IBootstrapperApplication | |||
| 463 | { | 487 | { |
| 464 | BalRetryErrorOccurred(wzPackageId, dwCode); | 488 | BalRetryErrorOccurred(wzPackageId, dwCode); |
| 465 | 489 | ||
| 466 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) | 490 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) |
| 467 | { | 491 | { |
| 468 | HRESULT hr = m_pEngine->SendEmbeddedError(dwCode, wzError, dwUIHint, pResult); | 492 | HRESULT hr = m_pEngine->SendEmbeddedError(dwCode, wzError, dwUIHint, pResult); |
| 469 | if (FAILED(hr)) | 493 | if (FAILED(hr)) |
| @@ -475,7 +499,7 @@ public: // IBootstrapperApplication | |||
| 475 | { | 499 | { |
| 476 | *pResult = IDCANCEL; | 500 | *pResult = IDCANCEL; |
| 477 | } | 501 | } |
| 478 | else if (BOOTSTRAPPER_DISPLAY_FULL == m_display) | 502 | else if (BOOTSTRAPPER_DISPLAY_FULL == m_commandDisplay) |
| 479 | { | 503 | { |
| 480 | if (BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER == errorType || BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY == errorType) | 504 | if (BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER == errorType || BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY == errorType) |
| 481 | { | 505 | { |
| @@ -553,7 +577,7 @@ public: // IBootstrapperApplication | |||
| 553 | 577 | ||
| 554 | // Send progress even though we don't update the numbers to at least give the caller an opportunity | 578 | // Send progress even though we don't update the numbers to at least give the caller an opportunity |
| 555 | // to cancel. | 579 | // to cancel. |
| 556 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) | 580 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) |
| 557 | { | 581 | { |
| 558 | hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); | 582 | hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); |
| 559 | BalExitOnFailure(hr, "Failed to send embedded cache progress."); | 583 | BalExitOnFailure(hr, "Failed to send embedded cache progress."); |
| @@ -733,7 +757,7 @@ public: // IBootstrapperApplication | |||
| 733 | 757 | ||
| 734 | // Send progress even though we don't update the numbers to at least give the caller an opportunity | 758 | // Send progress even though we don't update the numbers to at least give the caller an opportunity |
| 735 | // to cancel. | 759 | // to cancel. |
| 736 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) | 760 | if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) |
| 737 | { | 761 | { |
| 738 | hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); | 762 | hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); |
| 739 | BalExitOnFailure(hr, "Failed to send embedded execute progress."); | 763 | BalExitOnFailure(hr, "Failed to send embedded execute progress."); |
| @@ -848,7 +872,7 @@ public: // IBootstrapperApplication | |||
| 848 | { | 872 | { |
| 849 | HRESULT hr = S_OK; | 873 | HRESULT hr = S_OK; |
| 850 | BOOL fRestartRequired = BOOTSTRAPPER_APPLY_RESTART_REQUIRED == restart; | 874 | BOOL fRestartRequired = BOOTSTRAPPER_APPLY_RESTART_REQUIRED == restart; |
| 851 | BOOL fShouldBlockRestart = BOOTSTRAPPER_DISPLAY_FULL <= m_display && BAL_INFO_RESTART_PROMPT >= m_BalInfoCommand.restart; | 875 | BOOL fShouldBlockRestart = BOOTSTRAPPER_DISPLAY_FULL <= m_commandDisplay && BAL_INFO_RESTART_PROMPT >= m_BalInfoCommand.restart; |
| 852 | 876 | ||
| 853 | if (fRestartRequired && !fShouldBlockRestart) | 877 | if (fRestartRequired && !fShouldBlockRestart) |
| 854 | { | 878 | { |
| @@ -1050,20 +1074,6 @@ public: // IBootstrapperApplication | |||
| 1050 | return S_OK; | 1074 | return S_OK; |
| 1051 | } | 1075 | } |
| 1052 | 1076 | ||
| 1053 | virtual STDMETHODIMP OnSetUpdateBegin() | ||
| 1054 | { | ||
| 1055 | return S_OK; | ||
| 1056 | } | ||
| 1057 | |||
| 1058 | virtual STDMETHODIMP OnSetUpdateComplete( | ||
| 1059 | __in HRESULT /*hrStatus*/, | ||
| 1060 | __in_z_opt LPCWSTR /*wzPreviousPackageId*/, | ||
| 1061 | __in_z_opt LPCWSTR /*wzNewPackageId*/ | ||
| 1062 | ) | ||
| 1063 | { | ||
| 1064 | return S_OK; | ||
| 1065 | } | ||
| 1066 | |||
| 1067 | virtual STDMETHODIMP OnPlanRestoreRelatedBundle( | 1077 | virtual STDMETHODIMP OnPlanRestoreRelatedBundle( |
| 1068 | __in_z LPCWSTR /*wzBundleId*/, | 1078 | __in_z LPCWSTR /*wzBundleId*/, |
| 1069 | __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, | 1079 | __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, |
| @@ -1127,22 +1137,6 @@ public: // IBootstrapperApplication | |||
| 1127 | return S_OK; | 1137 | return S_OK; |
| 1128 | } | 1138 | } |
| 1129 | 1139 | ||
| 1130 | public: //CBalBaseBootstrapperApplication | ||
| 1131 | virtual STDMETHODIMP Initialize( | ||
| 1132 | __in const BOOTSTRAPPER_CREATE_ARGS* pCreateArgs | ||
| 1133 | ) | ||
| 1134 | { | ||
| 1135 | HRESULT hr = S_OK; | ||
| 1136 | |||
| 1137 | m_display = pCreateArgs->pCommand->display; | ||
| 1138 | |||
| 1139 | hr = BalInfoParseCommandLine(&m_BalInfoCommand, pCreateArgs->pCommand); | ||
| 1140 | BalExitOnFailure(hr, "Failed to parse command line with balutil."); | ||
| 1141 | |||
| 1142 | LExit: | ||
| 1143 | return hr; | ||
| 1144 | } | ||
| 1145 | |||
| 1146 | protected: | 1140 | protected: |
| 1147 | // | 1141 | // |
| 1148 | // PromptCancel - prompts the user to close (if not forced). | 1142 | // PromptCancel - prompts the user to close (if not forced). |
| @@ -1195,16 +1189,14 @@ protected: | |||
| 1195 | } | 1189 | } |
| 1196 | 1190 | ||
| 1197 | CBalBaseBootstrapperApplication( | 1191 | CBalBaseBootstrapperApplication( |
| 1198 | __in IBootstrapperEngine* pEngine, | ||
| 1199 | __in DWORD dwRetryCount = 0, | 1192 | __in DWORD dwRetryCount = 0, |
| 1200 | __in DWORD dwRetryTimeout = 1000 | 1193 | __in DWORD dwRetryTimeout = 1000 |
| 1201 | ) | 1194 | ) |
| 1202 | { | 1195 | { |
| 1203 | m_cReferences = 1; | 1196 | m_cReferences = 1; |
| 1204 | m_display = BOOTSTRAPPER_DISPLAY_UNKNOWN; | 1197 | m_commandDisplay = BOOTSTRAPPER_DISPLAY_UNKNOWN; |
| 1205 | 1198 | ||
| 1206 | pEngine->AddRef(); | 1199 | m_pEngine = NULL; |
| 1207 | m_pEngine = pEngine; | ||
| 1208 | 1200 | ||
| 1209 | ::InitializeCriticalSection(&m_csCanceled); | 1201 | ::InitializeCriticalSection(&m_csCanceled); |
| 1210 | m_fCanceled = FALSE; | 1202 | m_fCanceled = FALSE; |
| @@ -1230,12 +1222,12 @@ protected: | |||
| 1230 | CRITICAL_SECTION m_csCanceled; | 1222 | CRITICAL_SECTION m_csCanceled; |
| 1231 | BOOL m_fCanceled; | 1223 | BOOL m_fCanceled; |
| 1232 | 1224 | ||
| 1225 | IBootstrapperEngine* m_pEngine; | ||
| 1233 | BAL_INFO_COMMAND m_BalInfoCommand; | 1226 | BAL_INFO_COMMAND m_BalInfoCommand; |
| 1234 | 1227 | ||
| 1235 | private: | 1228 | private: |
| 1236 | long m_cReferences; | 1229 | long m_cReferences; |
| 1237 | BOOTSTRAPPER_DISPLAY m_display; | 1230 | BOOTSTRAPPER_DISPLAY m_commandDisplay; |
| 1238 | IBootstrapperEngine* m_pEngine; | ||
| 1239 | 1231 | ||
| 1240 | BOOL m_fRollingBack; | 1232 | BOOL m_fRollingBack; |
| 1241 | 1233 | ||
