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