aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-01-31 16:23:31 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-02-01 23:36:23 -0600
commitc95c41151d595f4630c4c2f4aeb4c7f9a97af5c7 (patch)
tree3b2675c7bd9ffa249085397a3953381df8a89281
parenteae94502fe8e7ca601161360a7d31e93edc88763 (diff)
downloadwix-c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7.tar.gz
wix-c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7.tar.bz2
wix-c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7.zip
Plan each dependency provider dependent individually.
Refactoring for #6510
-rw-r--r--src/burn/engine/apply.cpp22
-rw-r--r--src/burn/engine/dependency.cpp150
-rw-r--r--src/burn/engine/dependency.h3
-rw-r--r--src/burn/engine/elevation.cpp40
-rw-r--r--src/burn/engine/elevation.h3
-rw-r--r--src/burn/engine/package.h4
-rw-r--r--src/burn/engine/plan.cpp9
-rw-r--r--src/burn/engine/plan.h1
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp72
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(
258static HRESULT ExecuteDependencyAction( 258static 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 );
263static HRESULT ExecuteMsiBeginTransaction( 264static 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:
2915static HRESULT ExecuteDependencyAction( 2916static 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
75static HRESULT RegisterPackageDependency( 75static 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
89static void UnregisterPackageProviderDependent(
90 __in const BURN_DEPENDENCY_PROVIDER* pProvider,
91 __in HKEY hkRoot,
92 __in LPCWSTR wzPackageId,
93 __in_z LPCWSTR wzDependentProviderKey
94 );
86static void UnregisterOrphanPackageProviders( 95static 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
557LExit: 582LExit:
558 ReleaseDict(sdIgnoredDependents); 583 ReleaseDict(sdIgnoredDependents);
@@ -690,23 +715,43 @@ extern "C" HRESULT DependencyExecutePackageProviderAction(
690 715
691extern "C" HRESULT DependencyExecutePackageDependencyAction( 716extern "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
712LExit: 757LExit:
@@ -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*********************************************************************/
1385static HRESULT RegisterPackageDependency( 1428static 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
1422LExit: 1450LExit:
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
1491static 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
1467static void UnregisterOrphanPackageProviders( 1511static 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*********************************************************************/
162HRESULT DependencyExecutePackageDependencyAction( 162HRESULT 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
1347extern "C" HRESULT ElevationExecutePackageDependencyAction( 1347extern "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
3289LExit: 3309LExit:
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 );
145HRESULT ElevationExecutePackageDependencyAction( 145HRESULT 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 );
149HRESULT ElevationCleanCompatiblePackage( 150HRESULT 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
45enum BURN_DEPENDENCY_ACTION 45enum 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
52enum BURN_PATCH_TARGETCODE_TYPE 52enum 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