diff options
Diffstat (limited to 'src/engine/relatedbundle.cpp')
| -rw-r--r-- | src/engine/relatedbundle.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/engine/relatedbundle.cpp b/src/engine/relatedbundle.cpp index a4948a88..6953c678 100644 --- a/src/engine/relatedbundle.cpp +++ b/src/engine/relatedbundle.cpp | |||
| @@ -391,14 +391,14 @@ static HRESULT LoadRelatedBundleFromKey( | |||
| 391 | __in HKEY hkBundleId, | 391 | __in HKEY hkBundleId, |
| 392 | __in BOOL fPerMachine, | 392 | __in BOOL fPerMachine, |
| 393 | __in BOOTSTRAPPER_RELATION_TYPE relationType, | 393 | __in BOOTSTRAPPER_RELATION_TYPE relationType, |
| 394 | __inout BURN_RELATED_BUNDLE *pRelatedBundle | 394 | __inout BURN_RELATED_BUNDLE* pRelatedBundle |
| 395 | ) | 395 | ) |
| 396 | { | 396 | { |
| 397 | HRESULT hr = S_OK; | 397 | HRESULT hr = S_OK; |
| 398 | DWORD64 qwEngineVersion = 0; | 398 | DWORD64 qwEngineVersion = 0; |
| 399 | LPWSTR sczBundleVersion = NULL; | 399 | LPWSTR sczBundleVersion = NULL; |
| 400 | LPWSTR sczCachePath = NULL; | 400 | LPWSTR sczCachePath = NULL; |
| 401 | BURN_CACHE_STATE cacheState = BURN_CACHE_STATE_NONE; | 401 | BOOL fCached = FALSE; |
| 402 | DWORD64 qwFileSize = 0; | 402 | DWORD64 qwFileSize = 0; |
| 403 | BURN_DEPENDENCY_PROVIDER dependencyProvider = { }; | 403 | BURN_DEPENDENCY_PROVIDER dependencyProvider = { }; |
| 404 | 404 | ||
| @@ -423,19 +423,16 @@ static HRESULT LoadRelatedBundleFromKey( | |||
| 423 | hr = RegReadString(hkBundleId, BURN_REGISTRATION_REGISTRY_BUNDLE_CACHE_PATH, &sczCachePath); | 423 | hr = RegReadString(hkBundleId, BURN_REGISTRATION_REGISTRY_BUNDLE_CACHE_PATH, &sczCachePath); |
| 424 | ExitOnFailure(hr, "Failed to read cache path from registry for bundle: %ls", wzRelatedBundleId); | 424 | ExitOnFailure(hr, "Failed to read cache path from registry for bundle: %ls", wzRelatedBundleId); |
| 425 | 425 | ||
| 426 | hr = FileSize(sczCachePath, reinterpret_cast<LONGLONG *>(&qwFileSize)); | 426 | if (FileExistsEx(sczCachePath, NULL)) |
| 427 | if (SUCCEEDED(hr)) | ||
| 428 | { | 427 | { |
| 429 | cacheState = BURN_CACHE_STATE_COMPLETE; | 428 | fCached = TRUE; |
| 430 | } | 429 | } |
| 431 | else if (E_FILENOTFOUND != hr) | 430 | else |
| 432 | { | 431 | { |
| 433 | cacheState = BURN_CACHE_STATE_PARTIAL; | 432 | LogId(REPORT_STANDARD, MSG_DETECT_RELATED_BUNDLE_NOT_CACHED, wzRelatedBundleId, sczCachePath); |
| 434 | LogId(REPORT_STANDARD, MSG_DETECT_RELATED_BUNDLE_NOT_FULLY_CACHED, wzRelatedBundleId, sczCachePath, hr); | ||
| 435 | } | 433 | } |
| 436 | hr = S_OK; | ||
| 437 | 434 | ||
| 438 | pRelatedBundle->fPlannable = BURN_CACHE_STATE_COMPLETE == cacheState; | 435 | pRelatedBundle->fPlannable = fCached; |
| 439 | 436 | ||
| 440 | hr = RegReadString(hkBundleId, BURN_REGISTRATION_REGISTRY_BUNDLE_PROVIDER_KEY, &dependencyProvider.sczKey); | 437 | hr = RegReadString(hkBundleId, BURN_REGISTRATION_REGISTRY_BUNDLE_PROVIDER_KEY, &dependencyProvider.sczKey); |
| 441 | if (E_FILENOTFOUND != hr) | 438 | if (E_FILENOTFOUND != hr) |
| @@ -464,7 +461,7 @@ static HRESULT LoadRelatedBundleFromKey( | |||
| 464 | pRelatedBundle->relationType = relationType; | 461 | pRelatedBundle->relationType = relationType; |
| 465 | 462 | ||
| 466 | hr = PseudoBundleInitialize(qwEngineVersion, &pRelatedBundle->package, fPerMachine, wzRelatedBundleId, pRelatedBundle->relationType, | 463 | hr = PseudoBundleInitialize(qwEngineVersion, &pRelatedBundle->package, fPerMachine, wzRelatedBundleId, pRelatedBundle->relationType, |
| 467 | BOOTSTRAPPER_PACKAGE_STATE_PRESENT, cacheState, sczCachePath, sczCachePath, NULL, qwFileSize, FALSE, | 464 | BOOTSTRAPPER_PACKAGE_STATE_PRESENT, fCached, sczCachePath, sczCachePath, NULL, qwFileSize, FALSE, |
| 468 | L"-quiet", L"-repair -quiet", L"-uninstall -quiet", | 465 | L"-quiet", L"-repair -quiet", L"-uninstall -quiet", |
| 469 | (dependencyProvider.sczKey && *dependencyProvider.sczKey) ? &dependencyProvider : NULL, | 466 | (dependencyProvider.sczKey && *dependencyProvider.sczKey) ? &dependencyProvider : NULL, |
| 470 | NULL, 0); | 467 | NULL, 0); |
