diff options
Diffstat (limited to 'src/burn/engine/plan.cpp')
-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. |