diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-04-16 09:40:18 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-04-19 23:12:55 -0500 |
commit | 941c47e5a3f57ce9626b447a95740b1444e69343 (patch) | |
tree | 6225b78f5fc7c8f88a2abf187a6a76d45b36ec26 /src/engine/pseudobundle.cpp | |
parent | d32f770ca05748df9e356444c7e617d5eeedb60c (diff) | |
download | wix-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.cpp | 8 |
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; |