diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-02-18 10:45:20 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-02-22 20:25:06 -0600 |
commit | 837f2e309c8ef0476668c342f612dfe1bb26cb87 (patch) | |
tree | f8a5fbef5e17e88b27a2a4cb6dc7a52f7cba4a5e | |
parent | b29af5d005c2cc802aa60a123d435042038ba8ef (diff) | |
download | wix-837f2e309c8ef0476668c342f612dfe1bb26cb87.tar.gz wix-837f2e309c8ef0476668c342f612dfe1bb26cb87.tar.bz2 wix-837f2e309c8ef0476668c342f612dfe1bb26cb87.zip |
Only the requested state and Cache=always should affect requestedCache.
-rw-r--r-- | src/engine/exeengine.cpp | 24 | ||||
-rw-r--r-- | src/engine/exeengine.h | 3 | ||||
-rw-r--r-- | src/engine/msiengine.cpp | 14 | ||||
-rw-r--r-- | src/engine/msiengine.h | 3 | ||||
-rw-r--r-- | src/engine/mspengine.cpp | 14 | ||||
-rw-r--r-- | src/engine/mspengine.h | 3 | ||||
-rw-r--r-- | src/engine/msuengine.cpp | 13 | ||||
-rw-r--r-- | src/engine/msuengine.h | 3 | ||||
-rw-r--r-- | src/engine/package.cpp | 1 | ||||
-rw-r--r-- | src/engine/package.h | 1 | ||||
-rw-r--r-- | src/engine/plan.cpp | 39 |
11 files changed, 28 insertions, 90 deletions
diff --git a/src/engine/exeengine.cpp b/src/engine/exeengine.cpp index f734edca..cee755e3 100644 --- a/src/engine/exeengine.cpp +++ b/src/engine/exeengine.cpp | |||
@@ -157,25 +157,12 @@ LExit: | |||
157 | // PlanCalculate - calculates the execute and rollback state for the requested package state. | 157 | // PlanCalculate - calculates the execute and rollback state for the requested package state. |
158 | // | 158 | // |
159 | extern "C" HRESULT ExeEnginePlanCalculatePackage( | 159 | extern "C" HRESULT ExeEnginePlanCalculatePackage( |
160 | __in BURN_PACKAGE* pPackage, | 160 | __in BURN_PACKAGE* pPackage |
161 | __out_opt BOOL* pfBARequestedCache | ||
162 | ) | 161 | ) |
163 | { | 162 | { |
164 | HRESULT hr = S_OK; | 163 | HRESULT hr = S_OK; |
165 | //BOOL fCondition = FALSE; | ||
166 | //BOOTSTRAPPER_PACKAGE_STATE expected = BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN; | ||
167 | BOOTSTRAPPER_ACTION_STATE execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 164 | BOOTSTRAPPER_ACTION_STATE execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
168 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 165 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
169 | BOOL fBARequestedCache = FALSE; | ||
170 | |||
171 | //// evaluate rollback install condition | ||
172 | //if (pPackage->sczRollbackInstallCondition) | ||
173 | //{ | ||
174 | // hr = ConditionEvaluate(pVariables, pPackage->sczRollbackInstallCondition, &fCondition); | ||
175 | // ExitOnFailure(hr, "Failed to evaluate rollback install condition."); | ||
176 | |||
177 | // expected = fCondition ? BOOTSTRAPPER_PACKAGE_STATE_PRESENT : BOOTSTRAPPER_PACKAGE_STATE_ABSENT; | ||
178 | //} | ||
179 | 166 | ||
180 | // execute action | 167 | // execute action |
181 | switch (pPackage->currentState) | 168 | switch (pPackage->currentState) |
@@ -209,10 +196,6 @@ extern "C" HRESULT ExeEnginePlanCalculatePackage( | |||
209 | case BOOTSTRAPPER_REQUEST_STATE_REPAIR: | 196 | case BOOTSTRAPPER_REQUEST_STATE_REPAIR: |
210 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; | 197 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; |
211 | break; | 198 | break; |
212 | case BOOTSTRAPPER_REQUEST_STATE_CACHE: | ||
213 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | ||
214 | fBARequestedCache = TRUE; | ||
215 | break; | ||
216 | default: | 199 | default: |
217 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 200 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
218 | break; | 201 | break; |
@@ -273,11 +256,6 @@ extern "C" HRESULT ExeEnginePlanCalculatePackage( | |||
273 | pPackage->execute = execute; | 256 | pPackage->execute = execute; |
274 | pPackage->rollback = rollback; | 257 | pPackage->rollback = rollback; |
275 | 258 | ||
276 | if (pfBARequestedCache) | ||
277 | { | ||
278 | *pfBARequestedCache = fBARequestedCache; | ||
279 | } | ||
280 | |||
281 | LExit: | 259 | LExit: |
282 | return hr; | 260 | return hr; |
283 | } | 261 | } |
diff --git a/src/engine/exeengine.h b/src/engine/exeengine.h index 1eac4232..88a884eb 100644 --- a/src/engine/exeengine.h +++ b/src/engine/exeengine.h | |||
@@ -21,8 +21,7 @@ HRESULT ExeEngineDetectPackage( | |||
21 | __in BURN_VARIABLES* pVariables | 21 | __in BURN_VARIABLES* pVariables |
22 | ); | 22 | ); |
23 | HRESULT ExeEnginePlanCalculatePackage( | 23 | HRESULT ExeEnginePlanCalculatePackage( |
24 | __in BURN_PACKAGE* pPackage, | 24 | __in BURN_PACKAGE* pPackage |
25 | __out_opt BOOL* pfBARequestedCache | ||
26 | ); | 25 | ); |
27 | HRESULT ExeEnginePlanAddPackage( | 26 | HRESULT ExeEnginePlanAddPackage( |
28 | __in_opt DWORD *pdwInsertSequence, | 27 | __in_opt DWORD *pdwInsertSequence, |
diff --git a/src/engine/msiengine.cpp b/src/engine/msiengine.cpp index 252a17b7..801bf9a8 100644 --- a/src/engine/msiengine.cpp +++ b/src/engine/msiengine.cpp | |||
@@ -714,8 +714,7 @@ LExit: | |||
714 | // | 714 | // |
715 | extern "C" HRESULT MsiEnginePlanCalculatePackage( | 715 | extern "C" HRESULT MsiEnginePlanCalculatePackage( |
716 | __in BURN_PACKAGE* pPackage, | 716 | __in BURN_PACKAGE* pPackage, |
717 | __in BOOL fInsideMsiTransaction, | 717 | __in BOOL fInsideMsiTransaction |
718 | __out_opt BOOL* pfBARequestedCache | ||
719 | ) | 718 | ) |
720 | { | 719 | { |
721 | Trace(REPORT_STANDARD, "Planning MSI package 0x%p", pPackage); | 720 | Trace(REPORT_STANDARD, "Planning MSI package 0x%p", pPackage); |
@@ -728,7 +727,6 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( | |||
728 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 727 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
729 | BOOL fFeatureActionDelta = FALSE; | 728 | BOOL fFeatureActionDelta = FALSE; |
730 | BOOL fRollbackFeatureActionDelta = FALSE; | 729 | BOOL fRollbackFeatureActionDelta = FALSE; |
731 | BOOL fBARequestedCache = FALSE; | ||
732 | 730 | ||
733 | if (pPackage->Msi.cFeatures) | 731 | if (pPackage->Msi.cFeatures) |
734 | { | 732 | { |
@@ -813,11 +811,6 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( | |||
813 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; | 811 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; |
814 | break; | 812 | break; |
815 | 813 | ||
816 | case BOOTSTRAPPER_REQUEST_STATE_CACHE: | ||
817 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | ||
818 | fBARequestedCache = TRUE; | ||
819 | break; | ||
820 | |||
821 | default: | 814 | default: |
822 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 815 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
823 | break; | 816 | break; |
@@ -880,11 +873,6 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( | |||
880 | pPackage->execute = execute; | 873 | pPackage->execute = execute; |
881 | pPackage->rollback = rollback; | 874 | pPackage->rollback = rollback; |
882 | 875 | ||
883 | if (pfBARequestedCache) | ||
884 | { | ||
885 | *pfBARequestedCache = fBARequestedCache; | ||
886 | } | ||
887 | |||
888 | LExit: | 876 | LExit: |
889 | return hr; | 877 | return hr; |
890 | } | 878 | } |
diff --git a/src/engine/msiengine.h b/src/engine/msiengine.h index b06866cd..fe742a16 100644 --- a/src/engine/msiengine.h +++ b/src/engine/msiengine.h | |||
@@ -38,8 +38,7 @@ HRESULT MsiEnginePlanInitializePackage( | |||
38 | ); | 38 | ); |
39 | HRESULT MsiEnginePlanCalculatePackage( | 39 | HRESULT MsiEnginePlanCalculatePackage( |
40 | __in BURN_PACKAGE* pPackage, | 40 | __in BURN_PACKAGE* pPackage, |
41 | __in BOOL fInsideMsiTransaction, | 41 | __in BOOL fInsideMsiTransaction |
42 | __out_opt BOOL* pfBARequestedCache | ||
43 | ); | 42 | ); |
44 | HRESULT MsiEnginePlanAddPackage( | 43 | HRESULT MsiEnginePlanAddPackage( |
45 | __in BOOTSTRAPPER_DISPLAY display, | 44 | __in BOOTSTRAPPER_DISPLAY display, |
diff --git a/src/engine/mspengine.cpp b/src/engine/mspengine.cpp index f742ecef..81e85e4c 100644 --- a/src/engine/mspengine.cpp +++ b/src/engine/mspengine.cpp | |||
@@ -305,12 +305,10 @@ LExit: | |||
305 | // | 305 | // |
306 | extern "C" HRESULT MspEnginePlanCalculatePackage( | 306 | extern "C" HRESULT MspEnginePlanCalculatePackage( |
307 | __in BURN_PACKAGE* pPackage, | 307 | __in BURN_PACKAGE* pPackage, |
308 | __in BOOL fInsideMsiTransaction, | 308 | __in BOOL fInsideMsiTransaction |
309 | __out BOOL* pfBARequestedCache | ||
310 | ) | 309 | ) |
311 | { | 310 | { |
312 | HRESULT hr = S_OK; | 311 | HRESULT hr = S_OK; |
313 | BOOL fBARequestedCache = FALSE; | ||
314 | 312 | ||
315 | for (DWORD i = 0; i < pPackage->Msp.cTargetProductCodes; ++i) | 313 | for (DWORD i = 0; i < pPackage->Msp.cTargetProductCodes; ++i) |
316 | { | 314 | { |
@@ -352,11 +350,6 @@ extern "C" HRESULT MspEnginePlanCalculatePackage( | |||
352 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; | 350 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; |
353 | break; | 351 | break; |
354 | 352 | ||
355 | case BOOTSTRAPPER_REQUEST_STATE_CACHE: | ||
356 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | ||
357 | fBARequestedCache = TRUE; | ||
358 | break; | ||
359 | |||
360 | default: | 353 | default: |
361 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 354 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
362 | break; | 355 | break; |
@@ -419,11 +412,6 @@ extern "C" HRESULT MspEnginePlanCalculatePackage( | |||
419 | } | 412 | } |
420 | } | 413 | } |
421 | 414 | ||
422 | if (pfBARequestedCache) | ||
423 | { | ||
424 | *pfBARequestedCache = fBARequestedCache; | ||
425 | } | ||
426 | |||
427 | return hr; | 415 | return hr; |
428 | } | 416 | } |
429 | 417 | ||
diff --git a/src/engine/mspengine.h b/src/engine/mspengine.h index 7ee01e8e..28682169 100644 --- a/src/engine/mspengine.h +++ b/src/engine/mspengine.h | |||
@@ -38,8 +38,7 @@ HRESULT MspEnginePlanInitializePackage( | |||
38 | ); | 38 | ); |
39 | HRESULT MspEnginePlanCalculatePackage( | 39 | HRESULT MspEnginePlanCalculatePackage( |
40 | __in BURN_PACKAGE* pPackage, | 40 | __in BURN_PACKAGE* pPackage, |
41 | __in BOOL fInsideMsiTransaction, | 41 | __in BOOL fInsideMsiTransaction |
42 | __out_opt BOOL* pfBARequestedCache | ||
43 | ); | 42 | ); |
44 | HRESULT MspEnginePlanAddPackage( | 43 | HRESULT MspEnginePlanAddPackage( |
45 | __in BOOTSTRAPPER_DISPLAY display, | 44 | __in BOOTSTRAPPER_DISPLAY display, |
diff --git a/src/engine/msuengine.cpp b/src/engine/msuengine.cpp index 499e1da6..91bbf361 100644 --- a/src/engine/msuengine.cpp +++ b/src/engine/msuengine.cpp | |||
@@ -82,14 +82,12 @@ LExit: | |||
82 | // PlanCalculate - calculates the execute and rollback state for the requested package state. | 82 | // PlanCalculate - calculates the execute and rollback state for the requested package state. |
83 | // | 83 | // |
84 | extern "C" HRESULT MsuEnginePlanCalculatePackage( | 84 | extern "C" HRESULT MsuEnginePlanCalculatePackage( |
85 | __in BURN_PACKAGE* pPackage, | 85 | __in BURN_PACKAGE* pPackage |
86 | __out_opt BOOL* pfBARequestedCache | ||
87 | ) | 86 | ) |
88 | { | 87 | { |
89 | HRESULT hr = S_OK; | 88 | HRESULT hr = S_OK; |
90 | BOOTSTRAPPER_ACTION_STATE execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 89 | BOOTSTRAPPER_ACTION_STATE execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
91 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 90 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
92 | BOOL fBARequestedCache = FALSE; | ||
93 | BOOL fAllowUninstall = FALSE; | 91 | BOOL fAllowUninstall = FALSE; |
94 | 92 | ||
95 | // We can only uninstall MSU packages if they have a KB and we are on Win7 or newer. | 93 | // We can only uninstall MSU packages if they have a KB and we are on Win7 or newer. |
@@ -129,10 +127,6 @@ extern "C" HRESULT MsuEnginePlanCalculatePackage( | |||
129 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; | 127 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; |
130 | break; | 128 | break; |
131 | 129 | ||
132 | case BOOTSTRAPPER_REQUEST_STATE_CACHE: | ||
133 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | ||
134 | fBARequestedCache = TRUE; | ||
135 | |||
136 | default: | 130 | default: |
137 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 131 | execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
138 | break; | 132 | break; |
@@ -187,11 +181,6 @@ extern "C" HRESULT MsuEnginePlanCalculatePackage( | |||
187 | pPackage->execute = execute; | 181 | pPackage->execute = execute; |
188 | pPackage->rollback = rollback; | 182 | pPackage->rollback = rollback; |
189 | 183 | ||
190 | if (pfBARequestedCache) | ||
191 | { | ||
192 | *pfBARequestedCache = fBARequestedCache; | ||
193 | } | ||
194 | |||
195 | LExit: | 184 | LExit: |
196 | return hr; | 185 | return hr; |
197 | } | 186 | } |
diff --git a/src/engine/msuengine.h b/src/engine/msuengine.h index 7f57a084..cd966b0a 100644 --- a/src/engine/msuengine.h +++ b/src/engine/msuengine.h | |||
@@ -21,8 +21,7 @@ HRESULT MsuEngineDetectPackage( | |||
21 | __in BURN_VARIABLES* pVariables | 21 | __in BURN_VARIABLES* pVariables |
22 | ); | 22 | ); |
23 | HRESULT MsuEnginePlanCalculatePackage( | 23 | HRESULT MsuEnginePlanCalculatePackage( |
24 | __in BURN_PACKAGE* pPackage, | 24 | __in BURN_PACKAGE* pPackage |
25 | __out_opt BOOL* pfBARequestedCache | ||
26 | ); | 25 | ); |
27 | HRESULT MsuEnginePlanAddPackage( | 26 | HRESULT MsuEnginePlanAddPackage( |
28 | __in BURN_PACKAGE* pPackage, | 27 | __in BURN_PACKAGE* pPackage, |
diff --git a/src/engine/package.cpp b/src/engine/package.cpp index b27b1e07..bb61cdcd 100644 --- a/src/engine/package.cpp +++ b/src/engine/package.cpp | |||
@@ -317,7 +317,6 @@ extern "C" void PackageUninitialize( | |||
317 | ReleaseStr(pPackage->sczLogPathVariable); | 317 | ReleaseStr(pPackage->sczLogPathVariable); |
318 | ReleaseStr(pPackage->sczRollbackLogPathVariable); | 318 | ReleaseStr(pPackage->sczRollbackLogPathVariable); |
319 | ReleaseStr(pPackage->sczInstallCondition); | 319 | ReleaseStr(pPackage->sczInstallCondition); |
320 | ReleaseStr(pPackage->sczRollbackInstallCondition); | ||
321 | ReleaseStr(pPackage->sczCacheId); | 320 | ReleaseStr(pPackage->sczCacheId); |
322 | 321 | ||
323 | if (pPackage->rgDependencyProviders) | 322 | if (pPackage->rgDependencyProviders) |
diff --git a/src/engine/package.h b/src/engine/package.h index a728fcc6..5feb3f46 100644 --- a/src/engine/package.h +++ b/src/engine/package.h | |||
@@ -201,7 +201,6 @@ typedef struct _BURN_PACKAGE | |||
201 | LPWSTR sczRollbackLogPathVariable; // name of the variable that will be set to the rollback path. | 201 | LPWSTR sczRollbackLogPathVariable; // name of the variable that will be set to the rollback path. |
202 | 202 | ||
203 | LPWSTR sczInstallCondition; | 203 | LPWSTR sczInstallCondition; |
204 | LPWSTR sczRollbackInstallCondition; | ||
205 | BOOL fPerMachine; | 204 | BOOL fPerMachine; |
206 | BOOL fUninstallable; | 205 | BOOL fUninstallable; |
207 | BOOL fVital; | 206 | BOOL fVital; |
diff --git a/src/engine/plan.cpp b/src/engine/plan.cpp index 29adfb42..d99fdde2 100644 --- a/src/engine/plan.cpp +++ b/src/engine/plan.cpp | |||
@@ -166,11 +166,11 @@ static HRESULT PlanDependencyActions( | |||
166 | ); | 166 | ); |
167 | static HRESULT CalculateExecuteActions( | 167 | static HRESULT CalculateExecuteActions( |
168 | __in BURN_PACKAGE* pPackage, | 168 | __in BURN_PACKAGE* pPackage, |
169 | __in_opt BURN_ROLLBACK_BOUNDARY* pActiveRollbackBoundary, | 169 | __in_opt BURN_ROLLBACK_BOUNDARY* pActiveRollbackBoundary |
170 | __out_opt BOOL* pfBARequestedCache | ||
171 | ); | 170 | ); |
172 | static BOOL NeedsCache( | 171 | static BOOL NeedsCache( |
173 | __in BURN_PACKAGE* pPackage | 172 | __in BURN_PACKAGE* pPackage, |
173 | __in BOOL fExecute | ||
174 | ); | 174 | ); |
175 | static HRESULT CreateContainerProgress( | 175 | static HRESULT CreateContainerProgress( |
176 | __in BURN_PLAN* pPlan, | 176 | __in BURN_PLAN* pPlan, |
@@ -1081,24 +1081,24 @@ extern "C" HRESULT PlanExecutePackage( | |||
1081 | ) | 1081 | ) |
1082 | { | 1082 | { |
1083 | HRESULT hr = S_OK; | 1083 | HRESULT hr = S_OK; |
1084 | BOOL fBARequestedCache = FALSE; | 1084 | BOOL fRequestedCache = BOOTSTRAPPER_REQUEST_STATE_CACHE == pPackage->requested || |
1085 | BOOTSTRAPPER_REQUEST_STATE_ABSENT < pPackage->requested && BURN_CACHE_TYPE_ALWAYS == pPackage->cacheType; | ||
1085 | 1086 | ||
1086 | hr = CalculateExecuteActions(pPackage, pPlan->pActiveRollbackBoundary, &fBARequestedCache); | 1087 | hr = CalculateExecuteActions(pPackage, pPlan->pActiveRollbackBoundary); |
1087 | ExitOnFailure(hr, "Failed to calculate plan actions for package: %ls", pPackage->sczId); | 1088 | ExitOnFailure(hr, "Failed to calculate plan actions for package: %ls", pPackage->sczId); |
1088 | 1089 | ||
1089 | // Calculate package states based on reference count and plan certain dependency actions prior to planning the package execute action. | 1090 | // Calculate package states based on reference count and plan certain dependency actions prior to planning the package execute action. |
1090 | hr = DependencyPlanPackageBegin(fPerMachine, pPackage, pPlan); | 1091 | hr = DependencyPlanPackageBegin(fPerMachine, pPackage, pPlan); |
1091 | ExitOnFailure(hr, "Failed to begin plan dependency actions for package: %ls", pPackage->sczId); | 1092 | ExitOnFailure(hr, "Failed to begin plan dependency actions for package: %ls", pPackage->sczId); |
1092 | 1093 | ||
1093 | if (fBARequestedCache || NeedsCache(pPackage)) | 1094 | if (fRequestedCache || NeedsCache(pPackage, TRUE)) |
1094 | { | 1095 | { |
1095 | hr = AddCachePackage(pPlan, pPackage, phSyncpointEvent); | 1096 | hr = AddCachePackage(pPlan, pPackage, phSyncpointEvent); |
1096 | ExitOnFailure(hr, "Failed to plan cache package."); | 1097 | ExitOnFailure(hr, "Failed to plan cache package."); |
1097 | } | 1098 | } |
1098 | else if (BURN_CACHE_STATE_COMPLETE != pPackage->cache && // if the package is not in the cache, disable any rollback that would require the package from the cache. | 1099 | else if (BURN_CACHE_STATE_COMPLETE != pPackage->cache && NeedsCache(pPackage, FALSE)) |
1099 | (BOOTSTRAPPER_ACTION_STATE_UNINSTALL < pPackage->rollback || (BURN_PACKAGE_TYPE_EXE == pPackage->type && BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->rollback)) | ||
1100 | ) | ||
1101 | { | 1100 | { |
1101 | // If the package is not in the cache, disable any rollback that would require the package from the cache. | ||
1102 | LogId(REPORT_STANDARD, MSG_PLAN_DISABLING_ROLLBACK_NO_CACHE, pPackage->sczId, LoggingCacheStateToString(pPackage->cache), LoggingActionStateToString(pPackage->rollback)); | 1102 | LogId(REPORT_STANDARD, MSG_PLAN_DISABLING_ROLLBACK_NO_CACHE, pPackage->sczId, LoggingCacheStateToString(pPackage->cache), LoggingActionStateToString(pPackage->rollback)); |
1103 | pPackage->rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 1103 | pPackage->rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
1104 | } | 1104 | } |
@@ -1431,7 +1431,7 @@ extern "C" HRESULT PlanRelatedBundlesComplete( | |||
1431 | 1431 | ||
1432 | if (BOOTSTRAPPER_REQUEST_STATE_NONE != pRelatedBundle->package.requested) | 1432 | if (BOOTSTRAPPER_REQUEST_STATE_NONE != pRelatedBundle->package.requested) |
1433 | { | 1433 | { |
1434 | hr = ExeEnginePlanCalculatePackage(&pRelatedBundle->package, NULL); | 1434 | hr = ExeEnginePlanCalculatePackage(&pRelatedBundle->package); |
1435 | ExitOnFailure(hr, "Failed to calcuate plan for related bundle: %ls", pRelatedBundle->package.sczId); | 1435 | ExitOnFailure(hr, "Failed to calcuate plan for related bundle: %ls", pRelatedBundle->package.sczId); |
1436 | 1436 | ||
1437 | // Calculate package states based on reference count for addon and patch related bundles. | 1437 | // Calculate package states based on reference count for addon and patch related bundles. |
@@ -2819,8 +2819,7 @@ LExit: | |||
2819 | 2819 | ||
2820 | static HRESULT CalculateExecuteActions( | 2820 | static HRESULT CalculateExecuteActions( |
2821 | __in BURN_PACKAGE* pPackage, | 2821 | __in BURN_PACKAGE* pPackage, |
2822 | __in_opt BURN_ROLLBACK_BOUNDARY* pActiveRollbackBoundary, | 2822 | __in_opt BURN_ROLLBACK_BOUNDARY* pActiveRollbackBoundary |
2823 | __out_opt BOOL* pfBARequestedCache | ||
2824 | ) | 2823 | ) |
2825 | { | 2824 | { |
2826 | HRESULT hr = S_OK; | 2825 | HRESULT hr = S_OK; |
@@ -2830,19 +2829,19 @@ static HRESULT CalculateExecuteActions( | |||
2830 | switch (pPackage->type) | 2829 | switch (pPackage->type) |
2831 | { | 2830 | { |
2832 | case BURN_PACKAGE_TYPE_EXE: | 2831 | case BURN_PACKAGE_TYPE_EXE: |
2833 | hr = ExeEnginePlanCalculatePackage(pPackage, pfBARequestedCache); | 2832 | hr = ExeEnginePlanCalculatePackage(pPackage); |
2834 | break; | 2833 | break; |
2835 | 2834 | ||
2836 | case BURN_PACKAGE_TYPE_MSI: | 2835 | case BURN_PACKAGE_TYPE_MSI: |
2837 | hr = MsiEnginePlanCalculatePackage(pPackage, fInsideMsiTransaction, pfBARequestedCache); | 2836 | hr = MsiEnginePlanCalculatePackage(pPackage, fInsideMsiTransaction); |
2838 | break; | 2837 | break; |
2839 | 2838 | ||
2840 | case BURN_PACKAGE_TYPE_MSP: | 2839 | case BURN_PACKAGE_TYPE_MSP: |
2841 | hr = MspEnginePlanCalculatePackage(pPackage, fInsideMsiTransaction, pfBARequestedCache); | 2840 | hr = MspEnginePlanCalculatePackage(pPackage, fInsideMsiTransaction); |
2842 | break; | 2841 | break; |
2843 | 2842 | ||
2844 | case BURN_PACKAGE_TYPE_MSU: | 2843 | case BURN_PACKAGE_TYPE_MSU: |
2845 | hr = MsuEnginePlanCalculatePackage(pPackage, pfBARequestedCache); | 2844 | hr = MsuEnginePlanCalculatePackage(pPackage); |
2846 | break; | 2845 | break; |
2847 | 2846 | ||
2848 | default: | 2847 | default: |
@@ -2855,16 +2854,18 @@ LExit: | |||
2855 | } | 2854 | } |
2856 | 2855 | ||
2857 | static BOOL NeedsCache( | 2856 | static BOOL NeedsCache( |
2858 | __in BURN_PACKAGE* pPackage | 2857 | __in BURN_PACKAGE* pPackage, |
2858 | __in BOOL fExecute | ||
2859 | ) | 2859 | ) |
2860 | { | 2860 | { |
2861 | BOOTSTRAPPER_ACTION_STATE action = fExecute ? pPackage->execute : pPackage->rollback; | ||
2861 | if (BURN_PACKAGE_TYPE_EXE == pPackage->type) // Exe packages require the package for all operations (even uninstall). | 2862 | if (BURN_PACKAGE_TYPE_EXE == pPackage->type) // Exe packages require the package for all operations (even uninstall). |
2862 | { | 2863 | { |
2863 | return BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->execute; | 2864 | return BOOTSTRAPPER_ACTION_STATE_NONE != action; |
2864 | } | 2865 | } |
2865 | else // The other package types can uninstall without the original package. | 2866 | else // The other package types can uninstall without the original package. |
2866 | { | 2867 | { |
2867 | return BOOTSTRAPPER_ACTION_STATE_UNINSTALL < pPackage->execute; | 2868 | return BOOTSTRAPPER_ACTION_STATE_UNINSTALL < action; |
2868 | } | 2869 | } |
2869 | } | 2870 | } |
2870 | 2871 | ||