aboutsummaryrefslogtreecommitdiff
path: root/src/engine/pseudobundle.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-04-16 09:40:18 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-04-19 23:12:55 -0500
commit941c47e5a3f57ce9626b447a95740b1444e69343 (patch)
tree6225b78f5fc7c8f88a2abf187a6a76d45b36ec26 /src/engine/pseudobundle.cpp
parentd32f770ca05748df9e356444c7e617d5eeedb60c (diff)
downloadwix-941c47e5a3f57ce9626b447a95740b1444e69343.tar.gz
wix-941c47e5a3f57ce9626b447a95740b1444e69343.tar.bz2
wix-941c47e5a3f57ce9626b447a95740b1444e69343.zip
Detect a package as cached if any of its payloads exist.
Detect is supposed to be fast, so it can't fully verify every payload for every package. The engine was wasting its time by trying to verify file sizes without the hash. Even worse, it was making decisions during planning based on that insufficient verification. Contributes to #3640
Diffstat (limited to 'src/engine/pseudobundle.cpp')
-rw-r--r--src/engine/pseudobundle.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/engine/pseudobundle.cpp b/src/engine/pseudobundle.cpp
index 63300065..73fbb019 100644
--- a/src/engine/pseudobundle.cpp
+++ b/src/engine/pseudobundle.cpp
@@ -10,7 +10,7 @@ extern "C" HRESULT PseudoBundleInitialize(
10 __in_z LPCWSTR wzId, 10 __in_z LPCWSTR wzId,
11 __in BOOTSTRAPPER_RELATION_TYPE relationType, 11 __in BOOTSTRAPPER_RELATION_TYPE relationType,
12 __in BOOTSTRAPPER_PACKAGE_STATE state, 12 __in BOOTSTRAPPER_PACKAGE_STATE state,
13 __in BURN_CACHE_STATE cacheState, 13 __in BOOL fCached,
14 __in_z LPCWSTR wzFilePath, 14 __in_z LPCWSTR wzFilePath,
15 __in_z LPCWSTR wzLocalSource, 15 __in_z LPCWSTR wzLocalSource,
16 __in_z_opt LPCWSTR wzDownloadSource, 16 __in_z_opt LPCWSTR wzDownloadSource,
@@ -67,14 +67,14 @@ extern "C" HRESULT PseudoBundleInitialize(
67 memcpy_s(pPackage->rgPayloads->pPayload->pbHash, pPackage->rgPayloads->pPayload->cbHash, pbHash, cbHash); 67 memcpy_s(pPackage->rgPayloads->pPayload->pbHash, pPackage->rgPayloads->pPayload->cbHash, pbHash, cbHash);
68 } 68 }
69 69
70 pPackage->rgPayloads->fCached = BURN_CACHE_STATE_NONE < cacheState; 70 pPackage->rgPayloads->fCached = fCached;
71 71
72 pPackage->Exe.fPseudoBundle = TRUE; 72 pPackage->Exe.fPseudoBundle = TRUE;
73 73
74 pPackage->type = BURN_PACKAGE_TYPE_EXE; 74 pPackage->type = BURN_PACKAGE_TYPE_EXE;
75 pPackage->fPerMachine = fPerMachine; 75 pPackage->fPerMachine = fPerMachine;
76 pPackage->currentState = state; 76 pPackage->currentState = state;
77 pPackage->cache = cacheState; 77 pPackage->fCached = fCached;
78 pPackage->qwInstallSize = qwSize; 78 pPackage->qwInstallSize = qwSize;
79 pPackage->qwSize = qwSize; 79 pPackage->qwSize = qwSize;
80 pPackage->fVital = fVital; 80 pPackage->fVital = fVital;
@@ -216,7 +216,7 @@ extern "C" HRESULT PseudoBundleInitializePassthrough(
216 pPassthroughPackage->fPerMachine = FALSE; // passthrough bundles are always launched per-user. 216 pPassthroughPackage->fPerMachine = FALSE; // passthrough bundles are always launched per-user.
217 pPassthroughPackage->type = pPackage->type; 217 pPassthroughPackage->type = pPackage->type;
218 pPassthroughPackage->currentState = pPackage->currentState; 218 pPassthroughPackage->currentState = pPackage->currentState;
219 pPassthroughPackage->cache = pPackage->cache; 219 pPassthroughPackage->fCached = pPackage->fCached;
220 pPassthroughPackage->qwInstallSize = pPackage->qwInstallSize; 220 pPassthroughPackage->qwInstallSize = pPackage->qwInstallSize;
221 pPassthroughPackage->qwSize = pPackage->qwSize; 221 pPassthroughPackage->qwSize = pPackage->qwSize;
222 pPassthroughPackage->fVital = pPackage->fVital; 222 pPassthroughPackage->fVital = pPackage->fVital;