diff options
Diffstat (limited to 'src/wixstdba/WixStandardBootstrapperApplication.cpp')
| -rw-r--r-- | src/wixstdba/WixStandardBootstrapperApplication.cpp | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/src/wixstdba/WixStandardBootstrapperApplication.cpp b/src/wixstdba/WixStandardBootstrapperApplication.cpp index 6418cb00..9c882dfa 100644 --- a/src/wixstdba/WixStandardBootstrapperApplication.cpp +++ b/src/wixstdba/WixStandardBootstrapperApplication.cpp | |||
| @@ -383,6 +383,8 @@ public: // IBootstrapperApplication | |||
| 383 | 383 | ||
| 384 | virtual STDMETHODIMP OnPlanPackageBegin( | 384 | virtual STDMETHODIMP OnPlanPackageBegin( |
| 385 | __in_z LPCWSTR wzPackageId, | 385 | __in_z LPCWSTR wzPackageId, |
| 386 | __in BOOTSTRAPPER_PACKAGE_STATE state, | ||
| 387 | __in BOOL fInstallCondition, | ||
| 386 | __in BOOTSTRAPPER_REQUEST_STATE recommendedState, | 388 | __in BOOTSTRAPPER_REQUEST_STATE recommendedState, |
| 387 | __inout BOOTSTRAPPER_REQUEST_STATE *pRequestState, | 389 | __inout BOOTSTRAPPER_REQUEST_STATE *pRequestState, |
| 388 | __inout BOOL* pfCancel | 390 | __inout BOOL* pfCancel |
| @@ -392,7 +394,7 @@ public: // IBootstrapperApplication | |||
| 392 | WIXSTDBA_PACKAGE_INFO* pPackageInfo = NULL; | 394 | WIXSTDBA_PACKAGE_INFO* pPackageInfo = NULL; |
| 393 | BAL_INFO_PACKAGE* pPackage = NULL; | 395 | BAL_INFO_PACKAGE* pPackage = NULL; |
| 394 | 396 | ||
| 395 | // If we're planning to install a prerequisite, install it. The prerequisite needs to be installed | 397 | // If we're planning to install prerequisites, install them. The prerequisites need to be installed |
| 396 | // in all cases (even uninstall!) so the BA can load next. | 398 | // in all cases (even uninstall!) so the BA can load next. |
| 397 | if (m_fPrereq) | 399 | if (m_fPrereq) |
| 398 | { | 400 | { |
| @@ -401,21 +403,7 @@ public: // IBootstrapperApplication | |||
| 401 | hr = GetPackageInfo(wzPackageId, &pPackageInfo, &pPackage); | 403 | hr = GetPackageInfo(wzPackageId, &pPackageInfo, &pPackage); |
| 402 | if (SUCCEEDED(hr) && pPackage->fPrereqPackage && pPackageInfo) | 404 | if (SUCCEEDED(hr) && pPackage->fPrereqPackage && pPackageInfo) |
| 403 | { | 405 | { |
| 404 | if (pPackage->sczInstallCondition && *pPackage->sczInstallCondition) | 406 | pPackageInfo->fPlannedToBeInstalled = fInstall = fInstallCondition; |
| 405 | { | ||
| 406 | hr = BalEvaluateCondition(pPackage->sczInstallCondition, &fInstall); | ||
| 407 | if (FAILED(hr)) | ||
| 408 | { | ||
| 409 | fInstall = FALSE; | ||
| 410 | } | ||
| 411 | } | ||
| 412 | else | ||
| 413 | { | ||
| 414 | // If the InstallCondition is missing, then it should always be installed. | ||
| 415 | fInstall = TRUE; | ||
| 416 | } | ||
| 417 | |||
| 418 | pPackageInfo->fPlannedToBeInstalled = fInstall; | ||
| 419 | } | 407 | } |
| 420 | 408 | ||
| 421 | if (fInstall) | 409 | if (fInstall) |
| @@ -449,7 +437,7 @@ public: // IBootstrapperApplication | |||
| 449 | } | 437 | } |
| 450 | } | 438 | } |
| 451 | 439 | ||
| 452 | return CBalBaseBootstrapperApplication::OnPlanPackageBegin(wzPackageId, recommendedState, pRequestState, pfCancel); | 440 | return CBalBaseBootstrapperApplication::OnPlanPackageBegin(wzPackageId, state, fInstallCondition, recommendedState, pRequestState, pfCancel); |
| 453 | } | 441 | } |
| 454 | 442 | ||
| 455 | 443 | ||
| @@ -1146,8 +1134,8 @@ public: // IBootstrapperApplication | |||
| 1146 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDMSIPACKAGE: | 1134 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDMSIPACKAGE: |
| 1147 | OnDetectRelatedMsiPackageFallback(reinterpret_cast<BA_ONDETECTRELATEDMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTRELATEDMSIPACKAGE_RESULTS*>(pvResults)); | 1135 | OnDetectRelatedMsiPackageFallback(reinterpret_cast<BA_ONDETECTRELATEDMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTRELATEDMSIPACKAGE_RESULTS*>(pvResults)); |
| 1148 | break; | 1136 | break; |
| 1149 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTTARGETMSIPACKAGE: | 1137 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPATCHTARGET: |
| 1150 | OnDetectTargetMsiPackageFallback(reinterpret_cast<BA_ONDETECTTARGETMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTTARGETMSIPACKAGE_RESULTS*>(pvResults)); | 1138 | OnDetectPatchTargetFallback(reinterpret_cast<BA_ONDETECTPATCHTARGET_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTPATCHTARGET_RESULTS*>(pvResults)); |
| 1151 | break; | 1139 | break; |
| 1152 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTMSIFEATURE: | 1140 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTMSIFEATURE: |
| 1153 | OnDetectMsiFeatureFallback(reinterpret_cast<BA_ONDETECTMSIFEATURE_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTMSIFEATURE_RESULTS*>(pvResults)); | 1141 | OnDetectMsiFeatureFallback(reinterpret_cast<BA_ONDETECTMSIFEATURE_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTMSIFEATURE_RESULTS*>(pvResults)); |
| @@ -1161,8 +1149,8 @@ public: // IBootstrapperApplication | |||
| 1161 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN: | 1149 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN: |
| 1162 | OnPlanPackageBeginFallback(reinterpret_cast<BA_ONPLANPACKAGEBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANPACKAGEBEGIN_RESULTS*>(pvResults)); | 1150 | OnPlanPackageBeginFallback(reinterpret_cast<BA_ONPLANPACKAGEBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANPACKAGEBEGIN_RESULTS*>(pvResults)); |
| 1163 | break; | 1151 | break; |
| 1164 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANTARGETMSIPACKAGE: | 1152 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPATCHTARGET: |
| 1165 | OnPlanTargetMsiPackageFallback(reinterpret_cast<BA_ONPLANTARGETMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANTARGETMSIPACKAGE_RESULTS*>(pvResults)); | 1153 | OnPlanPatchTargetFallback(reinterpret_cast<BA_ONPLANPATCHTARGET_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANPATCHTARGET_RESULTS*>(pvResults)); |
| 1166 | break; | 1154 | break; |
| 1167 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIFEATURE: | 1155 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIFEATURE: |
| 1168 | OnPlanMsiFeatureFallback(reinterpret_cast<BA_ONPLANMSIFEATURE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANMSIFEATURE_RESULTS*>(pvResults)); | 1156 | OnPlanMsiFeatureFallback(reinterpret_cast<BA_ONPLANMSIFEATURE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANMSIFEATURE_RESULTS*>(pvResults)); |
| @@ -1293,6 +1281,9 @@ public: // IBootstrapperApplication | |||
| 1293 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE: | 1281 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE: |
| 1294 | OnSystemRestorePointCompleteFallback(reinterpret_cast<BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS*>(pvResults)); | 1282 | OnSystemRestorePointCompleteFallback(reinterpret_cast<BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS*>(pvResults)); |
| 1295 | break; | 1283 | break; |
| 1284 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE: | ||
| 1285 | OnPlannedPackageFallback(reinterpret_cast<BA_ONPLANNEDPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANNEDPACKAGE_RESULTS*>(pvResults)); | ||
| 1286 | break; | ||
| 1296 | default: | 1287 | default: |
| 1297 | BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "WIXSTDBA: Forwarding unknown BA message: %d", message); | 1288 | BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "WIXSTDBA: Forwarding unknown BA message: %d", message); |
| 1298 | m_pfnBAFunctionsProc((BA_FUNCTIONS_MESSAGE)message, pvArgs, pvResults, m_pvBAFunctionsProcContext); | 1289 | m_pfnBAFunctionsProc((BA_FUNCTIONS_MESSAGE)message, pvArgs, pvResults, m_pvBAFunctionsProcContext); |
| @@ -1408,12 +1399,12 @@ private: // privates | |||
| 1408 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONDETECTRELATEDMSIPACKAGE, pArgs, pResults, m_pvBAFunctionsProcContext); | 1399 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONDETECTRELATEDMSIPACKAGE, pArgs, pResults, m_pvBAFunctionsProcContext); |
| 1409 | } | 1400 | } |
| 1410 | 1401 | ||
| 1411 | void OnDetectTargetMsiPackageFallback( | 1402 | void OnDetectPatchTargetFallback( |
| 1412 | __in BA_ONDETECTTARGETMSIPACKAGE_ARGS* pArgs, | 1403 | __in BA_ONDETECTPATCHTARGET_ARGS* pArgs, |
| 1413 | __inout BA_ONDETECTTARGETMSIPACKAGE_RESULTS* pResults | 1404 | __inout BA_ONDETECTPATCHTARGET_RESULTS* pResults |
| 1414 | ) | 1405 | ) |
| 1415 | { | 1406 | { |
| 1416 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONDETECTTARGETMSIPACKAGE, pArgs, pResults, m_pvBAFunctionsProcContext); | 1407 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONDETECTPATCHTARGET, pArgs, pResults, m_pvBAFunctionsProcContext); |
| 1417 | } | 1408 | } |
| 1418 | 1409 | ||
| 1419 | void OnDetectMsiFeatureFallback( | 1410 | void OnDetectMsiFeatureFallback( |
| @@ -1452,13 +1443,13 @@ private: // privates | |||
| 1452 | BalLogId(BOOTSTRAPPER_LOG_LEVEL_STANDARD, MSG_WIXSTDBA_PLANNED_PACKAGE, m_hModule, pArgs->wzPackageId, LoggingRequestStateToString(requestedState), LoggingRequestStateToString(pResults->requestedState)); | 1443 | BalLogId(BOOTSTRAPPER_LOG_LEVEL_STANDARD, MSG_WIXSTDBA_PLANNED_PACKAGE, m_hModule, pArgs->wzPackageId, LoggingRequestStateToString(requestedState), LoggingRequestStateToString(pResults->requestedState)); |
| 1453 | } | 1444 | } |
| 1454 | 1445 | ||
| 1455 | void OnPlanTargetMsiPackageFallback( | 1446 | void OnPlanPatchTargetFallback( |
| 1456 | __in BA_ONPLANTARGETMSIPACKAGE_ARGS* pArgs, | 1447 | __in BA_ONPLANPATCHTARGET_ARGS* pArgs, |
| 1457 | __inout BA_ONPLANTARGETMSIPACKAGE_RESULTS* pResults | 1448 | __inout BA_ONPLANPATCHTARGET_RESULTS* pResults |
| 1458 | ) | 1449 | ) |
| 1459 | { | 1450 | { |
| 1460 | BOOTSTRAPPER_REQUEST_STATE requestedState = pResults->requestedState; | 1451 | BOOTSTRAPPER_REQUEST_STATE requestedState = pResults->requestedState; |
| 1461 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONPLANTARGETMSIPACKAGE, pArgs, pResults, m_pvBAFunctionsProcContext); | 1452 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONPLANPATCHTARGET, pArgs, pResults, m_pvBAFunctionsProcContext); |
| 1462 | BalLogId(BOOTSTRAPPER_LOG_LEVEL_STANDARD, MSG_WIXSTDBA_PLANNED_TARGET_MSI_PACKAGE, m_hModule, pArgs->wzPackageId, pArgs->wzProductCode, LoggingRequestStateToString(requestedState), LoggingRequestStateToString(pResults->requestedState)); | 1453 | BalLogId(BOOTSTRAPPER_LOG_LEVEL_STANDARD, MSG_WIXSTDBA_PLANNED_TARGET_MSI_PACKAGE, m_hModule, pArgs->wzPackageId, pArgs->wzProductCode, LoggingRequestStateToString(requestedState), LoggingRequestStateToString(pResults->requestedState)); |
| 1463 | } | 1454 | } |
| 1464 | 1455 | ||
| @@ -1480,6 +1471,14 @@ private: // privates | |||
| 1480 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONPLANPACKAGECOMPLETE, pArgs, pResults, m_pvBAFunctionsProcContext); | 1471 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONPLANPACKAGECOMPLETE, pArgs, pResults, m_pvBAFunctionsProcContext); |
| 1481 | } | 1472 | } |
| 1482 | 1473 | ||
| 1474 | void OnPlannedPackageFallback( | ||
| 1475 | __in BA_ONPLANNEDPACKAGE_ARGS* pArgs, | ||
| 1476 | __inout BA_ONPLANNEDPACKAGE_RESULTS* pResults | ||
| 1477 | ) | ||
| 1478 | { | ||
| 1479 | m_pfnBAFunctionsProc(BA_FUNCTIONS_MESSAGE_ONPLANNEDPACKAGE, pArgs, pResults, m_pvBAFunctionsProcContext); | ||
| 1480 | } | ||
| 1481 | |||
| 1483 | void OnApplyBeginFallback( | 1482 | void OnApplyBeginFallback( |
| 1484 | __in BA_ONAPPLYBEGIN_ARGS* pArgs, | 1483 | __in BA_ONAPPLYBEGIN_ARGS* pArgs, |
| 1485 | __inout BA_ONAPPLYBEGIN_RESULTS* pResults | 1484 | __inout BA_ONAPPLYBEGIN_RESULTS* pResults |
