diff options
Diffstat (limited to '')
| -rw-r--r-- | src/burn/engine/plan.cpp | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp index b7703869..be281827 100644 --- a/src/burn/engine/plan.cpp +++ b/src/burn/engine/plan.cpp | |||
| @@ -441,15 +441,11 @@ extern "C" HRESULT PlanLayoutBundle( | |||
| 441 | hr = VariableGetString(pVariables, BURN_BUNDLE_LAYOUT_DIRECTORY, &sczLayoutDirectory); | 441 | hr = VariableGetString(pVariables, BURN_BUNDLE_LAYOUT_DIRECTORY, &sczLayoutDirectory); |
| 442 | if (E_NOTFOUND == hr) // if not set, use the current directory as the layout directory. | 442 | if (E_NOTFOUND == hr) // if not set, use the current directory as the layout directory. |
| 443 | { | 443 | { |
| 444 | hr = VariableGetString(pVariables, BURN_BUNDLE_SOURCE_PROCESS_FOLDER, &sczLayoutDirectory); | 444 | hr = PathForCurrentProcess(&sczExecutablePath, NULL); |
| 445 | if (E_NOTFOUND == hr) // if not set, use the current directory as the layout directory. | 445 | ExitOnFailure(hr, "Failed to get path for current executing process as layout directory."); |
| 446 | { | ||
| 447 | hr = PathForCurrentProcess(&sczExecutablePath, NULL); | ||
| 448 | ExitOnFailure(hr, "Failed to get path for current executing process as layout directory."); | ||
| 449 | 446 | ||
| 450 | hr = PathGetDirectory(sczExecutablePath, &sczLayoutDirectory); | 447 | hr = PathGetDirectory(sczExecutablePath, &sczLayoutDirectory); |
| 451 | ExitOnFailure(hr, "Failed to get executing process as layout directory."); | 448 | ExitOnFailure(hr, "Failed to get executing process as layout directory."); |
| 452 | } | ||
| 453 | } | 449 | } |
| 454 | ExitOnFailure(hr, "Failed to get bundle layout directory property."); | 450 | ExitOnFailure(hr, "Failed to get bundle layout directory property."); |
| 455 | 451 | ||
| @@ -538,7 +534,7 @@ extern "C" HRESULT PlanForwardCompatibleBundles( | |||
| 538 | 534 | ||
| 539 | fIgnoreBundle = fRecommendIgnore; | 535 | fIgnoreBundle = fRecommendIgnore; |
| 540 | 536 | ||
| 541 | hr = UserExperienceOnPlanForwardCompatibleBundle(pUX, pRelatedBundle->package.sczId, pRelatedBundle->detectRelationType, pRelatedBundle->sczTag, pRelatedBundle->package.fPerMachine, pRelatedBundle->pVersion, &fIgnoreBundle); | 537 | hr = BACallbackOnPlanForwardCompatibleBundle(pUX, pRelatedBundle->package.sczId, pRelatedBundle->detectRelationType, pRelatedBundle->sczTag, pRelatedBundle->package.fPerMachine, pRelatedBundle->pVersion, &fIgnoreBundle); |
| 542 | ExitOnRootFailure(hr, "BA aborted plan forward compatible bundle."); | 538 | ExitOnRootFailure(hr, "BA aborted plan forward compatible bundle."); |
| 543 | 539 | ||
| 544 | if (!fIgnoreBundle) | 540 | if (!fIgnoreBundle) |
| @@ -564,7 +560,7 @@ extern "C" HRESULT PlanPackages( | |||
| 564 | ) | 560 | ) |
| 565 | { | 561 | { |
| 566 | HRESULT hr = S_OK; | 562 | HRESULT hr = S_OK; |
| 567 | 563 | ||
| 568 | hr = PlanPackagesHelper(pPackages->rgPackages, pPackages->cPackages, pUX, pPlan, pLog, pVariables); | 564 | hr = PlanPackagesHelper(pPackages->rgPackages, pPackages->cPackages, pUX, pPlan, pLog, pVariables); |
| 569 | 565 | ||
| 570 | return hr; | 566 | return hr; |
| @@ -896,11 +892,11 @@ static HRESULT PlanPackagesHelper( | |||
| 896 | DWORD iPackage = fReverseOrder ? cPackages - 1 - i : i; | 892 | DWORD iPackage = fReverseOrder ? cPackages - 1 - i : i; |
| 897 | BURN_PACKAGE* pPackage = rgPackages + iPackage; | 893 | BURN_PACKAGE* pPackage = rgPackages + iPackage; |
| 898 | 894 | ||
| 899 | UserExperienceOnPlannedPackage(pUX, pPackage->sczId, pPackage->execute, pPackage->rollback, NULL != pPackage->hCacheEvent, pPackage->fPlannedUncache); | 895 | BACallbackOnPlannedPackage(pUX, pPackage->sczId, pPackage->execute, pPackage->rollback, NULL != pPackage->hCacheEvent, pPackage->fPlannedUncache); |
| 900 | 896 | ||
| 901 | if (pPackage->compatiblePackage.fPlannable) | 897 | if (pPackage->compatiblePackage.fPlannable) |
| 902 | { | 898 | { |
| 903 | UserExperienceOnPlannedCompatiblePackage(pUX, pPackage->sczId, pPackage->compatiblePackage.compatibleEntry.sczId, pPackage->compatiblePackage.fRemove); | 899 | BACallbackOnPlannedCompatiblePackage(pUX, pPackage->sczId, pPackage->compatiblePackage.compatibleEntry.sczId, pPackage->compatiblePackage.fRemove); |
| 904 | } | 900 | } |
| 905 | } | 901 | } |
| 906 | 902 | ||
| @@ -961,7 +957,7 @@ static HRESULT InitializePackage( | |||
| 961 | pPackage->requested = pPackage->defaultRequested; | 957 | pPackage->requested = pPackage->defaultRequested; |
| 962 | fBeginCalled = TRUE; | 958 | fBeginCalled = TRUE; |
| 963 | 959 | ||
| 964 | hr = UserExperienceOnPlanPackageBegin(pUX, pPackage->sczId, pPackage->currentState, pPackage->fCached, installCondition, repairCondition, &pPackage->requested, &pPackage->cacheType); | 960 | hr = BACallbackOnPlanPackageBegin(pUX, pPackage->sczId, pPackage->currentState, pPackage->fCached, installCondition, repairCondition, &pPackage->requested, &pPackage->cacheType); |
| 965 | ExitOnRootFailure(hr, "BA aborted plan package begin."); | 961 | ExitOnRootFailure(hr, "BA aborted plan package begin."); |
| 966 | 962 | ||
| 967 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) | 963 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) |
| @@ -973,7 +969,7 @@ static HRESULT InitializePackage( | |||
| 973 | LExit: | 969 | LExit: |
| 974 | if (fBeginCalled) | 970 | if (fBeginCalled) |
| 975 | { | 971 | { |
| 976 | UserExperienceOnPlanPackageComplete(pUX, pPackage->sczId, hr, pPackage->requested); | 972 | BACallbackOnPlanPackageComplete(pUX, pPackage->sczId, hr, pPackage->requested); |
| 977 | } | 973 | } |
| 978 | 974 | ||
| 979 | return hr; | 975 | return hr; |
| @@ -1375,7 +1371,7 @@ extern "C" HRESULT PlanRelatedBundlesInitialize( | |||
| 1375 | 1371 | ||
| 1376 | pRelatedBundle->planRelationType = pRelatedBundle->defaultPlanRelationType; | 1372 | pRelatedBundle->planRelationType = pRelatedBundle->defaultPlanRelationType; |
| 1377 | 1373 | ||
| 1378 | hr = UserExperienceOnPlanRelatedBundleType(pUserExperience, pRelatedBundle->package.sczId, &pRelatedBundle->planRelationType); | 1374 | hr = BACallbackOnPlanRelatedBundleType(pUserExperience, pRelatedBundle->package.sczId, &pRelatedBundle->planRelationType); |
| 1379 | ExitOnRootFailure(hr, "BA aborted plan related bundle type."); | 1375 | ExitOnRootFailure(hr, "BA aborted plan related bundle type."); |
| 1380 | 1376 | ||
| 1381 | if (BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DOWNGRADE == pRelatedBundle->planRelationType && | 1377 | if (BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DOWNGRADE == pRelatedBundle->planRelationType && |
| @@ -1462,7 +1458,7 @@ extern "C" HRESULT PlanRelatedBundlesBegin( | |||
| 1462 | 1458 | ||
| 1463 | pRelatedBundle->package.defaultRequested = pRelatedBundle->package.requested; | 1459 | pRelatedBundle->package.defaultRequested = pRelatedBundle->package.requested; |
| 1464 | 1460 | ||
| 1465 | hr = UserExperienceOnPlanRelatedBundle(pUserExperience, pRelatedBundle->package.sczId, &pRelatedBundle->package.requested); | 1461 | hr = BACallbackOnPlanRelatedBundle(pUserExperience, pRelatedBundle->package.sczId, &pRelatedBundle->package.requested); |
| 1466 | ExitOnRootFailure(hr, "BA aborted plan related bundle."); | 1462 | ExitOnRootFailure(hr, "BA aborted plan related bundle."); |
| 1467 | 1463 | ||
| 1468 | // If uninstalling and the dependent related bundle may be executed, ignore its provider key to allow for downgrades with ref-counting. | 1464 | // If uninstalling and the dependent related bundle may be executed, ignore its provider key to allow for downgrades with ref-counting. |
| @@ -1662,7 +1658,7 @@ extern "C" HRESULT PlanRelatedBundlesComplete( | |||
| 1662 | 1658 | ||
| 1663 | pRelatedBundle->defaultRequestedRestore = pRelatedBundle->requestedRestore = BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT; | 1659 | pRelatedBundle->defaultRequestedRestore = pRelatedBundle->requestedRestore = BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT; |
| 1664 | 1660 | ||
| 1665 | hr = UserExperienceOnPlanRestoreRelatedBundle(pUserExperience, pRelatedBundle->package.sczId, &pRelatedBundle->requestedRestore); | 1661 | hr = BACallbackOnPlanRestoreRelatedBundle(pUserExperience, pRelatedBundle->package.sczId, &pRelatedBundle->requestedRestore); |
| 1666 | ExitOnRootFailure(hr, "BA aborted plan restore related bundle."); | 1662 | ExitOnRootFailure(hr, "BA aborted plan restore related bundle."); |
| 1667 | 1663 | ||
| 1668 | switch (pRelatedBundle->requestedRestore) | 1664 | switch (pRelatedBundle->requestedRestore) |
| @@ -1966,7 +1962,7 @@ extern "C" HRESULT PlanRollbackBoundaryBegin( | |||
| 1966 | pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START; | 1962 | pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START; |
| 1967 | pExecuteAction->rollbackBoundary.pRollbackBoundary = pRollbackBoundary; | 1963 | pExecuteAction->rollbackBoundary.pRollbackBoundary = pRollbackBoundary; |
| 1968 | 1964 | ||
| 1969 | hr = UserExperienceOnPlanRollbackBoundary(pUX, pRollbackBoundary->sczId, &pRollbackBoundary->fTransaction); | 1965 | hr = BACallbackOnPlanRollbackBoundary(pUX, pRollbackBoundary->sczId, &pRollbackBoundary->fTransaction); |
| 1970 | ExitOnRootFailure(hr, "BA aborted plan rollback boundary."); | 1966 | ExitOnRootFailure(hr, "BA aborted plan rollback boundary."); |
| 1971 | 1967 | ||
| 1972 | // Only use MSI transaction if authored and the BA requested it. | 1968 | // Only use MSI transaction if authored and the BA requested it. |
