diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-01-31 16:23:31 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-02-01 23:36:23 -0600 |
| commit | c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7 (patch) | |
| tree | 3b2675c7bd9ffa249085397a3953381df8a89281 /src | |
| parent | eae94502fe8e7ca601161360a7d31e93edc88763 (diff) | |
| download | wix-c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7.tar.gz wix-c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7.tar.bz2 wix-c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7.zip | |
Plan each dependency provider dependent individually.
Refactoring for #6510
Diffstat (limited to 'src')
| -rw-r--r-- | src/burn/engine/apply.cpp | 22 | ||||
| -rw-r--r-- | src/burn/engine/dependency.cpp | 150 | ||||
| -rw-r--r-- | src/burn/engine/dependency.h | 3 | ||||
| -rw-r--r-- | src/burn/engine/elevation.cpp | 40 | ||||
| -rw-r--r-- | src/burn/engine/elevation.h | 3 | ||||
| -rw-r--r-- | src/burn/engine/package.h | 4 | ||||
| -rw-r--r-- | src/burn/engine/plan.cpp | 9 | ||||
| -rw-r--r-- | src/burn/engine/plan.h | 1 | ||||
| -rw-r--r-- | src/burn/test/BurnUnitTest/PlanTest.cpp | 72 |
9 files changed, 195 insertions, 109 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 2168cba6..5cc63d02 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
| @@ -258,7 +258,8 @@ static HRESULT ExecutePackageProviderAction( | |||
| 258 | static HRESULT ExecuteDependencyAction( | 258 | static HRESULT ExecuteDependencyAction( |
| 259 | __in BURN_ENGINE_STATE* pEngineState, | 259 | __in BURN_ENGINE_STATE* pEngineState, |
| 260 | __in BURN_EXECUTE_ACTION* pAction, | 260 | __in BURN_EXECUTE_ACTION* pAction, |
| 261 | __in BURN_EXECUTE_CONTEXT* pContext | 261 | __in BURN_EXECUTE_CONTEXT* pContext, |
| 262 | __in BOOL fRollback | ||
| 262 | ); | 263 | ); |
| 263 | static HRESULT ExecuteMsiBeginTransaction( | 264 | static HRESULT ExecuteMsiBeginTransaction( |
| 264 | __in BURN_ENGINE_STATE* pEngineState, | 265 | __in BURN_ENGINE_STATE* pEngineState, |
| @@ -2357,7 +2358,7 @@ static HRESULT DoExecuteAction( | |||
| 2357 | break; | 2358 | break; |
| 2358 | 2359 | ||
| 2359 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: | 2360 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: |
| 2360 | hr = ExecuteDependencyAction(pEngineState, pExecuteAction, pContext); | 2361 | hr = ExecuteDependencyAction(pEngineState, pExecuteAction, pContext, FALSE); |
| 2361 | ExitOnFailure(hr, "Failed to execute dependency action."); | 2362 | ExitOnFailure(hr, "Failed to execute dependency action."); |
| 2362 | break; | 2363 | break; |
| 2363 | 2364 | ||
| @@ -2480,7 +2481,7 @@ static HRESULT DoRollbackActions( | |||
| 2480 | break; | 2481 | break; |
| 2481 | 2482 | ||
| 2482 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: | 2483 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: |
| 2483 | hr = ExecuteDependencyAction(pEngineState, pRollbackAction, pContext); | 2484 | hr = ExecuteDependencyAction(pEngineState, pRollbackAction, pContext, TRUE); |
| 2484 | IgnoreRollbackError(hr, "Failed to rollback dependency action."); | 2485 | IgnoreRollbackError(hr, "Failed to rollback dependency action."); |
| 2485 | break; | 2486 | break; |
| 2486 | 2487 | ||
| @@ -2915,26 +2916,31 @@ LExit: | |||
| 2915 | static HRESULT ExecuteDependencyAction( | 2916 | static HRESULT ExecuteDependencyAction( |
| 2916 | __in BURN_ENGINE_STATE* pEngineState, | 2917 | __in BURN_ENGINE_STATE* pEngineState, |
| 2917 | __in BURN_EXECUTE_ACTION* pAction, | 2918 | __in BURN_EXECUTE_ACTION* pAction, |
| 2918 | __in BURN_EXECUTE_CONTEXT* /*pContext*/ | 2919 | __in BURN_EXECUTE_CONTEXT* pContext, |
| 2920 | __in BOOL fRollback | ||
| 2919 | ) | 2921 | ) |
| 2920 | { | 2922 | { |
| 2921 | HRESULT hr = S_OK; | 2923 | HRESULT hr = S_OK; |
| 2922 | BURN_PACKAGE* pPackage = pAction->packageDependency.pPackage; | 2924 | BURN_PACKAGE* pPackage = pAction->packageDependency.pPackage; |
| 2923 | 2925 | ||
| 2926 | Assert(pContext->fRollback == fRollback); | ||
| 2927 | UNREFERENCED_PARAMETER(pContext); | ||
| 2928 | |||
| 2924 | if (pPackage->fPerMachine) | 2929 | if (pPackage->fPerMachine) |
| 2925 | { | 2930 | { |
| 2926 | hr = ElevationExecutePackageDependencyAction(pEngineState->companionConnection.hPipe, pAction); | 2931 | hr = ElevationExecutePackageDependencyAction(pEngineState->companionConnection.hPipe, pAction, fRollback); |
| 2927 | ExitOnFailure(hr, "Failed to register the dependency on per-machine package."); | 2932 | ExitOnFailure(hr, "Failed to register the dependency on per-machine package."); |
| 2928 | } | 2933 | } |
| 2929 | else | 2934 | else |
| 2930 | { | 2935 | { |
| 2931 | hr = DependencyExecutePackageDependencyAction(FALSE, pAction); | 2936 | hr = DependencyExecutePackageDependencyAction(FALSE, pAction, fRollback); |
| 2932 | ExitOnFailure(hr, "Failed to register the dependency on per-user package."); | 2937 | ExitOnFailure(hr, "Failed to register the dependency on per-user package."); |
| 2933 | } | 2938 | } |
| 2934 | 2939 | ||
| 2935 | if (pPackage->fCanAffectRegistration) | 2940 | if (pPackage->fCanAffectRegistration) |
| 2936 | { | 2941 | { |
| 2937 | if (BURN_DEPENDENCY_ACTION_REGISTER == pAction->packageDependency.action) | 2942 | BURN_DEPENDENCY_ACTION dependencyAction = fRollback ? pPackage->dependencyRollback : pPackage->dependencyExecute; |
| 2943 | if (BURN_DEPENDENCY_ACTION_REGISTER == dependencyAction) | ||
| 2938 | { | 2944 | { |
| 2939 | if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pPackage->cacheRegistrationState) | 2945 | if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pPackage->cacheRegistrationState) |
| 2940 | { | 2946 | { |
| @@ -2958,7 +2964,7 @@ static HRESULT ExecuteDependencyAction( | |||
| 2958 | pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT; | 2964 | pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT; |
| 2959 | } | 2965 | } |
| 2960 | } | 2966 | } |
| 2961 | else if (BURN_DEPENDENCY_ACTION_UNREGISTER == pAction->packageDependency.action) | 2967 | else if (BURN_DEPENDENCY_ACTION_UNREGISTER == dependencyAction) |
| 2962 | { | 2968 | { |
| 2963 | if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->cacheRegistrationState) | 2969 | if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->cacheRegistrationState) |
| 2964 | { | 2970 | { |
diff --git a/src/burn/engine/dependency.cpp b/src/burn/engine/dependency.cpp index 8f568f28..01f27d72 100644 --- a/src/burn/engine/dependency.cpp +++ b/src/burn/engine/dependency.cpp | |||
| @@ -72,9 +72,11 @@ static void UnregisterPackageProvider( | |||
| 72 | __in HKEY hkRoot | 72 | __in HKEY hkRoot |
| 73 | ); | 73 | ); |
| 74 | 74 | ||
| 75 | static HRESULT RegisterPackageDependency( | 75 | static HRESULT RegisterPackageProviderDependent( |
| 76 | __in BOOL fPerMachine, | 76 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, |
| 77 | __in const BURN_PACKAGE* pPackage, | 77 | __in BOOL fVital, |
| 78 | __in HKEY hkRoot, | ||
| 79 | __in LPCWSTR wzPackageId, | ||
| 78 | __in_z LPCWSTR wzDependentProviderKey | 80 | __in_z LPCWSTR wzDependentProviderKey |
| 79 | ); | 81 | ); |
| 80 | 82 | ||
| @@ -83,6 +85,13 @@ static void UnregisterPackageDependency( | |||
| 83 | __in const BURN_PACKAGE* pPackage, | 85 | __in const BURN_PACKAGE* pPackage, |
| 84 | __in_z LPCWSTR wzDependentProviderKey | 86 | __in_z LPCWSTR wzDependentProviderKey |
| 85 | ); | 87 | ); |
| 88 | |||
| 89 | static void UnregisterPackageProviderDependent( | ||
| 90 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, | ||
| 91 | __in HKEY hkRoot, | ||
| 92 | __in LPCWSTR wzPackageId, | ||
| 93 | __in_z LPCWSTR wzDependentProviderKey | ||
| 94 | ); | ||
| 86 | static void UnregisterOrphanPackageProviders( | 95 | static void UnregisterOrphanPackageProviders( |
| 87 | __in const BURN_PACKAGE* pPackage | 96 | __in const BURN_PACKAGE* pPackage |
| 88 | ); | 97 | ); |
| @@ -551,8 +560,24 @@ extern "C" HRESULT DependencyPlanPackageBegin( | |||
| 551 | } | 560 | } |
| 552 | } | 561 | } |
| 553 | 562 | ||
| 554 | pPackage->dependencyExecute = dependencyExecuteAction; | 563 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) |
| 555 | pPackage->dependencyRollback = dependencyRollbackAction; | 564 | { |
| 565 | BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | ||
| 566 | |||
| 567 | pProvider->dependentExecute = dependencyExecuteAction; | ||
| 568 | pProvider->dependentRollback = dependencyRollbackAction; | ||
| 569 | |||
| 570 | // The highest aggregate action state found will be returned. | ||
| 571 | if (pPackage->dependencyExecute < pProvider->dependentExecute) | ||
| 572 | { | ||
| 573 | pPackage->dependencyExecute = pProvider->dependentExecute; | ||
| 574 | } | ||
| 575 | |||
| 576 | if (pPackage->dependencyRollback < pProvider->dependentRollback) | ||
| 577 | { | ||
| 578 | pPackage->dependencyRollback = pProvider->dependentRollback; | ||
| 579 | } | ||
| 580 | } | ||
| 556 | 581 | ||
| 557 | LExit: | 582 | LExit: |
| 558 | ReleaseDict(sdIgnoredDependents); | 583 | ReleaseDict(sdIgnoredDependents); |
| @@ -690,23 +715,43 @@ extern "C" HRESULT DependencyExecutePackageProviderAction( | |||
| 690 | 715 | ||
| 691 | extern "C" HRESULT DependencyExecutePackageDependencyAction( | 716 | extern "C" HRESULT DependencyExecutePackageDependencyAction( |
| 692 | __in BOOL fPerMachine, | 717 | __in BOOL fPerMachine, |
| 693 | __in const BURN_EXECUTE_ACTION* pAction | 718 | __in const BURN_EXECUTE_ACTION* pAction, |
| 719 | __in BOOL fRollback | ||
| 694 | ) | 720 | ) |
| 695 | { | 721 | { |
| 696 | AssertSz(BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY == pAction->type, "Execute action type not supported by this function."); | 722 | AssertSz(BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY == pAction->type, "Execute action type not supported by this function."); |
| 697 | 723 | ||
| 698 | HRESULT hr = S_OK; | 724 | HRESULT hr = S_OK; |
| 699 | const BURN_PACKAGE* pPackage = pAction->packageDependency.pPackage; | 725 | const BURN_PACKAGE* pPackage = pAction->packageDependency.pPackage; |
| 726 | HKEY hkRoot = pPackage->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | ||
| 700 | 727 | ||
| 701 | // Register or unregister the bundle as a dependent of each package dependency provider. | 728 | // Do not register a dependency on a package in a different install context. |
| 702 | if (BURN_DEPENDENCY_ACTION_REGISTER == pAction->packageDependency.action) | 729 | if (fPerMachine != pPackage->fPerMachine) |
| 703 | { | 730 | { |
| 704 | hr = RegisterPackageDependency(fPerMachine, pPackage, pAction->packageDependency.sczBundleProviderKey); | 731 | LogId(REPORT_STANDARD, MSG_DEPENDENCY_PACKAGE_SKIP_WRONGSCOPE, pPackage->sczId, LoggingPerMachineToString(fPerMachine), LoggingPerMachineToString(pPackage->fPerMachine)); |
| 705 | ExitOnFailure(hr, "Failed to register the dependency on the package provider."); | 732 | ExitFunction1(hr = S_OK); |
| 706 | } | 733 | } |
| 707 | else if (BURN_DEPENDENCY_ACTION_UNREGISTER == pAction->packageDependency.action) | 734 | |
| 735 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) | ||
| 708 | { | 736 | { |
| 709 | UnregisterPackageDependency(fPerMachine, pPackage, pAction->packageDependency.sczBundleProviderKey); | 737 | const BURN_DEPENDENCY_PROVIDER* pProvider = pPackage->rgDependencyProviders + i; |
| 738 | BURN_DEPENDENCY_ACTION action = fRollback ? pProvider->dependentRollback : pProvider->dependentExecute; | ||
| 739 | HRESULT hrProvider = S_OK; | ||
| 740 | |||
| 741 | // Register or unregister the bundle as a dependent of the package dependency provider. | ||
| 742 | switch (action) | ||
| 743 | { | ||
| 744 | case BURN_DEPENDENCY_ACTION_REGISTER: | ||
| 745 | hrProvider = RegisterPackageProviderDependent(pProvider, pPackage->fVital, hkRoot, pPackage->sczId, pAction->packageDependency.sczBundleProviderKey); | ||
| 746 | if (SUCCEEDED(hr) && FAILED(hrProvider)) | ||
| 747 | { | ||
| 748 | hr = hrProvider; | ||
| 749 | } | ||
| 750 | break; | ||
| 751 | case BURN_DEPENDENCY_ACTION_UNREGISTER: | ||
| 752 | UnregisterPackageProviderDependent(pProvider, hkRoot, pPackage->sczId, pAction->packageDependency.sczBundleProviderKey); | ||
| 753 | break; | ||
| 754 | } | ||
| 710 | } | 755 | } |
| 711 | 756 | ||
| 712 | LExit: | 757 | LExit: |
| @@ -1262,7 +1307,6 @@ static HRESULT AddPackageDependencyActions( | |||
| 1262 | 1307 | ||
| 1263 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY; | 1308 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY; |
| 1264 | pAction->packageDependency.pPackage = const_cast<BURN_PACKAGE*>(pPackage); | 1309 | pAction->packageDependency.pPackage = const_cast<BURN_PACKAGE*>(pPackage); |
| 1265 | pAction->packageDependency.action = dependencyRollbackAction; | ||
| 1266 | 1310 | ||
| 1267 | hr = StrAllocString(&pAction->packageDependency.sczBundleProviderKey, pPlan->wzBundleProviderKey, 0); | 1311 | hr = StrAllocString(&pAction->packageDependency.sczBundleProviderKey, pPlan->wzBundleProviderKey, 0); |
| 1268 | ExitOnFailure(hr, "Failed to copy the bundle dependency provider."); | 1312 | ExitOnFailure(hr, "Failed to copy the bundle dependency provider."); |
| @@ -1294,7 +1338,6 @@ static HRESULT AddPackageDependencyActions( | |||
| 1294 | 1338 | ||
| 1295 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY; | 1339 | pAction->type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY; |
| 1296 | pAction->packageDependency.pPackage = const_cast<BURN_PACKAGE*>(pPackage); | 1340 | pAction->packageDependency.pPackage = const_cast<BURN_PACKAGE*>(pPackage); |
| 1297 | pAction->packageDependency.action = dependencyExecuteAction; | ||
| 1298 | 1341 | ||
| 1299 | hr = StrAllocString(&pAction->packageDependency.sczBundleProviderKey, pPlan->wzBundleProviderKey, 0); | 1342 | hr = StrAllocString(&pAction->packageDependency.sczBundleProviderKey, pPlan->wzBundleProviderKey, 0); |
| 1300 | ExitOnFailure(hr, "Failed to copy the bundle dependency provider."); | 1343 | ExitOnFailure(hr, "Failed to copy the bundle dependency provider."); |
| @@ -1378,48 +1421,38 @@ static void UnregisterPackageProvider( | |||
| 1378 | } | 1421 | } |
| 1379 | 1422 | ||
| 1380 | /******************************************************************** | 1423 | /******************************************************************** |
| 1381 | RegisterPackageDependency - Registers the provider key | 1424 | RegisterPackageProviderDependent - Registers the provider key |
| 1382 | as a dependent of a package. | 1425 | as a dependent of a package provider. |
| 1383 | 1426 | ||
| 1384 | *********************************************************************/ | 1427 | *********************************************************************/ |
| 1385 | static HRESULT RegisterPackageDependency( | 1428 | static HRESULT RegisterPackageProviderDependent( |
| 1386 | __in BOOL fPerMachine, | 1429 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, |
| 1387 | __in const BURN_PACKAGE* pPackage, | 1430 | __in BOOL fVital, |
| 1431 | __in HKEY hkRoot, | ||
| 1432 | __in LPCWSTR wzPackageId, | ||
| 1388 | __in_z LPCWSTR wzDependentProviderKey | 1433 | __in_z LPCWSTR wzDependentProviderKey |
| 1389 | ) | 1434 | ) |
| 1390 | { | 1435 | { |
| 1391 | HRESULT hr = S_OK; | 1436 | HRESULT hr = S_OK; |
| 1392 | HKEY hkRoot = fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | ||
| 1393 | 1437 | ||
| 1394 | // Do not register a dependency on a package in a different install context. | 1438 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_REGISTER_DEPENDENCY, wzDependentProviderKey, pProvider->sczKey, wzPackageId); |
| 1395 | if (fPerMachine != pPackage->fPerMachine) | 1439 | |
| 1440 | hr = DepRegisterDependent(hkRoot, pProvider->sczKey, wzDependentProviderKey, NULL, NULL, 0); | ||
| 1441 | if (E_FILENOTFOUND != hr) | ||
| 1396 | { | 1442 | { |
| 1397 | LogId(REPORT_STANDARD, MSG_DEPENDENCY_PACKAGE_SKIP_WRONGSCOPE, pPackage->sczId, LoggingPerMachineToString(fPerMachine), LoggingPerMachineToString(pPackage->fPerMachine)); | 1443 | ExitOnFailure(hr, "Failed to register the dependency on package dependency provider: %ls", pProvider->sczKey); |
| 1398 | ExitFunction1(hr = S_OK); | ||
| 1399 | } | 1444 | } |
| 1400 | 1445 | else | |
| 1401 | if (pPackage->rgDependencyProviders) | ||
| 1402 | { | 1446 | { |
| 1403 | for (DWORD i = 0; i < pPackage->cDependencyProviders; ++i) | 1447 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_SKIP_MISSING, pProvider->sczKey, wzPackageId); |
| 1404 | { | ||
| 1405 | const BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | ||
| 1406 | |||
| 1407 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_REGISTER_DEPENDENCY, wzDependentProviderKey, pProvider->sczKey, pPackage->sczId); | ||
| 1408 | |||
| 1409 | hr = DepRegisterDependent(hkRoot, pProvider->sczKey, wzDependentProviderKey, NULL, NULL, 0); | ||
| 1410 | if (E_FILENOTFOUND != hr || pPackage->fVital) | ||
| 1411 | { | ||
| 1412 | ExitOnFailure(hr, "Failed to register the dependency on package dependency provider: %ls", pProvider->sczKey); | ||
| 1413 | } | ||
| 1414 | else | ||
| 1415 | { | ||
| 1416 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_SKIP_MISSING, pProvider->sczKey, pPackage->sczId); | ||
| 1417 | hr = S_OK; | ||
| 1418 | } | ||
| 1419 | } | ||
| 1420 | } | 1448 | } |
| 1421 | 1449 | ||
| 1422 | LExit: | 1450 | LExit: |
| 1451 | if (!fVital) | ||
| 1452 | { | ||
| 1453 | hr = S_OK; | ||
| 1454 | } | ||
| 1455 | |||
| 1423 | return hr; | 1456 | return hr; |
| 1424 | } | 1457 | } |
| 1425 | 1458 | ||
| @@ -1434,7 +1467,6 @@ static void UnregisterPackageDependency( | |||
| 1434 | __in_z LPCWSTR wzDependentProviderKey | 1467 | __in_z LPCWSTR wzDependentProviderKey |
| 1435 | ) | 1468 | ) |
| 1436 | { | 1469 | { |
| 1437 | HRESULT hr = S_OK; | ||
| 1438 | HKEY hkRoot = fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | 1470 | HKEY hkRoot = fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| 1439 | 1471 | ||
| 1440 | // Should be no registration to remove since we don't write keys across contexts. | 1472 | // Should be no registration to remove since we don't write keys across contexts. |
| @@ -1451,19 +1483,31 @@ static void UnregisterPackageDependency( | |||
| 1451 | { | 1483 | { |
| 1452 | const BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | 1484 | const BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; |
| 1453 | 1485 | ||
| 1454 | hr = DepUnregisterDependent(hkRoot, pProvider->sczKey, wzDependentProviderKey); | 1486 | UnregisterPackageProviderDependent(pProvider, hkRoot, pPackage->sczId, wzDependentProviderKey); |
| 1455 | if (SUCCEEDED(hr)) | ||
| 1456 | { | ||
| 1457 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED_DEPENDENCY, wzDependentProviderKey, pProvider->sczKey, pPackage->sczId); | ||
| 1458 | } | ||
| 1459 | else if (FAILED(hr) && E_FILENOTFOUND != hr) | ||
| 1460 | { | ||
| 1461 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED_DEPENDENCY_FAILED, wzDependentProviderKey, pProvider->sczKey, pPackage->sczId, hr); | ||
| 1462 | } | ||
| 1463 | } | 1487 | } |
| 1464 | } | 1488 | } |
| 1465 | } | 1489 | } |
| 1466 | 1490 | ||
| 1491 | static void UnregisterPackageProviderDependent( | ||
| 1492 | __in const BURN_DEPENDENCY_PROVIDER* pProvider, | ||
| 1493 | __in HKEY hkRoot, | ||
| 1494 | __in LPCWSTR wzPackageId, | ||
| 1495 | __in_z LPCWSTR wzDependentProviderKey | ||
| 1496 | ) | ||
| 1497 | { | ||
| 1498 | HRESULT hr = S_OK; | ||
| 1499 | |||
| 1500 | hr = DepUnregisterDependent(hkRoot, pProvider->sczKey, wzDependentProviderKey); | ||
| 1501 | if (SUCCEEDED(hr)) | ||
| 1502 | { | ||
| 1503 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED_DEPENDENCY, wzDependentProviderKey, pProvider->sczKey, wzPackageId); | ||
| 1504 | } | ||
| 1505 | else if (FAILED(hr) && E_FILENOTFOUND != hr) | ||
| 1506 | { | ||
| 1507 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_PACKAGE_UNREGISTERED_DEPENDENCY_FAILED, wzDependentProviderKey, pProvider->sczKey, wzPackageId, hr); | ||
| 1508 | } | ||
| 1509 | } | ||
| 1510 | |||
| 1467 | static void UnregisterOrphanPackageProviders( | 1511 | static void UnregisterOrphanPackageProviders( |
| 1468 | __in const BURN_PACKAGE* pPackage | 1512 | __in const BURN_PACKAGE* pPackage |
| 1469 | ) | 1513 | ) |
diff --git a/src/burn/engine/dependency.h b/src/burn/engine/dependency.h index 0e558554..b5e4050f 100644 --- a/src/burn/engine/dependency.h +++ b/src/burn/engine/dependency.h | |||
| @@ -161,7 +161,8 @@ HRESULT DependencyExecutePackageProviderAction( | |||
| 161 | *********************************************************************/ | 161 | *********************************************************************/ |
| 162 | HRESULT DependencyExecutePackageDependencyAction( | 162 | HRESULT DependencyExecutePackageDependencyAction( |
| 163 | __in BOOL fPerMachine, | 163 | __in BOOL fPerMachine, |
| 164 | __in const BURN_EXECUTE_ACTION* pAction | 164 | __in const BURN_EXECUTE_ACTION* pAction, |
| 165 | __in BOOL fRollback | ||
| 165 | ); | 166 | ); |
| 166 | 167 | ||
| 167 | /******************************************************************** | 168 | /******************************************************************** |
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp index 75679acd..86b65cf9 100644 --- a/src/burn/engine/elevation.cpp +++ b/src/burn/engine/elevation.cpp | |||
| @@ -1346,7 +1346,8 @@ LExit: | |||
| 1346 | 1346 | ||
| 1347 | extern "C" HRESULT ElevationExecutePackageDependencyAction( | 1347 | extern "C" HRESULT ElevationExecutePackageDependencyAction( |
| 1348 | __in HANDLE hPipe, | 1348 | __in HANDLE hPipe, |
| 1349 | __in BURN_EXECUTE_ACTION* pExecuteAction | 1349 | __in BURN_EXECUTE_ACTION* pExecuteAction, |
| 1350 | __in BOOL fRollback | ||
| 1350 | ) | 1351 | ) |
| 1351 | { | 1352 | { |
| 1352 | HRESULT hr = S_OK; | 1353 | HRESULT hr = S_OK; |
| @@ -1359,11 +1360,20 @@ extern "C" HRESULT ElevationExecutePackageDependencyAction( | |||
| 1359 | hr = BuffWriteString(&pbData, &cbData, pExecuteAction->packageDependency.pPackage->sczId); | 1360 | hr = BuffWriteString(&pbData, &cbData, pExecuteAction->packageDependency.pPackage->sczId); |
| 1360 | ExitOnFailure(hr, "Failed to write package id to message buffer."); | 1361 | ExitOnFailure(hr, "Failed to write package id to message buffer."); |
| 1361 | 1362 | ||
| 1363 | hr = BuffWriteNumber(&pbData, &cbData, (DWORD)fRollback); | ||
| 1364 | ExitOnFailure(hr, "Failed to write rollback flag to message buffer."); | ||
| 1365 | |||
| 1362 | hr = BuffWriteString(&pbData, &cbData, pExecuteAction->packageDependency.sczBundleProviderKey); | 1366 | hr = BuffWriteString(&pbData, &cbData, pExecuteAction->packageDependency.sczBundleProviderKey); |
| 1363 | ExitOnFailure(hr, "Failed to write bundle dependency key to message buffer."); | 1367 | ExitOnFailure(hr, "Failed to write bundle dependency key to message buffer."); |
| 1364 | 1368 | ||
| 1365 | hr = BuffWriteNumber(&pbData, &cbData, pExecuteAction->packageDependency.action); | 1369 | // Dependent actions. |
| 1366 | ExitOnFailure(hr, "Failed to write action to message buffer."); | 1370 | for (DWORD i = 0; i < pExecuteAction->packageProvider.pPackage->cDependencyProviders; ++i) |
| 1371 | { | ||
| 1372 | BURN_DEPENDENCY_PROVIDER* pProvider = pExecuteAction->packageProvider.pPackage->rgDependencyProviders + i; | ||
| 1373 | BURN_DEPENDENCY_ACTION* pAction = fRollback ? &pProvider->dependentRollback : &pProvider->dependentExecute; | ||
| 1374 | hr = BuffWriteNumber(&pbData, &cbData, (DWORD)*pAction); | ||
| 1375 | ExitOnFailure(hr, "Failed to write dependent action to message buffer."); | ||
| 1376 | } | ||
| 1367 | 1377 | ||
| 1368 | // Send the message. | 1378 | // Send the message. |
| 1369 | hr = PipeSendMessage(hPipe, BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PACKAGE_DEPENDENCY, pbData, cbData, NULL, NULL, &dwResult); | 1379 | hr = PipeSendMessage(hPipe, BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PACKAGE_DEPENDENCY, pbData, cbData, NULL, NULL, &dwResult); |
| @@ -3260,6 +3270,7 @@ static HRESULT OnExecutePackageDependencyAction( | |||
| 3260 | HRESULT hr = S_OK; | 3270 | HRESULT hr = S_OK; |
| 3261 | SIZE_T iData = 0; | 3271 | SIZE_T iData = 0; |
| 3262 | LPWSTR sczPackage = NULL; | 3272 | LPWSTR sczPackage = NULL; |
| 3273 | BOOL fRollback = FALSE; | ||
| 3263 | BURN_EXECUTE_ACTION executeAction = { }; | 3274 | BURN_EXECUTE_ACTION executeAction = { }; |
| 3264 | 3275 | ||
| 3265 | executeAction.type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY; | 3276 | executeAction.type = BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY; |
| @@ -3268,12 +3279,6 @@ static HRESULT OnExecutePackageDependencyAction( | |||
| 3268 | hr = BuffReadString(pbData, cbData, &iData, &sczPackage); | 3279 | hr = BuffReadString(pbData, cbData, &iData, &sczPackage); |
| 3269 | ExitOnFailure(hr, "Failed to read package id from message buffer."); | 3280 | ExitOnFailure(hr, "Failed to read package id from message buffer."); |
| 3270 | 3281 | ||
| 3271 | hr = BuffReadString(pbData, cbData, &iData, &executeAction.packageDependency.sczBundleProviderKey); | ||
| 3272 | ExitOnFailure(hr, "Failed to read bundle dependency key from message buffer."); | ||
| 3273 | |||
| 3274 | hr = BuffReadNumber(pbData, cbData, &iData, reinterpret_cast<DWORD*>(&executeAction.packageDependency.action)); | ||
| 3275 | ExitOnFailure(hr, "Failed to read action."); | ||
| 3276 | |||
| 3277 | // Find the package again. | 3282 | // Find the package again. |
| 3278 | hr = PackageFindById(pPackages, sczPackage, &executeAction.packageDependency.pPackage); | 3283 | hr = PackageFindById(pPackages, sczPackage, &executeAction.packageDependency.pPackage); |
| 3279 | if (E_NOTFOUND == hr) | 3284 | if (E_NOTFOUND == hr) |
| @@ -3282,8 +3287,23 @@ static HRESULT OnExecutePackageDependencyAction( | |||
| 3282 | } | 3287 | } |
| 3283 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3288 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3284 | 3289 | ||
| 3290 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&fRollback); | ||
| 3291 | ExitOnFailure(hr, "Failed to read rollback flag."); | ||
| 3292 | |||
| 3293 | hr = BuffReadString(pbData, cbData, &iData, &executeAction.packageDependency.sczBundleProviderKey); | ||
| 3294 | ExitOnFailure(hr, "Failed to read bundle dependency key from message buffer."); | ||
| 3295 | |||
| 3296 | // Read dependent actions. | ||
| 3297 | for (DWORD i = 0; i < executeAction.packageProvider.pPackage->cDependencyProviders; ++i) | ||
| 3298 | { | ||
| 3299 | BURN_DEPENDENCY_PROVIDER* pProvider = executeAction.packageProvider.pPackage->rgDependencyProviders + i; | ||
| 3300 | BURN_DEPENDENCY_ACTION* pAction = fRollback ? &pProvider->dependentRollback : &pProvider->dependentExecute; | ||
| 3301 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)pAction); | ||
| 3302 | ExitOnFailure(hr, "Failed to read dependent action."); | ||
| 3303 | } | ||
| 3304 | |||
| 3285 | // Execute the package dependency action. | 3305 | // Execute the package dependency action. |
| 3286 | hr = DependencyExecutePackageDependencyAction(TRUE, &executeAction); | 3306 | hr = DependencyExecutePackageDependencyAction(TRUE, &executeAction, fRollback); |
| 3287 | ExitOnFailure(hr, "Failed to execute package dependency action."); | 3307 | ExitOnFailure(hr, "Failed to execute package dependency action."); |
| 3288 | 3308 | ||
| 3289 | LExit: | 3309 | LExit: |
diff --git a/src/burn/engine/elevation.h b/src/burn/engine/elevation.h index f5b56f02..c2fa0627 100644 --- a/src/burn/engine/elevation.h +++ b/src/burn/engine/elevation.h | |||
| @@ -144,7 +144,8 @@ HRESULT ElevationExecutePackageProviderAction( | |||
| 144 | ); | 144 | ); |
| 145 | HRESULT ElevationExecutePackageDependencyAction( | 145 | HRESULT ElevationExecutePackageDependencyAction( |
| 146 | __in HANDLE hPipe, | 146 | __in HANDLE hPipe, |
| 147 | __in BURN_EXECUTE_ACTION* pExecuteAction | 147 | __in BURN_EXECUTE_ACTION* pExecuteAction, |
| 148 | __in BOOL fRollback | ||
| 148 | ); | 149 | ); |
| 149 | HRESULT ElevationCleanCompatiblePackage( | 150 | HRESULT ElevationCleanCompatiblePackage( |
| 150 | __in HANDLE hPipe, | 151 | __in HANDLE hPipe, |
diff --git a/src/burn/engine/package.h b/src/burn/engine/package.h index 6fae0c10..38be2098 100644 --- a/src/burn/engine/package.h +++ b/src/burn/engine/package.h | |||
| @@ -45,8 +45,8 @@ enum BURN_PACKAGE_TYPE | |||
| 45 | enum BURN_DEPENDENCY_ACTION | 45 | enum BURN_DEPENDENCY_ACTION |
| 46 | { | 46 | { |
| 47 | BURN_DEPENDENCY_ACTION_NONE, | 47 | BURN_DEPENDENCY_ACTION_NONE, |
| 48 | BURN_DEPENDENCY_ACTION_REGISTER, | ||
| 49 | BURN_DEPENDENCY_ACTION_UNREGISTER, | 48 | BURN_DEPENDENCY_ACTION_UNREGISTER, |
| 49 | BURN_DEPENDENCY_ACTION_REGISTER, | ||
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | enum BURN_PATCH_TARGETCODE_TYPE | 52 | enum BURN_PATCH_TARGETCODE_TYPE |
| @@ -196,6 +196,8 @@ typedef struct _BURN_DEPENDENCY_PROVIDER | |||
| 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 | 198 | ||
| 199 | BURN_DEPENDENCY_ACTION dependentExecute; // only valid during Plan. | ||
| 200 | BURN_DEPENDENCY_ACTION dependentRollback; // only valid during Plan. | ||
| 199 | BURN_DEPENDENCY_ACTION providerExecute; // only valid during Plan. | 201 | BURN_DEPENDENCY_ACTION providerExecute; // only valid during Plan. |
| 200 | BURN_DEPENDENCY_ACTION providerRollback; // only valid during Plan. | 202 | BURN_DEPENDENCY_ACTION providerRollback; // only valid during Plan. |
| 201 | } BURN_DEPENDENCY_PROVIDER; | 203 | } BURN_DEPENDENCY_PROVIDER; |
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp index 27eee3fb..812dcd15 100644 --- a/src/burn/engine/plan.cpp +++ b/src/burn/engine/plan.cpp | |||
| @@ -1973,6 +1973,8 @@ static void ResetPlannedPackageState( | |||
| 1973 | { | 1973 | { |
| 1974 | BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; | 1974 | BURN_DEPENDENCY_PROVIDER* pProvider = &pPackage->rgDependencyProviders[i]; |
| 1975 | 1975 | ||
| 1976 | pProvider->dependentExecute = BURN_DEPENDENCY_ACTION_NONE; | ||
| 1977 | pProvider->dependentRollback = BURN_DEPENDENCY_ACTION_NONE; | ||
| 1976 | pProvider->providerExecute = BURN_DEPENDENCY_ACTION_NONE; | 1978 | pProvider->providerExecute = BURN_DEPENDENCY_ACTION_NONE; |
| 1977 | pProvider->providerRollback = BURN_DEPENDENCY_ACTION_NONE; | 1979 | pProvider->providerRollback = BURN_DEPENDENCY_ACTION_NONE; |
| 1978 | } | 1980 | } |
| @@ -2654,7 +2656,12 @@ static void ExecuteActionLog( | |||
| 2654 | break; | 2656 | break; |
| 2655 | 2657 | ||
| 2656 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: | 2658 | case BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY: |
| 2657 | LogStringLine(PlanDumpLevel, "%ls action[%u]: PACKAGE_DEPENDENCY package id: %ls, bundle provider key: %ls, action: %hs", wzBase, iAction, pAction->packageDependency.pPackage->sczId, pAction->packageDependency.sczBundleProviderKey, LoggingDependencyActionToString(pAction->packageDependency.action)); | 2659 | LogStringLine(PlanDumpLevel, "%ls action[%u]: PACKAGE_DEPENDENCY package id: %ls, bundle provider key: %ls", wzBase, iAction, pAction->packageDependency.pPackage->sczId, pAction->packageDependency.sczBundleProviderKey); |
| 2660 | for (DWORD j = 0; j < pAction->packageProvider.pPackage->cDependencyProviders; ++j) | ||
| 2661 | { | ||
| 2662 | const BURN_DEPENDENCY_PROVIDER* pProvider = pAction->packageProvider.pPackage->rgDependencyProviders + j; | ||
| 2663 | LogStringLine(PlanDumpLevel, " Provider[%u]: key: %ls, action: %hs", j, pProvider->sczKey, LoggingDependencyActionToString(fRollback ? pProvider->dependentRollback : pProvider->dependentExecute)); | ||
| 2664 | } | ||
| 2658 | break; | 2665 | break; |
| 2659 | 2666 | ||
| 2660 | case BURN_EXECUTE_ACTION_TYPE_RELATED_BUNDLE: | 2667 | case BURN_EXECUTE_ACTION_TYPE_RELATED_BUNDLE: |
diff --git a/src/burn/engine/plan.h b/src/burn/engine/plan.h index 61953168..3e5ab159 100644 --- a/src/burn/engine/plan.h +++ b/src/burn/engine/plan.h | |||
| @@ -213,7 +213,6 @@ typedef struct _BURN_EXECUTE_ACTION | |||
| 213 | { | 213 | { |
| 214 | BURN_PACKAGE* pPackage; | 214 | BURN_PACKAGE* pPackage; |
| 215 | LPWSTR sczBundleProviderKey; | 215 | LPWSTR sczBundleProviderKey; |
| 216 | BURN_DEPENDENCY_ACTION action; | ||
| 217 | } packageDependency; | 216 | } packageDependency; |
| 218 | struct | 217 | struct |
| 219 | { | 218 | { |
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp index d5926694..1c390782 100644 --- a/src/burn/test/BurnUnitTest/PlanTest.cpp +++ b/src/burn/test/BurnUnitTest/PlanTest.cpp | |||
| @@ -97,7 +97,7 @@ namespace Bootstrapper | |||
| 97 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 97 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 99 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 99 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 100 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 100 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", registerActions1, 1); |
| 101 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 101 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 102 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 102 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 103 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 103 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -111,7 +111,7 @@ namespace Bootstrapper | |||
| 111 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", registerActions1, 1); | 111 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", registerActions1, 1); |
| 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); | 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); |
| 113 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 113 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 114 | 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}", registerActions1, 1); |
| 115 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 115 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 116 | dwExecuteCheckpointId += 1; // cache checkpoints | 116 | dwExecuteCheckpointId += 1; // cache checkpoints |
| 117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -120,7 +120,7 @@ namespace Bootstrapper | |||
| 120 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", registerActions1, 1); | 120 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", registerActions1, 1); |
| 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); | 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); |
| 122 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 122 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 123 | 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}", registerActions1, 1); |
| 124 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 124 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 125 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 125 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| 126 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 126 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -138,7 +138,7 @@ namespace Bootstrapper | |||
| 138 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 138 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 140 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 140 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 141 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 141 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", unregisterActions1, 1); |
| 142 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 142 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 143 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 143 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 144 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 144 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -150,7 +150,7 @@ namespace Bootstrapper | |||
| 150 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 150 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 151 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", unregisterActions1, 1); | 151 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", unregisterActions1, 1); |
| 152 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 152 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 153 | 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}", unregisterActions1, 1); |
| 154 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 154 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 155 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 155 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 156 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); | 156 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); |
| @@ -158,7 +158,7 @@ namespace Bootstrapper | |||
| 158 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 158 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 159 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", unregisterActions1, 1); | 159 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", unregisterActions1, 1); |
| 160 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 160 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 161 | 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}", unregisterActions1, 1); |
| 162 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 162 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 163 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 163 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 164 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 164 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -218,13 +218,13 @@ namespace Bootstrapper | |||
| 218 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 218 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 219 | ValidateExecuteBeginMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 219 | ValidateExecuteBeginMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| 220 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 220 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 221 | 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}", unregisterActions1, 1); |
| 222 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 222 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 223 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", unregisterActions1, 1); | 223 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", unregisterActions1, 1); |
| 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); | 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); |
| 225 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 225 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 226 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 226 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 227 | 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}", unregisterActions1, 1); |
| 228 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 228 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 229 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", unregisterActions1, 1); | 229 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", unregisterActions1, 1); |
| 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); | 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); |
| @@ -234,7 +234,7 @@ namespace Bootstrapper | |||
| 234 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 234 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| 235 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 235 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 236 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 236 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 237 | 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}", unregisterActions1, 1); |
| 238 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 238 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 239 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); | 239 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 240 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 240 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -249,12 +249,12 @@ namespace Bootstrapper | |||
| 249 | dwExecuteCheckpointId = 1; | 249 | dwExecuteCheckpointId = 1; |
| 250 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | 250 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); |
| 251 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 251 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 252 | 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}", registerActions1, 1); |
| 253 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 253 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 254 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", registerActions1, 1); | 254 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageC", registerActions1, 1); |
| 255 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 255 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 256 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 256 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 257 | 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}", registerActions1, 1); |
| 258 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 258 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 259 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", registerActions1, 1); | 259 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageB", registerActions1, 1); |
| 260 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 260 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -262,7 +262,7 @@ namespace Bootstrapper | |||
| 262 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 262 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 263 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 263 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| 264 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 264 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 265 | 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}", registerActions1, 1); |
| 266 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 266 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 267 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); | 267 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 268 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 268 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -329,7 +329,7 @@ namespace Bootstrapper | |||
| 329 | dwIndex = 0; | 329 | dwIndex = 0; |
| 330 | DWORD dwExecuteCheckpointId = 1; | 330 | DWORD dwExecuteCheckpointId = 1; |
| 331 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 331 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 332 | 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}", unregisterActions1, 1); |
| 333 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); | 333 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 334 | ValidateUninstallMsiCompatiblePackage(pPlan, fRollback, dwIndex++, L"PackageA", 0); | 334 | ValidateUninstallMsiCompatiblePackage(pPlan, fRollback, dwIndex++, L"PackageA", 0); |
| 335 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 335 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -411,7 +411,7 @@ namespace Bootstrapper | |||
| 411 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 411 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 413 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 413 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 414 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 414 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1); |
| 415 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 415 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 416 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 416 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 417 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 417 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -427,7 +427,7 @@ namespace Bootstrapper | |||
| 427 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 427 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 429 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 429 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 430 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 430 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1); |
| 431 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 431 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 432 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 432 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 433 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 433 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -561,7 +561,7 @@ namespace Bootstrapper | |||
| 561 | dwIndex = 0; | 561 | dwIndex = 0; |
| 562 | DWORD dwExecuteCheckpointId = 1; | 562 | DWORD dwExecuteCheckpointId = 1; |
| 563 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 563 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 564 | 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}", unregisterActions1, 1); |
| 565 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); | 565 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 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); | 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); |
| 567 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 567 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -642,7 +642,7 @@ namespace Bootstrapper | |||
| 642 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 642 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 643 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); | 643 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 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); | 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); |
| 645 | 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}", registerActions1, 1); |
| 646 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 646 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 647 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 647 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 648 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 648 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -720,7 +720,7 @@ namespace Bootstrapper | |||
| 720 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 720 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 722 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 722 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 723 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 723 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1); |
| 724 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 724 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 725 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 725 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 726 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 726 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -737,7 +737,7 @@ namespace Bootstrapper | |||
| 737 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 737 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 739 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 739 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 740 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 740 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1); |
| 741 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 741 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 742 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 742 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 743 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 743 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -855,7 +855,7 @@ namespace Bootstrapper | |||
| 855 | DWORD dwExecuteCheckpointId = 1; | 855 | DWORD dwExecuteCheckpointId = 1; |
| 856 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 856 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 857 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 857 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 858 | 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}", unregisterActions1, 1); |
| 859 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 859 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 860 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); | 860 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 861 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 861 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -869,7 +869,7 @@ namespace Bootstrapper | |||
| 869 | dwIndex = 0; | 869 | dwIndex = 0; |
| 870 | dwExecuteCheckpointId = 1; | 870 | dwExecuteCheckpointId = 1; |
| 871 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 871 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 872 | 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}", registerActions1, 1); |
| 873 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 873 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 874 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); | 874 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 875 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 875 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -930,7 +930,7 @@ namespace Bootstrapper | |||
| 930 | DWORD dwExecuteCheckpointId = 1; | 930 | DWORD dwExecuteCheckpointId = 1; |
| 931 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 931 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 932 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 932 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 933 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 933 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1); |
| 934 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 934 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 935 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 935 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 936 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 936 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -940,7 +940,7 @@ namespace Bootstrapper | |||
| 940 | dwIndex = 0; | 940 | dwIndex = 0; |
| 941 | dwExecuteCheckpointId = 1; | 941 | dwExecuteCheckpointId = 1; |
| 942 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 942 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 943 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 943 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1); |
| 944 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 944 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 945 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 945 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 946 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 946 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1018,14 +1018,14 @@ namespace Bootstrapper | |||
| 1018 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1018 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 1020 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1020 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1021 | 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}", registerActions1, 1); |
| 1022 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1022 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1023 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1023 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1024 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); | 1024 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); |
| 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); | 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); |
| 1026 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1026 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1027 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1027 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1028 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); | 1028 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); |
| 1029 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1029 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1030 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1030 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1031 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | 1031 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| @@ -1044,14 +1044,14 @@ namespace Bootstrapper | |||
| 1044 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1044 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 1046 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1046 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1047 | 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}", unregisterActions1, 1); |
| 1048 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1048 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1049 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1049 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1050 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); | 1050 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); |
| 1051 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1051 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 1053 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1053 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1054 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 1054 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1); |
| 1055 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1055 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1056 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1056 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1057 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1057 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1109,14 +1109,14 @@ namespace Bootstrapper | |||
| 1109 | BURN_EXECUTE_ACTION* pExecuteAction = NULL; | 1109 | BURN_EXECUTE_ACTION* pExecuteAction = NULL; |
| 1110 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 1110 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 1111 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1111 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1112 | 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}", unregisterActions1, 1); |
| 1113 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1113 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1114 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); | 1114 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); |
| 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); | 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); |
| 1116 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1116 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1118 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1118 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1119 | 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}", unregisterActions1, 1); |
| 1120 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1120 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1121 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); | 1121 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); |
| 1122 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1122 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1130,14 +1130,14 @@ namespace Bootstrapper | |||
| 1130 | dwIndex = 0; | 1130 | dwIndex = 0; |
| 1131 | dwExecuteCheckpointId = 1; | 1131 | dwExecuteCheckpointId = 1; |
| 1132 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 1132 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 1133 | 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}", registerActions1, 1); |
| 1134 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1134 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1135 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); | 1135 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); |
| 1136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 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); | 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); |
| 1138 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 1138 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 1139 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1139 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1140 | 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}", registerActions1, 1); |
| 1141 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1141 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 1142 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); | 1142 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); |
| 1143 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 1143 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -1698,14 +1698,20 @@ namespace Bootstrapper | |||
| 1698 | __in DWORD dwIndex, | 1698 | __in DWORD dwIndex, |
| 1699 | __in LPCWSTR wzPackageId, | 1699 | __in LPCWSTR wzPackageId, |
| 1700 | __in LPCWSTR wzBundleProviderKey, | 1700 | __in LPCWSTR wzBundleProviderKey, |
| 1701 | __in BURN_DEPENDENCY_ACTION action | 1701 | __in BURN_DEPENDENCY_ACTION* rgActions, |
| 1702 | __in DWORD cActions | ||
| 1702 | ) | 1703 | ) |
| 1703 | { | 1704 | { |
| 1704 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); | 1705 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); |
| 1705 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY, pAction->type); | 1706 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY, pAction->type); |
| 1706 | NativeAssert::StringEqual(wzPackageId, pAction->packageDependency.pPackage->sczId); | 1707 | NativeAssert::StringEqual(wzPackageId, pAction->packageDependency.pPackage->sczId); |
| 1707 | NativeAssert::StringEqual(wzBundleProviderKey, pAction->packageDependency.sczBundleProviderKey); | 1708 | NativeAssert::StringEqual(wzBundleProviderKey, pAction->packageDependency.sczBundleProviderKey); |
| 1708 | Assert::Equal<DWORD>(action, pAction->packageDependency.action); | 1709 | Assert::Equal<DWORD>(cActions, pAction->packageProvider.pPackage->cDependencyProviders); |
| 1710 | for (DWORD i = 0; i < cActions; ++i) | ||
| 1711 | { | ||
| 1712 | const BURN_DEPENDENCY_PROVIDER* pProvider = pAction->packageProvider.pPackage->rgDependencyProviders + i; | ||
| 1713 | Assert::Equal<DWORD>(rgActions[i], fRollback ? pProvider->dependentRollback : pProvider->dependentExecute); | ||
| 1714 | } | ||
| 1709 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); | 1715 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); |
| 1710 | } | 1716 | } |
| 1711 | 1717 | ||
