diff options
Diffstat (limited to 'src')
| -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 | ||
