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 |