aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/apply.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/apply.cpp')
-rw-r--r--src/burn/engine/apply.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp
index 58d41b28..f0b78e81 100644
--- a/src/burn/engine/apply.cpp
+++ b/src/burn/engine/apply.cpp
@@ -549,12 +549,19 @@ extern "C" HRESULT ApplyCache(
549 case BURN_CACHE_ACTION_TYPE_PACKAGE: 549 case BURN_CACHE_ACTION_TYPE_PACKAGE:
550 pPackage = pCacheAction->package.pPackage; 550 pPackage = pCacheAction->package.pPackage;
551 551
552 if (!pPackage->fPerMachine && !cacheContext.wzLayoutDirectory) 552 if (!cacheContext.wzLayoutDirectory)
553 { 553 {
554 hr = CacheGetCompletedPath(FALSE, pPackage->sczCacheId, &pPackage->sczCacheFolder); 554 if (!pPackage->fPerMachine || INVALID_HANDLE_VALUE == cacheContext.hPipe)
555 ExitOnFailure(hr, "Failed to get cached path for package with cache id: %ls", pPackage->sczCacheId); 555 {
556 hr = CachePreparePackage(pPackage);
556 557
557 cacheContext.hPipe = INVALID_HANDLE_VALUE; 558 cacheContext.hPipe = INVALID_HANDLE_VALUE;
559 }
560 else
561 {
562 hr = ElevationCachePreparePackage(hPipe, pPackage);
563 }
564 LogExitOnFailure(hr, MSG_CACHE_PREPARE_PACKAGE_FAILED, "Cache prepare package failed: %ls", pPackage->sczId, NULL, NULL);
558 } 565 }
559 566
560 hr = ApplyCachePackage(&cacheContext, pPackage); 567 hr = ApplyCachePackage(&cacheContext, pPackage);