diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-01-31 16:19:32 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-02-01 23:36:23 -0600 |
| commit | eae94502fe8e7ca601161360a7d31e93edc88763 (patch) | |
| tree | 51fc862014a74c6fb2f303f90b4ca5999f3647d0 /src | |
| parent | b152761dfddc0a131dcd13f70ae0e9b9e41b37fe (diff) | |
| download | wix-eae94502fe8e7ca601161360a7d31e93edc88763.tar.gz wix-eae94502fe8e7ca601161360a7d31e93edc88763.tar.bz2 wix-eae94502fe8e7ca601161360a7d31e93edc88763.zip | |
Plan each dependency provider individually.
Refactoring for #6510
Diffstat (limited to 'src')
| -rw-r--r-- | src/burn/engine/apply.cpp | 17 | ||||
| -rw-r--r-- | src/burn/engine/dependency.cpp | 132 | ||||
| -rw-r--r-- | src/burn/engine/dependency.h | 3 | ||||
| -rw-r--r-- | src/burn/engine/elevation.cpp | 45 | ||||
| -rw-r--r-- | src/burn/engine/elevation.h | 3 | ||||
| -rw-r--r-- | src/burn/engine/package.h | 7 | ||||
| -rw-r--r-- | src/burn/engine/plan.cpp | 19 | ||||
| -rw-r--r-- | src/burn/engine/plan.h | 1 | ||||
| -rw-r--r-- | src/burn/test/BurnUnitTest/PlanTest.cpp | 73 |
9 files changed, 187 insertions, 113 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 9185e33a..2168cba6 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
| @@ -252,7 +252,8 @@ static HRESULT ExecuteMsuPackage( | |||
| 252 | static HRESULT ExecutePackageProviderAction( | 252 | static HRESULT ExecutePackageProviderAction( |
| 253 | __in BURN_ENGINE_STATE* pEngineState, | 253 | __in BURN_ENGINE_STATE* pEngineState, |
| 254 | __in BURN_EXECUTE_ACTION* pAction, | 254 | __in BURN_EXECUTE_ACTION* pAction, |
| 255 | __in BURN_EXECUTE_CONTEXT* pContext | 255 | __in BURN_EXECUTE_CONTEXT* pContext, |
| 256 | __in BOOL fRollback | ||
| 256 | ); | 257 | ); |
| 257 | static HRESULT ExecuteDependencyAction( | 258 | static HRESULT ExecuteDependencyAction( |
| 258 | __in BURN_ENGINE_STATE* pEngineState, | 259 | __in BURN_ENGINE_STATE* pEngineState, |
| @@ -2351,7 +2352,7 @@ static HRESULT DoExecuteAction( | |||
| 2351 | break; | 2352 | break; |
| 2352 | 2353 | ||
| 2353 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: | 2354 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: |
| 2354 | hr = ExecutePackageProviderAction(pEngineState, pExecuteAction, pContext); | 2355 | hr = ExecutePackageProviderAction(pEngineState, pExecuteAction, pContext, FALSE); |
| 2355 | ExitOnFailure(hr, "Failed to execute package provider registration action."); | 2356 | ExitOnFailure(hr, "Failed to execute package provider registration action."); |
| 2356 | break; | 2357 | break; |
| 2357 | 2358 | ||
| @@ -2474,7 +2475,7 @@ static HRESULT DoRollbackActions( | |||
| 2474 | break; | 2475 | break; |
| 2475 | 2476 | ||
| 2476 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: | 2477 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: |
| 2477 | hr = ExecutePackageProviderAction(pEngineState, pRollbackAction, pContext); | 2478 | hr = ExecutePackageProviderAction(pEngineState, pRollbackAction, pContext, TRUE); |
| 2478 | IgnoreRollbackError(hr, "Failed to rollback package provider action."); | 2479 | IgnoreRollbackError(hr, "Failed to rollback package provider action."); |
| 2479 | break; | 2480 | break; |
| 2480 | 2481 | ||
| @@ -2887,19 +2888,23 @@ LExit: | |||
| 2887 | static HRESULT ExecutePackageProviderAction( | 2888 | static HRESULT ExecutePackageProviderAction( |
| 2888 | __in BURN_ENGINE_STATE* pEngineState, | 2889 | __in BURN_ENGINE_STATE* pEngineState, |
| 2889 | __in BURN_EXECUTE_ACTION* pAction, | 2890 | __in BURN_EXECUTE_ACTION* pAction, |
| 2890 | __in BURN_EXECUTE_CONTEXT* /*pContext*/ | 2891 | __in BURN_EXECUTE_CONTEXT* pContext, |
| 2892 | __in BOOL fRollback | ||
| 2891 | ) | 2893 | ) |
| 2892 | { | 2894 | { |
| 2893 | HRESULT hr = S_OK; | 2895 | HRESULT hr = S_OK; |
| 2894 | 2896 | ||
| 2897 | Assert(pContext->fRollback == fRollback); | ||
| 2898 | UNREFERENCED_PARAMETER(pContext); | ||
| 2899 | |||
| 2895 | if (pAction->packageProvider.pPackage->fPerMachine) | 2900 | if (pAction->packageProvider.pPackage->fPerMachine) |
| 2896 | { | 2901 | { |
| 2897 | hr = ElevationExecutePackageProviderAction(pEngineState->companionConnection.hPipe, pAction); | 2902 | hr = ElevationExecutePackageProviderAction(pEngineState->companionConnection.hPipe, pAction, fRollback); |
| 2898 | ExitOnFailure(hr, "Failed to register the package provider on per-machine package."); | 2903 | ExitOnFailure(hr, "Failed to register the package provider on per-machine package."); |
| 2899 | } | 2904 | } |
| 2900 | else | 2905 | else |
| 2901 | { | 2906 | { |
| 2902 | hr = DependencyExecutePackageProviderAction(pAction); | 2907 | hr = DependencyExecutePackageProviderAction(pAction, fRollback); |
| 2903 | ExitOnFailure(hr, "Failed to register the package provider on per-user package."); | 2908 | ExitOnFailure(hr, "Failed to register the package provider on per-user package."); |
| 2904 | } | 2909 | } |
| 2905 | 2910 | ||
diff --git a/src/burn/engine/dependency.cpp b/src/burn/engine/dependency.cpp index e94b0e93..8f568f28 100644 --- a/src/burn/engine/dependency.cpp +++ b/src/burn/engine/dependency.cpp | |||
| @@ -59,11 +59,17 @@ static LPCWSTR GetPackageProviderId( | |||
| 59 | ); | 59 | ); |
| 60 | 60 | ||
| 61 | static HRESULT RegisterPackageProvider( | 61 | static HRESULT RegisterPackageProvider( |
| 62 | __in const BURN_PACKAGE* pPackage | 62 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, |
| 63 | __in LPCWSTR wzPackageId, | ||
| 64 | __in LPCWSTR wzPackageProviderId, | ||
| 65 | __in HKEY hkRoot, | ||
| 66 | __in BOOL fVital | ||
| 63 | ); | 67 | ); |
| 64 | 68 | ||
| 65 | static void UnregisterPackageProvider( | 69 | static void UnregisterPackageProvider( |
| 66 | __in const BURN_PACKAGE* pPackage | 70 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, |
| 71 | __in LPCWSTR wzPackageId, | ||
| 72 | __in HKEY hkRoot | ||
| 67 | ); | 73 | ); |
| 68 | 74 | ||
| 69 | static HRESULT RegisterPackageDependency( | 75 | static HRESULT RegisterPackageDependency( |
| @@ -489,6 +495,8 @@ extern "C" HRESULT DependencyPlanPackageBegin( | |||
| 489 | { | 495 | { |
| 490 | pPackage->execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 496 | pPackage->execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
| 491 | pPackage->rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 497 | pPackage->rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
| 498 | |||
| 499 | // Assume the compatible package has the same exact providers. | ||
| 492 | pPackage->compatiblePackage.fRemove = FALSE; | 500 | pPackage->compatiblePackage.fRemove = FALSE; |
| 493 | } | 501 | } |
| 494 | else | 502 | else |
| @@ -511,8 +519,22 @@ extern "C" HRESULT DependencyPlanPackageBegin( | |||
| 511 | 519 | ||
| 512 | if (!fAllImportedProviders) | 520 | if (!fAllImportedProviders) |
| 513 | { | 521 | { |
| 514 | pPackage->providerExecute = dependencyExecuteAction; | 522 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) |
| 515 | pPackage->providerRollback = dependencyRollbackAction; | 523 | { |
| 524 | BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | ||
| 525 | pProvider->providerExecute = dependencyExecuteAction; | ||
| 526 | pProvider->providerRollback = dependencyRollbackAction; | ||
| 527 | } | ||
| 528 | |||
| 529 | if (BURN_DEPENDENCY_ACTION_NONE != dependencyExecuteAction) | ||
| 530 | { | ||
| 531 | pPackage->fProviderExecute = TRUE; | ||
| 532 | } | ||
| 533 | |||
| 534 | if (BURN_DEPENDENCY_ACTION_NONE != dependencyRollbackAction) | ||
| 535 | { | ||
| 536 | pPackage->fProviderRollback = TRUE; | ||
| 537 | } | ||
| 516 | } | 538 | } |
| 517 | } | 539 | } |
| 518 | 540 | ||
| @@ -556,14 +578,13 @@ extern "C" HRESULT DependencyPlanPackage( | |||
| 556 | } | 578 | } |
| 557 | 579 | ||
| 558 | // Add the provider rollback plan. | 580 | // Add the provider rollback plan. |
| 559 | if (BURN_DEPENDENCY_ACTION_NONE != pPackage->providerRollback) | 581 | if (pPackage->fProviderRollback) |
| 560 | { | 582 | { |
| 561 | hr = PlanAppendRollbackAction(pPlan, &pAction); | 583 | hr = PlanAppendRollbackAction(pPlan, &pAction); |
| 562 | ExitOnFailure(hr, "Failed to append provider rollback action."); | 584 | ExitOnFailure(hr, "Failed to append provider rollback action."); |
| 563 | 585 | ||
| 564 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER; | 586 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER; |
| 565 | pAction->packageProvider.pPackage = const_cast<BURN_PACKAGE*>(pPackage); | 587 | pAction->packageProvider.pPackage = const_cast<BURN_PACKAGE*>(pPackage); |
| 566 | pAction->packageProvider.action = pPackage->providerRollback; | ||
| 567 | 588 | ||
| 568 | // Put a checkpoint before the execute action so that rollback happens | 589 | // Put a checkpoint before the execute action so that rollback happens |
| 569 | // if execute fails. | 590 | // if execute fails. |
| @@ -573,7 +594,7 @@ extern "C" HRESULT DependencyPlanPackage( | |||
| 573 | 594 | ||
| 574 | // Add the provider execute plan. This comes after rollback so if something goes wrong | 595 | // Add the provider execute plan. This comes after rollback so if something goes wrong |
| 575 | // rollback will try to clean up after us. | 596 | // rollback will try to clean up after us. |
| 576 | if (BURN_DEPENDENCY_ACTION_NONE != pPackage->providerExecute) | 597 | if (pPackage->fProviderExecute) |
| 577 | { | 598 | { |
| 578 | if (NULL != pdwInsertSequence) | 599 | if (NULL != pdwInsertSequence) |
| 579 | { | 600 | { |
| @@ -592,7 +613,6 @@ extern "C" HRESULT DependencyPlanPackage( | |||
| 592 | 613 | ||
| 593 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER; | 614 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER; |
| 594 | pAction->packageProvider.pPackage = const_cast<BURN_PACKAGE*>(pPackage); | 615 | pAction->packageProvider.pPackage = const_cast<BURN_PACKAGE*>(pPackage); |
| 595 | pAction->packageProvider.action = pPackage->providerExecute; | ||
| 596 | } | 616 | } |
| 597 | 617 | ||
| 598 | LExit: | 618 | LExit: |
| @@ -627,26 +647,39 @@ LExit: | |||
| 627 | } | 647 | } |
| 628 | 648 | ||
| 629 | extern "C" HRESULT DependencyExecutePackageProviderAction( | 649 | extern "C" HRESULT DependencyExecutePackageProviderAction( |
| 630 | __in const BURN_EXECUTE_ACTION* pAction | 650 | __in const BURN_EXECUTE_ACTION* pAction, |
| 651 | __in BOOL fRollback | ||
| 631 | ) | 652 | ) |
| 632 | { | 653 | { |
| 633 | AssertSz(BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER == pAction->type, "Execute action type not supported by this function."); | 654 | AssertSz(BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER == pAction->type, "Execute action type not supported by this function."); |
| 634 | 655 | ||
| 635 | HRESULT hr = S_OK; | 656 | HRESULT hr = S_OK; |
| 636 | const BURN_PACKAGE* pPackage = pAction->packageProvider.pPackage; | 657 | const BURN_PACKAGE* pPackage = pAction->packageProvider.pPackage; |
| 658 | HKEY hkRoot = pPackage->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | ||
| 659 | LPCWSTR wzId = GetPackageProviderId(pPackage); | ||
| 637 | 660 | ||
| 638 | // Register or unregister the package provider(s). | 661 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) |
| 639 | if (BURN_DEPENDENCY_ACTION_REGISTER == pAction->packageProvider.action) | ||
| 640 | { | ||
| 641 | hr = RegisterPackageProvider(pPackage); | ||
| 642 | ExitOnFailure(hr, "Failed to register the package providers."); | ||
| 643 | } | ||
| 644 | else if (BURN_DEPENDENCY_ACTION_UNREGISTER == pAction->packageProvider.action) | ||
| 645 | { | 662 | { |
| 646 | UnregisterPackageProvider(pPackage); | 663 | const BURN_DEPENDENCY_PROVIDER* pProvider = pPackage->rgDependencyProviders + i; |
| 664 | BURN_DEPENDENCY_ACTION action = fRollback ? pProvider->providerRollback : pProvider->providerExecute; | ||
| 665 | HRESULT hrProvider = S_OK; | ||
| 666 | |||
| 667 | // Register or unregister the package provider. | ||
| 668 | switch (action) | ||
| 669 | { | ||
| 670 | case BURN_DEPENDENCY_ACTION_REGISTER: | ||
| 671 | hrProvider = RegisterPackageProvider(pProvider, pPackage->sczId, wzId, hkRoot, pPackage->fVital); | ||
| 672 | if (SUCCEEDED(hr) && FAILED(hrProvider)) | ||
| 673 | { | ||
| 674 | hr = hrProvider; | ||
| 675 | } | ||
| 676 | break; | ||
| 677 | case BURN_DEPENDENCY_ACTION_UNREGISTER: | ||
| 678 | UnregisterPackageProvider(pProvider, pPackage->sczId, hkRoot); | ||
| 679 | break; | ||
| 680 | } | ||
| 647 | } | 681 | } |
| 648 | 682 | ||
| 649 | LExit: | ||
| 650 | if (!pPackage->fVital) | 683 | if (!pPackage->fVital) |
| 651 | { | 684 | { |
| 652 | hr = S_OK; | 685 | hr = S_OK; |
| @@ -1175,7 +1208,7 @@ static void CalculateDependencyActionStates( | |||
| 1175 | case BOOTSTRAPPER_ACTION_STATE_INSTALL: __fallthrough; | 1208 | case BOOTSTRAPPER_ACTION_STATE_INSTALL: __fallthrough; |
| 1176 | case BOOTSTRAPPER_ACTION_STATE_MODIFY: __fallthrough; | 1209 | case BOOTSTRAPPER_ACTION_STATE_MODIFY: __fallthrough; |
| 1177 | case BOOTSTRAPPER_ACTION_STATE_REPAIR: __fallthrough; | 1210 | case BOOTSTRAPPER_ACTION_STATE_REPAIR: __fallthrough; |
| 1178 | case BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE: __fallthrough; | 1211 | case BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE: |
| 1179 | *pDependencyExecuteAction = BURN_DEPENDENCY_ACTION_REGISTER; | 1212 | *pDependencyExecuteAction = BURN_DEPENDENCY_ACTION_REGISTER; |
| 1180 | break; | 1213 | break; |
| 1181 | } | 1214 | } |
| @@ -1188,7 +1221,7 @@ static void CalculateDependencyActionStates( | |||
| 1188 | switch (pPackage->currentState) | 1221 | switch (pPackage->currentState) |
| 1189 | { | 1222 | { |
| 1190 | case BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE: __fallthrough; | 1223 | case BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE: __fallthrough; |
| 1191 | case BOOTSTRAPPER_PACKAGE_STATE_ABSENT: __fallthrough; | 1224 | case BOOTSTRAPPER_PACKAGE_STATE_ABSENT: |
| 1192 | *pDependencyRollbackAction = BURN_DEPENDENCY_ACTION_UNREGISTER; | 1225 | *pDependencyRollbackAction = BURN_DEPENDENCY_ACTION_UNREGISTER; |
| 1193 | break; | 1226 | break; |
| 1194 | } | 1227 | } |
| @@ -1291,32 +1324,25 @@ static LPCWSTR GetPackageProviderId( | |||
| 1291 | } | 1324 | } |
| 1292 | 1325 | ||
| 1293 | static HRESULT RegisterPackageProvider( | 1326 | static HRESULT RegisterPackageProvider( |
| 1294 | __in const BURN_PACKAGE* pPackage | 1327 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, |
| 1328 | __in LPCWSTR wzPackageId, | ||
| 1329 | __in LPCWSTR wzPackageProviderId, | ||
| 1330 | __in HKEY hkRoot, | ||
| 1331 | __in BOOL fVital | ||
| 1295 | ) | 1332 | ) |
| 1296 | { | 1333 | { |
| 1297 | HRESULT hr = S_OK; | 1334 | HRESULT hr = S_OK; |
| 1298 | 1335 | ||
| 1299 | if (pPackage->rgDependencyProviders) | 1336 | if (!pProvider->fImported) |
| 1300 | { | 1337 | { |
| 1301 | HKEY hkRoot = pPackage->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | 1338 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_REGISTER, pProvider->sczKey, pProvider->sczVersion, wzPackageId); |
| 1302 | LPCWSTR wzId = GetPackageProviderId(pPackage); | ||
| 1303 | |||
| 1304 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) | ||
| 1305 | { | ||
| 1306 | const BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | ||
| 1307 | |||
| 1308 | if (!pProvider->fImported) | ||
| 1309 | { | ||
| 1310 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_REGISTER, pProvider->sczKey, pProvider->sczVersion, pPackage->sczId); | ||
| 1311 | 1339 | ||
| 1312 | hr = DepRegisterDependency(hkRoot, pProvider->sczKey, pProvider->sczVersion, pProvider->sczDisplayName, wzId, 0); | 1340 | hr = DepRegisterDependency(hkRoot, pProvider->sczKey, pProvider->sczVersion, pProvider->sczDisplayName, wzPackageProviderId, 0); |
| 1313 | ExitOnFailure(hr, "Failed to register the package dependency provider: %ls", pProvider->sczKey); | 1341 | ExitOnFailure(hr, "Failed to register the package dependency provider: %ls", pProvider->sczKey); |
| 1314 | } | ||
| 1315 | } | ||
| 1316 | } | 1342 | } |
| 1317 | 1343 | ||
| 1318 | LExit: | 1344 | LExit: |
| 1319 | if (!pPackage->fVital) | 1345 | if (!fVital) |
| 1320 | { | 1346 | { |
| 1321 | hr = S_OK; | 1347 | hr = S_OK; |
| 1322 | } | 1348 | } |
| @@ -1325,36 +1351,28 @@ LExit: | |||
| 1325 | } | 1351 | } |
| 1326 | 1352 | ||
| 1327 | /******************************************************************** | 1353 | /******************************************************************** |
| 1328 | UnregisterPackageProvider - Removes each dependency provider | 1354 | UnregisterPackageProvider - Removes the dependency provider. |
| 1329 | for the package (if not imported from the package itself). | ||
| 1330 | 1355 | ||
| 1331 | Note: Does not check for existing dependents before removing the key. | 1356 | Note: Does not check for existing dependents before removing the key. |
| 1332 | *********************************************************************/ | 1357 | *********************************************************************/ |
| 1333 | static void UnregisterPackageProvider( | 1358 | static void UnregisterPackageProvider( |
| 1334 | __in const BURN_PACKAGE* pPackage | 1359 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, |
| 1360 | __in LPCWSTR wzPackageId, | ||
| 1361 | __in HKEY hkRoot | ||
| 1335 | ) | 1362 | ) |
| 1336 | { | 1363 | { |
| 1337 | HRESULT hr = S_OK; | 1364 | HRESULT hr = S_OK; |
| 1338 | HKEY hkRoot = pPackage->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | ||
| 1339 | 1365 | ||
| 1340 | if (pPackage->rgDependencyProviders) | 1366 | if (!pProvider->fImported) |
| 1341 | { | 1367 | { |
| 1342 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) | 1368 | hr = DepUnregisterDependency(hkRoot, pProvider->sczKey); |
| 1369 | if (SUCCEEDED(hr)) | ||
| 1343 | { | 1370 | { |
| 1344 | const BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | 1371 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED, pProvider->sczKey, wzPackageId); |
| 1345 | 1372 | } | |
| 1346 | if (!pProvider->fImported) | 1373 | else if (FAILED(hr) && E_FILENOTFOUND != hr) |
| 1347 | { | 1374 | { |
| 1348 | hr = DepUnregisterDependency(hkRoot, pProvider->sczKey); | 1375 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED_FAILED, pProvider->sczKey, wzPackageId, hr); |
| 1349 | if (SUCCEEDED(hr)) | ||
| 1350 | { | ||
| 1351 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED, pProvider->sczKey, pPackage->sczId); | ||
| 1352 | } | ||
| 1353 | else if (FAILED(hr) && E_FILENOTFOUND != hr) | ||
| 1354 | { | ||
| 1355 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED_FAILED, pProvider->sczKey, pPackage->sczId, hr); | ||
| 1356 | } | ||
| 1357 | } | ||
| 1358 | } | 1376 | } |
| 1359 | } | 1377 | } |
| 1360 | } | 1378 | } |
diff --git a/src/burn/engine/dependency.h b/src/burn/engine/dependency.h index 41718066..0e558554 100644 --- a/src/burn/engine/dependency.h +++ b/src/burn/engine/dependency.h | |||
| @@ -150,7 +150,8 @@ HRESULT DependencyPlanPackageComplete( | |||
| 150 | 150 | ||
| 151 | *********************************************************************/ | 151 | *********************************************************************/ |
| 152 | HRESULT DependencyExecutePackageProviderAction( | 152 | HRESULT DependencyExecutePackageProviderAction( |
| 153 | __in const BURN_EXECUTE_ACTION* pAction | 153 | __in const BURN_EXECUTE_ACTION* pAction, |
| 154 | __in BOOL fRollback | ||
| 154 | ); | 155 | ); |
| 155 | 156 | ||
| 156 | /******************************************************************** | 157 | /******************************************************************** |
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp index eafc08ee..75679acd 100644 --- a/src/burn/engine/elevation.cpp +++ b/src/burn/engine/elevation.cpp | |||
| @@ -1305,7 +1305,8 @@ LExit: | |||
| 1305 | 1305 | ||
| 1306 | extern "C" HRESULT ElevationExecutePackageProviderAction( | 1306 | extern "C" HRESULT ElevationExecutePackageProviderAction( |
| 1307 | __in HANDLE hPipe, | 1307 | __in HANDLE hPipe, |
| 1308 | __in BURN_EXECUTE_ACTION* pExecuteAction | 1308 | __in BURN_EXECUTE_ACTION* pExecuteAction, |
| 1309 | __in BOOL fRollback | ||
| 1309 | ) | 1310 | ) |
| 1310 | { | 1311 | { |
| 1311 | HRESULT hr = S_OK; | 1312 | HRESULT hr = S_OK; |
| @@ -1318,8 +1319,17 @@ extern "C" HRESULT ElevationExecutePackageProviderAction( | |||
| 1318 | hr = BuffWriteString(&pbData, &cbData, pExecuteAction->packageProvider.pPackage->sczId); | 1319 | hr = BuffWriteString(&pbData, &cbData, pExecuteAction->packageProvider.pPackage->sczId); |
| 1319 | ExitOnFailure(hr, "Failed to write package id to message buffer."); | 1320 | ExitOnFailure(hr, "Failed to write package id to message buffer."); |
| 1320 | 1321 | ||
| 1321 | hr = BuffWriteNumber(&pbData, &cbData, pExecuteAction->packageProvider.action); | 1322 | hr = BuffWriteNumber(&pbData, &cbData, (DWORD)fRollback); |
| 1322 | ExitOnFailure(hr, "Failed to write action to message buffer."); | 1323 | ExitOnFailure(hr, "Failed to write rollback flag to message buffer."); |
| 1324 | |||
| 1325 | // Provider actions. | ||
| 1326 | for (DWORD i = 0; i < pExecuteAction->packageProvider.pPackage->cDependencyProviders; ++i) | ||
| 1327 | { | ||
| 1328 | BURN_DEPENDENCY_PROVIDER* pProvider = pExecuteAction->packageProvider.pPackage->rgDependencyProviders + i; | ||
| 1329 | BURN_DEPENDENCY_ACTION* pAction = fRollback ? &pProvider->providerRollback : &pProvider->providerExecute; | ||
| 1330 | hr = BuffWriteNumber(&pbData, &cbData, (DWORD)*pAction); | ||
| 1331 | ExitOnFailure(hr, "Failed to write provider action to message buffer."); | ||
| 1332 | } | ||
| 1323 | 1333 | ||
| 1324 | // Send the message. | 1334 | // Send the message. |
| 1325 | hr = PipeSendMessage(hPipe, BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PACKAGE_PROVIDER, pbData, cbData, NULL, NULL, &dwResult); | 1335 | hr = PipeSendMessage(hPipe, BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PACKAGE_PROVIDER, pbData, cbData, NULL, NULL, &dwResult); |
| @@ -2840,7 +2850,7 @@ static HRESULT OnExecuteMsiPackage( | |||
| 2840 | SIZE_T iData = 0; | 2850 | SIZE_T iData = 0; |
| 2841 | LPWSTR sczPackage = NULL; | 2851 | LPWSTR sczPackage = NULL; |
| 2842 | HWND hwndParent = NULL; | 2852 | HWND hwndParent = NULL; |
| 2843 | BOOL fRollback = 0; | 2853 | BOOL fRollback = FALSE; |
| 2844 | BURN_EXECUTE_ACTION executeAction = { }; | 2854 | BURN_EXECUTE_ACTION executeAction = { }; |
| 2845 | BOOTSTRAPPER_APPLY_RESTART msiRestart = BOOTSTRAPPER_APPLY_RESTART_NONE; | 2855 | BOOTSTRAPPER_APPLY_RESTART msiRestart = BOOTSTRAPPER_APPLY_RESTART_NONE; |
| 2846 | 2856 | ||
| @@ -2946,7 +2956,7 @@ static HRESULT OnExecuteMspPackage( | |||
| 2946 | SIZE_T iData = 0; | 2956 | SIZE_T iData = 0; |
| 2947 | LPWSTR sczPackage = NULL; | 2957 | LPWSTR sczPackage = NULL; |
| 2948 | HWND hwndParent = NULL; | 2958 | HWND hwndParent = NULL; |
| 2949 | BOOL fRollback = 0; | 2959 | BOOL fRollback = FALSE; |
| 2950 | BURN_EXECUTE_ACTION executeAction = { }; | 2960 | BURN_EXECUTE_ACTION executeAction = { }; |
| 2951 | BOOTSTRAPPER_APPLY_RESTART restart = BOOTSTRAPPER_APPLY_RESTART_NONE; | 2961 | BOOTSTRAPPER_APPLY_RESTART restart = BOOTSTRAPPER_APPLY_RESTART_NONE; |
| 2952 | 2962 | ||
| @@ -3117,7 +3127,7 @@ static HRESULT OnUninstallMsiCompatiblePackage( | |||
| 3117 | LPWSTR sczPackageId = NULL; | 3127 | LPWSTR sczPackageId = NULL; |
| 3118 | LPWSTR sczCompatiblePackageId = NULL; | 3128 | LPWSTR sczCompatiblePackageId = NULL; |
| 3119 | HWND hwndParent = NULL; | 3129 | HWND hwndParent = NULL; |
| 3120 | BOOL fRollback = 0; | 3130 | BOOL fRollback = FALSE; |
| 3121 | BURN_EXECUTE_ACTION executeAction = { }; | 3131 | BURN_EXECUTE_ACTION executeAction = { }; |
| 3122 | BURN_PACKAGE* pPackage = NULL; | 3132 | BURN_PACKAGE* pPackage = NULL; |
| 3123 | BURN_COMPATIBLE_PACKAGE* pCompatiblePackage = NULL; | 3133 | BURN_COMPATIBLE_PACKAGE* pCompatiblePackage = NULL; |
| @@ -3195,6 +3205,7 @@ static HRESULT OnExecutePackageProviderAction( | |||
| 3195 | HRESULT hr = S_OK; | 3205 | HRESULT hr = S_OK; |
| 3196 | SIZE_T iData = 0; | 3206 | SIZE_T iData = 0; |
| 3197 | LPWSTR sczPackage = NULL; | 3207 | LPWSTR sczPackage = NULL; |
| 3208 | BOOL fRollback = FALSE; | ||
| 3198 | BURN_EXECUTE_ACTION executeAction = { }; | 3209 | BURN_EXECUTE_ACTION executeAction = { }; |
| 3199 | 3210 | ||
| 3200 | executeAction.type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER; | 3211 | executeAction.type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER; |
| @@ -3203,9 +3214,6 @@ static HRESULT OnExecutePackageProviderAction( | |||
| 3203 | hr = BuffReadString(pbData, cbData, &iData, &sczPackage); | 3214 | hr = BuffReadString(pbData, cbData, &iData, &sczPackage); |
| 3204 | ExitOnFailure(hr, "Failed to read package id from message buffer."); | 3215 | ExitOnFailure(hr, "Failed to read package id from message buffer."); |
| 3205 | 3216 | ||
| 3206 | hr = BuffReadNumber(pbData, cbData, &iData, reinterpret_cast<DWORD*>(&executeAction.packageProvider.action)); | ||
| 3207 | ExitOnFailure(hr, "Failed to read action."); | ||
| 3208 | |||
| 3209 | // Find the package again. | 3217 | // Find the package again. |
| 3210 | hr = PackageFindById(pPackages, sczPackage, &executeAction.packageProvider.pPackage); | 3218 | hr = PackageFindById(pPackages, sczPackage, &executeAction.packageProvider.pPackage); |
| 3211 | if (E_NOTFOUND == hr) | 3219 | if (E_NOTFOUND == hr) |
| @@ -3214,8 +3222,25 @@ static HRESULT OnExecutePackageProviderAction( | |||
| 3214 | } | 3222 | } |
| 3215 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3223 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3216 | 3224 | ||
| 3225 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&fRollback); | ||
| 3226 | ExitOnFailure(hr, "Failed to read rollback flag."); | ||
| 3227 | |||
| 3228 | // Read provider actions. | ||
| 3229 | for (DWORD i = 0; i < executeAction.packageProvider.pPackage->cDependencyProviders; ++i) | ||
| 3230 | { | ||
| 3231 | BURN_DEPENDENCY_PROVIDER* pProvider = executeAction.packageProvider.pPackage->rgDependencyProviders + i; | ||
| 3232 | BURN_DEPENDENCY_ACTION* pAction = fRollback ? &pProvider->providerRollback : &pProvider->providerExecute; | ||
| 3233 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)pAction); | ||
| 3234 | ExitOnFailure(hr, "Failed to read provider action."); | ||
| 3235 | } | ||
| 3236 | |||
| 3237 | if (!executeAction.packageProvider.pPackage->fPerMachine) | ||
| 3238 | { | ||
| 3239 | ExitWithRootFailure(hr, E_INVALIDARG, "ExecutePackageProviderAction called for per-user package."); | ||
| 3240 | } | ||
| 3241 | |||
| 3217 | // Execute the package provider action. | 3242 | // Execute the package provider action. |
| 3218 | hr = DependencyExecutePackageProviderAction(&executeAction); | 3243 | hr = DependencyExecutePackageProviderAction(&executeAction, fRollback); |
| 3219 | ExitOnFailure(hr, "Failed to execute package provider action."); | 3244 | ExitOnFailure(hr, "Failed to execute package provider action."); |
| 3220 | 3245 | ||
| 3221 | LExit: | 3246 | LExit: |
diff --git a/src/burn/engine/elevation.h b/src/burn/engine/elevation.h index 9659ef89..f5b56f02 100644 --- a/src/burn/engine/elevation.h +++ b/src/burn/engine/elevation.h | |||
| @@ -139,7 +139,8 @@ HRESULT ElevationUninstallMsiCompatiblePackage( | |||
| 139 | ); | 139 | ); |
| 140 | HRESULT ElevationExecutePackageProviderAction( | 140 | HRESULT ElevationExecutePackageProviderAction( |
| 141 | __in HANDLE hPipe, | 141 | __in HANDLE hPipe, |
| 142 | __in BURN_EXECUTE_ACTION* pExecuteAction | 142 | __in BURN_EXECUTE_ACTION* pExecuteAction, |
| 143 | __in BOOL fRollback | ||
| 143 | ); | 144 | ); |
| 144 | HRESULT ElevationExecutePackageDependencyAction( | 145 | HRESULT ElevationExecutePackageDependencyAction( |
| 145 | __in HANDLE hPipe, | 146 | __in HANDLE hPipe, |
diff --git a/src/burn/engine/package.h b/src/burn/engine/package.h index eb812e20..6fae0c10 100644 --- a/src/burn/engine/package.h +++ b/src/burn/engine/package.h | |||
| @@ -195,6 +195,9 @@ typedef struct _BURN_DEPENDENCY_PROVIDER | |||
| 195 | 195 | ||
| 196 | DEPENDENCY* rgDependents; // only valid after Detect. | 196 | DEPENDENCY* rgDependents; // only valid after Detect. |
| 197 | UINT cDependents; // only valid after Detect. | 197 | UINT cDependents; // only valid after Detect. |
| 198 | |||
| 199 | BURN_DEPENDENCY_ACTION providerExecute; // only valid during Plan. | ||
| 200 | BURN_DEPENDENCY_ACTION providerRollback; // only valid during Plan. | ||
| 198 | } BURN_DEPENDENCY_PROVIDER; | 201 | } BURN_DEPENDENCY_PROVIDER; |
| 199 | 202 | ||
| 200 | typedef struct _BURN_ROLLBACK_BOUNDARY | 203 | typedef struct _BURN_ROLLBACK_BOUNDARY |
| @@ -267,8 +270,8 @@ typedef struct _BURN_PACKAGE | |||
| 267 | BOOL fPlannedUncache; // only valid during Plan. | 270 | BOOL fPlannedUncache; // only valid during Plan. |
| 268 | BOOTSTRAPPER_ACTION_STATE execute; // only valid during Plan. | 271 | BOOTSTRAPPER_ACTION_STATE execute; // only valid during Plan. |
| 269 | BOOTSTRAPPER_ACTION_STATE rollback; // only valid during Plan. | 272 | BOOTSTRAPPER_ACTION_STATE rollback; // only valid during Plan. |
| 270 | BURN_DEPENDENCY_ACTION providerExecute; // only valid during Plan. | 273 | BOOL fProviderExecute; // only valid during Plan. |
| 271 | BURN_DEPENDENCY_ACTION providerRollback; // only valid during Plan. | 274 | BOOL fProviderRollback; // only valid during Plan. |
| 272 | BURN_DEPENDENCY_ACTION dependencyExecute; // only valid during Plan. | 275 | BURN_DEPENDENCY_ACTION dependencyExecute; // only valid during Plan. |
| 273 | BURN_DEPENDENCY_ACTION dependencyRollback; // only valid during Plan. | 276 | BURN_DEPENDENCY_ACTION dependencyRollback; // only valid during Plan. |
| 274 | BOOL fDependencyManagerWasHere; // only valid during Plan. | 277 | BOOL fDependencyManagerWasHere; // only valid during Plan. |
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp index a25b17d7..27eee3fb 100644 --- a/src/burn/engine/plan.cpp +++ b/src/burn/engine/plan.cpp | |||
| @@ -1922,8 +1922,8 @@ static void ResetPlannedPackageState( | |||
| 1922 | pPackage->fPlannedUncache = FALSE; | 1922 | pPackage->fPlannedUncache = FALSE; |
| 1923 | pPackage->execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 1923 | pPackage->execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
| 1924 | pPackage->rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 1924 | pPackage->rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
| 1925 | pPackage->providerExecute = BURN_DEPENDENCY_ACTION_NONE; | 1925 | pPackage->fProviderExecute = FALSE; |
| 1926 | pPackage->providerRollback = BURN_DEPENDENCY_ACTION_NONE; | 1926 | pPackage->fProviderRollback = FALSE; |
| 1927 | pPackage->dependencyExecute = BURN_DEPENDENCY_ACTION_NONE; | 1927 | pPackage->dependencyExecute = BURN_DEPENDENCY_ACTION_NONE; |
| 1928 | pPackage->dependencyRollback = BURN_DEPENDENCY_ACTION_NONE; | 1928 | pPackage->dependencyRollback = BURN_DEPENDENCY_ACTION_NONE; |
| 1929 | pPackage->fDependencyManagerWasHere = FALSE; | 1929 | pPackage->fDependencyManagerWasHere = FALSE; |
| @@ -1969,6 +1969,14 @@ static void ResetPlannedPackageState( | |||
| 1969 | } | 1969 | } |
| 1970 | } | 1970 | } |
| 1971 | 1971 | ||
| 1972 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) | ||
| 1973 | { | ||
| 1974 | BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | ||
| 1975 | |||
| 1976 | pProvider->providerExecute = BURN_DEPENDENCY_ACTION_NONE; | ||
| 1977 | pProvider->providerRollback = BURN_DEPENDENCY_ACTION_NONE; | ||
| 1978 | } | ||
| 1979 | |||
| 1972 | ResetPlannedPayloadGroupState(&pPackage->payloads); | 1980 | ResetPlannedPayloadGroupState(&pPackage->payloads); |
| 1973 | } | 1981 | } |
| 1974 | 1982 | ||
| @@ -2637,7 +2645,12 @@ static void ExecuteActionLog( | |||
| 2637 | break; | 2645 | break; |
| 2638 | 2646 | ||
| 2639 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: | 2647 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER: |
| 2640 | LogStringLine(PlanDumpLevel, "%ls action[%u]: PACKAGE_PROVIDER package id: %ls, action: %hs", wzBase, iAction, pAction->packageProvider.pPackage->sczId, LoggingDependencyActionToString(pAction->packageProvider.action)); | 2648 | LogStringLine(PlanDumpLevel, "%ls action[%u]: PACKAGE_PROVIDER package id: %ls", wzBase, iAction, pAction->packageProvider.pPackage->sczId); |
| 2649 | for (DWORD j = 0; j < pAction->packageProvider.pPackage->cDependencyProviders; ++j) | ||
| 2650 | { | ||
| 2651 | const BURN_DEPENDENCY_PROVIDER* pProvider = pAction->packageProvider.pPackage->rgDependencyProviders + j; | ||
| 2652 | LogStringLine(PlanDumpLevel, " Provider[%u]: key: %ls, action: %hs", j, pProvider->sczKey, LoggingDependencyActionToString(fRollback ? pProvider->providerRollback : pProvider->providerExecute)); | ||
| 2653 | } | ||
| 2641 | break; | 2654 | break; |
| 2642 | 2655 | ||
| 2643 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: | 2656 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: |
diff --git a/src/burn/engine/plan.h b/src/burn/engine/plan.h index 15092210..61953168 100644 --- a/src/burn/engine/plan.h +++ b/src/burn/engine/plan.h | |||
| @@ -208,7 +208,6 @@ typedef struct _BURN_EXECUTE_ACTION | |||
| 208 | struct | 208 | struct |
| 209 | { | 209 | { |
| 210 | BURN_PACKAGE* pPackage; | 210 | BURN_PACKAGE* pPackage; |
| 211 | BURN_DEPENDENCY_ACTION action; | ||
| 212 | } packageProvider; | 211 | } packageProvider; |
| 213 | struct | 212 | struct |
| 214 | { | 213 | { |
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp index 9d86b7cc..d5926694 100644 --- a/src/burn/test/BurnUnitTest/PlanTest.cpp +++ b/src/burn/test/BurnUnitTest/PlanTest.cpp | |||
| @@ -18,6 +18,9 @@ static BOOTSTRAPPER_REQUEST_STATE vPackageRequestState = BOOTSTRAPPER_REQUEST_ST | |||
| 18 | static BOOL vfUseRelatedBundleRequestState = FALSE; | 18 | static BOOL vfUseRelatedBundleRequestState = FALSE; |
| 19 | static BOOTSTRAPPER_REQUEST_STATE vRelatedBundleRequestState = BOOTSTRAPPER_REQUEST_STATE_NONE; | 19 | static BOOTSTRAPPER_REQUEST_STATE vRelatedBundleRequestState = BOOTSTRAPPER_REQUEST_STATE_NONE; |
| 20 | 20 | ||
| 21 | static BURN_DEPENDENCY_ACTION registerActions1[] = { BURN_DEPENDENCY_ACTION_REGISTER }; | ||
| 22 | static BURN_DEPENDENCY_ACTION unregisterActions1[] = { BURN_DEPENDENCY_ACTION_UNREGISTER }; | ||
| 23 | |||
| 21 | namespace Microsoft | 24 | namespace Microsoft |
| 22 | { | 25 | { |
| 23 | namespace Tools | 26 | namespace Tools |
| @@ -90,7 +93,7 @@ namespace Bootstrapper | |||
| 90 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 93 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 91 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 94 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 92 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 95 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 93 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 96 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 94 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 97 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 95 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 98 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 96 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 99 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -105,7 +108,7 @@ namespace Bootstrapper | |||
| 105 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 108 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 106 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); | 109 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); |
| 107 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 110 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 108 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", BURN_DEPENDENCY_ACTION_REGISTER); | 111 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", registerActions1, 1); |
| 109 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 112 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 110 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 113 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 111 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 114 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| @@ -114,7 +117,7 @@ namespace Bootstrapper | |||
| 114 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 115 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); | 118 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); |
| 116 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 119 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 117 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", BURN_DEPENDENCY_ACTION_REGISTER); | 120 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", registerActions1, 1); |
| 118 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageC", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 121 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageC", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 119 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 122 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 120 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 123 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| @@ -131,7 +134,7 @@ namespace Bootstrapper | |||
| 131 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 134 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 132 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 135 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 133 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 134 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 137 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 135 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 138 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 136 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 139 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 137 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 140 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -145,7 +148,7 @@ namespace Bootstrapper | |||
| 145 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); | 148 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); |
| 146 | dwExecuteCheckpointId += 1; // cache checkpoints | 149 | dwExecuteCheckpointId += 1; // cache checkpoints |
| 147 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 150 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 148 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", BURN_DEPENDENCY_ACTION_UNREGISTER); | 151 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", unregisterActions1, 1); |
| 149 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 152 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 150 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 153 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 151 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 154 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -153,7 +156,7 @@ namespace Bootstrapper | |||
| 153 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); | 156 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); |
| 154 | dwExecuteCheckpointId += 1; // cache checkpoints | 157 | dwExecuteCheckpointId += 1; // cache checkpoints |
| 155 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 158 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 156 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", BURN_DEPENDENCY_ACTION_UNREGISTER); | 159 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", unregisterActions1, 1); |
| 157 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 160 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 158 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 161 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 159 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 162 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -217,13 +220,13 @@ namespace Bootstrapper | |||
| 217 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 220 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 218 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 221 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 219 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 222 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 220 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", BURN_DEPENDENCY_ACTION_UNREGISTER); | 223 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", unregisterActions1, 1); |
| 221 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageC", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 224 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageC", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 222 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 225 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 223 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 226 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 224 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 227 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 225 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 228 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 226 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", BURN_DEPENDENCY_ACTION_UNREGISTER); | 229 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", unregisterActions1, 1); |
| 227 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 230 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 228 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 231 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 229 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 232 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| @@ -233,7 +236,7 @@ namespace Bootstrapper | |||
| 233 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 236 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 234 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 237 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 235 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 238 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 236 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 239 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 237 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 240 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 238 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 241 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 239 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 242 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -248,12 +251,12 @@ namespace Bootstrapper | |||
| 248 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 251 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 249 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 252 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 250 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 253 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 251 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", BURN_DEPENDENCY_ACTION_REGISTER); | 254 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", registerActions1, 1); |
| 252 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 255 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 253 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 256 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 254 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 257 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 255 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 258 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 256 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", BURN_DEPENDENCY_ACTION_REGISTER); | 259 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", registerActions1, 1); |
| 257 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 260 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 258 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 261 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 259 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 262 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -261,7 +264,7 @@ namespace Bootstrapper | |||
| 261 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 264 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 262 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 265 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 263 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 266 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 264 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 267 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 265 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 268 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 266 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 269 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 267 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 270 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -327,7 +330,7 @@ namespace Bootstrapper | |||
| 327 | DWORD dwExecuteCheckpointId = 1; | 330 | DWORD dwExecuteCheckpointId = 1; |
| 328 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 331 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 329 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 332 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 330 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 333 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 331 | ValidateUninstallMsiCompatiblePackage(pPlan, fRollback, dwIndex++, L"PackageA", 0); | 334 | ValidateUninstallMsiCompatiblePackage(pPlan, fRollback, dwIndex++, L"PackageA", 0); |
| 332 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 335 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 333 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 336 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -404,7 +407,7 @@ namespace Bootstrapper | |||
| 404 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 407 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 405 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 408 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 406 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 409 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 407 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 410 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 408 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 411 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 409 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 412 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 410 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 413 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -420,7 +423,7 @@ namespace Bootstrapper | |||
| 420 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 423 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 421 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 424 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 422 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 425 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 423 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 426 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 424 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 427 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 425 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 428 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 426 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 429 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -498,7 +501,7 @@ namespace Bootstrapper | |||
| 498 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 501 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 499 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 502 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 500 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 503 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 501 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 504 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 502 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 505 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 503 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 506 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 504 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 507 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -559,7 +562,7 @@ namespace Bootstrapper | |||
| 559 | DWORD dwExecuteCheckpointId = 1; | 562 | DWORD dwExecuteCheckpointId = 1; |
| 560 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 563 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 561 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 564 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 562 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 565 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 563 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 566 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 564 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 567 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 565 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 568 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -637,7 +640,7 @@ namespace Bootstrapper | |||
| 637 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 640 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 638 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 641 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 639 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 642 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 640 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 643 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 641 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 644 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 642 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 645 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 643 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 646 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -713,7 +716,7 @@ namespace Bootstrapper | |||
| 713 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 716 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 714 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 717 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 715 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 718 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 716 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 719 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 717 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 720 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 718 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 721 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 719 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 722 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -730,7 +733,7 @@ namespace Bootstrapper | |||
| 730 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 733 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 731 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 734 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 732 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 735 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 733 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 736 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 734 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 737 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 735 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 738 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 736 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 739 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -854,7 +857,7 @@ namespace Bootstrapper | |||
| 854 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 857 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 855 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 858 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 856 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 859 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 857 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 860 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 858 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 861 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 859 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 862 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 860 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 863 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -868,7 +871,7 @@ namespace Bootstrapper | |||
| 868 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 871 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 869 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 872 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 870 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 873 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 871 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 874 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 872 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 875 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 873 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 876 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 874 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 877 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1011,14 +1014,14 @@ namespace Bootstrapper | |||
| 1011 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1014 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1012 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 1015 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 1013 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1016 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1014 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 1017 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 1015 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1018 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1016 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 1019 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 1017 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1020 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1018 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); | 1021 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 1019 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1022 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1020 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1023 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1021 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", BURN_DEPENDENCY_ACTION_REGISTER); | 1024 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); |
| 1022 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); | 1025 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); |
| 1023 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1026 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1024 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1027 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1037,14 +1040,14 @@ namespace Bootstrapper | |||
| 1037 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1040 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1038 | dwExecuteCheckpointId += 1; // cache checkpoints | 1041 | dwExecuteCheckpointId += 1; // cache checkpoints |
| 1039 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1042 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1040 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1043 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 1041 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1044 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1042 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 1045 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 1043 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1046 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1044 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1047 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 1045 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1048 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1046 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1049 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1047 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1050 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); |
| 1048 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1051 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1049 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); | 1052 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); |
| 1050 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1053 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| @@ -1108,14 +1111,14 @@ namespace Bootstrapper | |||
| 1108 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1111 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1109 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1112 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 1110 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1113 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1111 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1114 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); |
| 1112 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); | 1115 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); |
| 1113 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1116 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1114 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1115 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1118 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1116 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1119 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 1117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1120 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1118 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1121 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 1119 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1122 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1120 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 1123 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 1121 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1124 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1129,14 +1132,14 @@ namespace Bootstrapper | |||
| 1129 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 1132 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 1130 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); | 1133 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 1131 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1134 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1132 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", BURN_DEPENDENCY_ACTION_REGISTER); | 1135 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); |
| 1133 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1134 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); | 1137 | pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); |
| 1135 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1138 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1139 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1137 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); | 1140 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 1138 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1141 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1139 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 1142 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 1140 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1143 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1141 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 1144 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 1142 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1145 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1711,13 +1714,19 @@ namespace Bootstrapper | |||
| 1711 | __in BOOL fRollback, | 1714 | __in BOOL fRollback, |
| 1712 | __in DWORD dwIndex, | 1715 | __in DWORD dwIndex, |
| 1713 | __in LPCWSTR wzPackageId, | 1716 | __in LPCWSTR wzPackageId, |
| 1714 | __in BURN_DEPENDENCY_ACTION action | 1717 | __in BURN_DEPENDENCY_ACTION* rgActions, |
| 1718 | __in DWORD cActions | ||
| 1715 | ) | 1719 | ) |
| 1716 | { | 1720 | { |
| 1717 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); | 1721 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); |
| 1718 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER, pAction->type); | 1722 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER, pAction->type); |
| 1719 | NativeAssert::StringEqual(wzPackageId, pAction->packageProvider.pPackage->sczId); | 1723 | NativeAssert::StringEqual(wzPackageId, pAction->packageProvider.pPackage->sczId); |
| 1720 | Assert::Equal<DWORD>(action, pAction->packageProvider.action); | 1724 | Assert::Equal<DWORD>(cActions, pAction->packageProvider.pPackage->cDependencyProviders); |
| 1725 | for (DWORD i = 0; i < cActions; ++i) | ||
| 1726 | { | ||
| 1727 | const BURN_DEPENDENCY_PROVIDER* pProvider = pAction->packageProvider.pPackage->rgDependencyProviders + i; | ||
| 1728 | Assert::Equal<DWORD>(rgActions[i], fRollback ? pProvider->providerRollback : pProvider->providerExecute); | ||
| 1729 | } | ||
| 1721 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); | 1730 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); |
| 1722 | } | 1731 | } |
| 1723 | 1732 | ||
