diff options
Diffstat (limited to '')
68 files changed, 1638 insertions, 412 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index e4e76a6c..68aded71 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
| @@ -632,7 +632,7 @@ extern "C" HRESULT ApplyCache( | |||
| 632 | { | 632 | { |
| 633 | hr = ElevationCachePreparePackage(hPipe, pPackage); | 633 | hr = ElevationCachePreparePackage(hPipe, pPackage); |
| 634 | } | 634 | } |
| 635 | LogExitOnFailure(hr, MSG_CACHE_PREPARE_PACKAGE_FAILED, "Cache prepare package failed: %ls", pPackage->sczId, NULL, NULL); | 635 | LogExitOnFailure(hr, MSG_CACHE_PREPARE_PACKAGE_FAILED, "Cache prepare package failed: %ls", pPackage->sczId); |
| 636 | } | 636 | } |
| 637 | 637 | ||
| 638 | hr = ApplyCachePackage(&cacheContext, pPackage); | 638 | hr = ApplyCachePackage(&cacheContext, pPackage); |
diff --git a/src/burn/engine/baengine.cpp b/src/burn/engine/baengine.cpp index d1704ad9..e48f71c0 100644 --- a/src/burn/engine/baengine.cpp +++ b/src/burn/engine/baengine.cpp | |||
| @@ -1134,12 +1134,15 @@ static HRESULT BAEnginePlan( | |||
| 1134 | hr = BuffReaderReadNumber(pReaderArgs, reinterpret_cast<DWORD*>(&args.action)); | 1134 | hr = BuffReaderReadNumber(pReaderArgs, reinterpret_cast<DWORD*>(&args.action)); |
| 1135 | ExitOnFailure(hr, "Failed to read plan action of BAEnginePlan args."); | 1135 | ExitOnFailure(hr, "Failed to read plan action of BAEnginePlan args."); |
| 1136 | 1136 | ||
| 1137 | hr = BuffReaderReadNumber(pReaderArgs, reinterpret_cast<DWORD*>(&args.plannedScope)); | ||
| 1138 | ExitOnFailure(hr, "Failed to read plan scope of BAEnginePlan args."); | ||
| 1139 | |||
| 1137 | // Read results. | 1140 | // Read results. |
| 1138 | hr = BuffReaderReadNumber(pReaderResults, &results.dwApiVersion); | 1141 | hr = BuffReaderReadNumber(pReaderResults, &results.dwApiVersion); |
| 1139 | ExitOnFailure(hr, "Failed to read API version of BAEnginePlan results."); | 1142 | ExitOnFailure(hr, "Failed to read API version of BAEnginePlan results."); |
| 1140 | 1143 | ||
| 1141 | // Execute. | 1144 | // Execute. |
| 1142 | hr = ExternalEnginePlan(pContext, args.action); | 1145 | hr = ExternalEnginePlan(pContext, args.action, args.plannedScope); |
| 1143 | ExitOnFailure(hr, "Failed to plan in the engine."); | 1146 | ExitOnFailure(hr, "Failed to plan in the engine."); |
| 1144 | 1147 | ||
| 1145 | // Pack result. | 1148 | // Pack result. |
diff --git a/src/burn/engine/baengine.h b/src/burn/engine/baengine.h index 97cfea9c..39e5ae0b 100644 --- a/src/burn/engine/baengine.h +++ b/src/burn/engine/baengine.h | |||
| @@ -31,6 +31,7 @@ typedef struct _BAENGINE_ACTION | |||
| 31 | struct | 31 | struct |
| 32 | { | 32 | { |
| 33 | BOOTSTRAPPER_ACTION action; | 33 | BOOTSTRAPPER_ACTION action; |
| 34 | BOOTSTRAPPER_SCOPE plannedScope; | ||
| 34 | } plan; | 35 | } plan; |
| 35 | struct | 36 | struct |
| 36 | { | 37 | { |
diff --git a/src/burn/engine/cache.cpp b/src/burn/engine/cache.cpp index c85a1be4..21bd42be 100644 --- a/src/burn/engine/cache.cpp +++ b/src/burn/engine/cache.cpp | |||
| @@ -36,8 +36,8 @@ static HRESULT SecurePerMachineCacheRoot( | |||
| 36 | static HRESULT CreateCompletedPath( | 36 | static HRESULT CreateCompletedPath( |
| 37 | __in BURN_CACHE* pCache, | 37 | __in BURN_CACHE* pCache, |
| 38 | __in BOOL fPerMachine, | 38 | __in BOOL fPerMachine, |
| 39 | __in LPCWSTR wzCacheId, | 39 | __in_z LPCWSTR wzId, |
| 40 | __in LPCWSTR wzFilePath, | 40 | __in_z_opt LPCWSTR wzFilePath, |
| 41 | __out_z LPWSTR* psczCachePath | 41 | __out_z LPWSTR* psczCachePath |
| 42 | ); | 42 | ); |
| 43 | static HRESULT CreateUnverifiedPath( | 43 | static HRESULT CreateUnverifiedPath( |
| @@ -1658,8 +1658,8 @@ LExit: | |||
| 1658 | static HRESULT CreateCompletedPath( | 1658 | static HRESULT CreateCompletedPath( |
| 1659 | __in BURN_CACHE* pCache, | 1659 | __in BURN_CACHE* pCache, |
| 1660 | __in BOOL fPerMachine, | 1660 | __in BOOL fPerMachine, |
| 1661 | __in LPCWSTR wzId, | 1661 | __in_z LPCWSTR wzId, |
| 1662 | __in LPCWSTR wzFilePath, | 1662 | __in_z_opt LPCWSTR wzFilePath, |
| 1663 | __out_z LPWSTR* psczCachePath | 1663 | __out_z LPWSTR* psczCachePath |
| 1664 | ) | 1664 | ) |
| 1665 | { | 1665 | { |
diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp index 2dfa4857..7937bd65 100644 --- a/src/burn/engine/core.cpp +++ b/src/burn/engine/core.cpp | |||
| @@ -379,7 +379,7 @@ extern "C" HRESULT CoreDetect( | |||
| 379 | pEngineState->registration.fEligibleForCleanup = FALSE; | 379 | pEngineState->registration.fEligibleForCleanup = FALSE; |
| 380 | } | 380 | } |
| 381 | 381 | ||
| 382 | LogId(REPORT_STANDARD, MSG_DETECTED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingBoolToString(pPackage->fCached), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->installRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->cacheRegistrationState)); | 382 | LogId(REPORT_STANDARD, MSG_DETECTED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingBoolToString(pPackage->fCached), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->installRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->cacheRegistrationState), LoggingPackageScopeToString(pPackage->scope)); |
| 383 | 383 | ||
| 384 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) | 384 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) |
| 385 | { | 385 | { |
| @@ -424,8 +424,9 @@ LExit: | |||
| 424 | 424 | ||
| 425 | extern "C" HRESULT CorePlan( | 425 | extern "C" HRESULT CorePlan( |
| 426 | __in BURN_ENGINE_STATE* pEngineState, | 426 | __in BURN_ENGINE_STATE* pEngineState, |
| 427 | __in BOOTSTRAPPER_ACTION action | 427 | __in BOOTSTRAPPER_ACTION action, |
| 428 | ) | 428 | __in BOOTSTRAPPER_SCOPE plannedScope |
| 429 | ) | ||
| 429 | { | 430 | { |
| 430 | HRESULT hr = S_OK; | 431 | HRESULT hr = S_OK; |
| 431 | BOOL fPlanBegan = FALSE; | 432 | BOOL fPlanBegan = FALSE; |
| @@ -433,7 +434,7 @@ extern "C" HRESULT CorePlan( | |||
| 433 | BURN_PACKAGE* pForwardCompatibleBundlePackage = NULL; | 434 | BURN_PACKAGE* pForwardCompatibleBundlePackage = NULL; |
| 434 | BOOL fContinuePlanning = TRUE; // assume we won't skip planning due to dependencies. | 435 | BOOL fContinuePlanning = TRUE; // assume we won't skip planning due to dependencies. |
| 435 | 436 | ||
| 436 | LogId(REPORT_STANDARD, MSG_PLAN_BEGIN, pEngineState->packages.cPackages, LoggingBurnActionToString(action)); | 437 | LogId(REPORT_STANDARD, MSG_PLAN_BEGIN, pEngineState->packages.cPackages, LoggingBurnActionToString(action), LoggingBundleScopeToString(plannedScope)); |
| 437 | 438 | ||
| 438 | fPlanBegan = TRUE; | 439 | fPlanBegan = TRUE; |
| 439 | hr = BACallbackOnPlanBegin(&pEngineState->userExperience, pEngineState->packages.cPackages); | 440 | hr = BACallbackOnPlanBegin(&pEngineState->userExperience, pEngineState->packages.cPackages); |
| @@ -452,12 +453,13 @@ extern "C" HRESULT CorePlan( | |||
| 452 | pEngineState->fPlanned = FALSE; | 453 | pEngineState->fPlanned = FALSE; |
| 453 | PlanReset(&pEngineState->plan, &pEngineState->variables, &pEngineState->containers, &pEngineState->packages, &pEngineState->layoutPayloads); | 454 | PlanReset(&pEngineState->plan, &pEngineState->variables, &pEngineState->containers, &pEngineState->packages, &pEngineState->layoutPayloads); |
| 454 | 455 | ||
| 455 | hr = PlanSetVariables(action, &pEngineState->variables); | 456 | hr = PlanSetVariables(action, pEngineState->registration.scope, pEngineState->plan.plannedScope, &pEngineState->variables); |
| 456 | ExitOnFailure(hr, "Failed to update action."); | 457 | ExitOnFailure(hr, "Failed to update plan variables."); |
| 457 | 458 | ||
| 458 | // Remember the overall action state in the plan since it shapes the changes | 459 | // Remember the overall action state in the plan since it shapes the changes |
| 459 | // we make everywhere. | 460 | // we make everywhere. |
| 460 | pEngineState->plan.action = action; | 461 | pEngineState->plan.action = action; |
| 462 | pEngineState->plan.plannedScope = plannedScope; | ||
| 461 | pEngineState->plan.pCache = &pEngineState->cache; | 463 | pEngineState->plan.pCache = &pEngineState->cache; |
| 462 | pEngineState->plan.pCommand = &pEngineState->command; | 464 | pEngineState->plan.pCommand = &pEngineState->command; |
| 463 | pEngineState->plan.pInternalCommand = &pEngineState->internalCommand; | 465 | pEngineState->plan.pInternalCommand = &pEngineState->internalCommand; |
| @@ -467,6 +469,17 @@ extern "C" HRESULT CorePlan( | |||
| 467 | pEngineState->plan.fDisableRollback = pEngineState->fDisableRollback || BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL == pEngineState->plan.action; | 469 | pEngineState->plan.fDisableRollback = pEngineState->fDisableRollback || BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL == pEngineState->plan.action; |
| 468 | pEngineState->plan.fPlanPackageCacheRollback = BOOTSTRAPPER_REGISTRATION_TYPE_NONE == pEngineState->registration.detectedRegistrationType; | 470 | pEngineState->plan.fPlanPackageCacheRollback = BOOTSTRAPPER_REGISTRATION_TYPE_NONE == pEngineState->registration.detectedRegistrationType; |
| 469 | 471 | ||
| 472 | hr = PlanPackagesAndBundleScope(pEngineState->packages.rgPackages, pEngineState->packages.cPackages, pEngineState->plan.plannedScope, pEngineState->registration.scope, pEngineState->command.commandLineScope, &pEngineState->plan.plannedScope, &pEngineState->registration.fPerMachine); | ||
| 473 | ExitOnFailure(hr, "Failed to determine packages and bundle scope."); | ||
| 474 | |||
| 475 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == pEngineState->registration.scope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == pEngineState->registration.scope) | ||
| 476 | { | ||
| 477 | LogId(REPORT_STANDARD, MSG_PLAN_CONFIGURED_SCOPE, LoggingInstallScopeToString(pEngineState->registration.fPerMachine)); | ||
| 478 | } | ||
| 479 | |||
| 480 | hr = RegistrationSetPaths(&pEngineState->registration, &pEngineState->cache); | ||
| 481 | ExitOnFailure(hr, "Failed to set registration paths."); | ||
| 482 | |||
| 470 | // Set resume commandline | 483 | // Set resume commandline |
| 471 | hr = PlanSetResumeCommand(&pEngineState->plan, &pEngineState->registration, &pEngineState->log); | 484 | hr = PlanSetResumeCommand(&pEngineState->plan, &pEngineState->registration, &pEngineState->log); |
| 472 | ExitOnFailure(hr, "Failed to set resume command"); | 485 | ExitOnFailure(hr, "Failed to set resume command"); |
| @@ -475,7 +488,7 @@ extern "C" HRESULT CorePlan( | |||
| 475 | ExitOnFailure(hr, "Failed to initialize the dependencies for the plan."); | 488 | ExitOnFailure(hr, "Failed to initialize the dependencies for the plan."); |
| 476 | 489 | ||
| 477 | hr = RegistrationPlanInitialize(&pEngineState->registration); | 490 | hr = RegistrationPlanInitialize(&pEngineState->registration); |
| 478 | ExitOnFailure(hr, "Failed to initialize registration for the plan."); | 491 | ExitOnFailure(hr, "Failed to initialize the plan for registration."); |
| 479 | 492 | ||
| 480 | if (BOOTSTRAPPER_ACTION_LAYOUT == action) | 493 | if (BOOTSTRAPPER_ACTION_LAYOUT == action) |
| 481 | { | 494 | { |
| @@ -556,6 +569,9 @@ extern "C" HRESULT CorePlan( | |||
| 556 | LogPackages(pUpgradeBundlePackage, pForwardCompatibleBundlePackage, &pEngineState->packages, &pEngineState->registration.relatedBundles, action); | 569 | LogPackages(pUpgradeBundlePackage, pForwardCompatibleBundlePackage, &pEngineState->packages, &pEngineState->registration.relatedBundles, action); |
| 557 | } | 570 | } |
| 558 | 571 | ||
| 572 | hr = PlanSetVariables(action, pEngineState->registration.scope, pEngineState->plan.plannedScope, &pEngineState->variables); | ||
| 573 | ExitOnFailure(hr, "Failed to update plan variables after planning."); | ||
| 574 | |||
| 559 | PlanDump(&pEngineState->plan); | 575 | PlanDump(&pEngineState->plan); |
| 560 | 576 | ||
| 561 | LExit: | 577 | LExit: |
| @@ -1331,7 +1347,7 @@ extern "C" void CoreCleanup( | |||
| 1331 | ExitFunction(); | 1347 | ExitFunction(); |
| 1332 | } | 1348 | } |
| 1333 | 1349 | ||
| 1334 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 1350 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1335 | ExitOnFailure(hr, "Plan during cleanup failed"); | 1351 | ExitOnFailure(hr, "Plan during cleanup failed"); |
| 1336 | 1352 | ||
| 1337 | hr = CoreApply(pEngineState, pEngineState->hMessageWindow); | 1353 | hr = CoreApply(pEngineState, pEngineState->hMessageWindow); |
| @@ -1470,6 +1486,14 @@ extern "C" HRESULT CoreParseCommandLine( | |||
| 1470 | { | 1486 | { |
| 1471 | pInternalCommand->fDisableSystemRestore = TRUE; | 1487 | pInternalCommand->fDisableSystemRestore = TRUE; |
| 1472 | } | 1488 | } |
| 1489 | else if (CSTR_EQUAL == ::CompareStringOrdinal(&argv[i][1], -1, L"peruser", -1, TRUE)) | ||
| 1490 | { | ||
| 1491 | pCommand->commandLineScope = BOOTSTRAPPER_SCOPE_PER_USER; | ||
| 1492 | } | ||
| 1493 | else if (CSTR_EQUAL == ::CompareStringOrdinal(&argv[i][1], -1, L"permachine", -1, TRUE)) | ||
| 1494 | { | ||
| 1495 | pCommand->commandLineScope = BOOTSTRAPPER_SCOPE_PER_MACHINE; | ||
| 1496 | } | ||
| 1473 | else if (CSTR_EQUAL == ::CompareStringOrdinal(&argv[i][1], -1, L"originalsource", -1, TRUE)) | 1497 | else if (CSTR_EQUAL == ::CompareStringOrdinal(&argv[i][1], -1, L"originalsource", -1, TRUE)) |
| 1474 | { | 1498 | { |
| 1475 | if (i + 1 >= argc) | 1499 | if (i + 1 >= argc) |
| @@ -2346,7 +2370,7 @@ static void LogPackages( | |||
| 2346 | LogRollbackBoundary(pPackage->pRollbackBoundaryBackward); | 2370 | LogRollbackBoundary(pPackage->pRollbackBoundaryBackward); |
| 2347 | } | 2371 | } |
| 2348 | 2372 | ||
| 2349 | LogId(REPORT_STANDARD, MSG_PLANNED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingRequestStateToString(pPackage->defaultRequested), LoggingRequestStateToString(pPackage->requested), LoggingActionStateToString(pPackage->execute), LoggingActionStateToString(pPackage->rollback), LoggingCacheTypeToString(pPackage->authoredCacheType), LoggingCacheTypeToString(pPackage->cacheType), LoggingPlannedCacheToString(pPackage), LoggingBoolToString(pPackage->fPlannedUncache), LoggingDependencyActionToString(pPackage->dependencyExecute), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedInstallRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedCacheRegistrationState)); | 2373 | LogId(REPORT_STANDARD, MSG_PLANNED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingRequestStateToString(pPackage->defaultRequested), LoggingRequestStateToString(pPackage->requested), LoggingActionStateToString(pPackage->execute), LoggingActionStateToString(pPackage->rollback), LoggingCacheTypeToString(pPackage->authoredCacheType), LoggingCacheTypeToString(pPackage->cacheType), LoggingPlannedCacheToString(pPackage), LoggingBoolToString(pPackage->fPlannedUncache), LoggingDependencyActionToString(pPackage->dependencyExecute), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedInstallRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedCacheRegistrationState), LoggingInstallScopeToString(pPackage->fPerMachine)); |
| 2350 | 2374 | ||
| 2351 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) | 2375 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) |
| 2352 | { | 2376 | { |
diff --git a/src/burn/engine/core.h b/src/burn/engine/core.h index cf615e35..75c0c941 100644 --- a/src/burn/engine/core.h +++ b/src/burn/engine/core.h | |||
| @@ -45,7 +45,9 @@ const LPCWSTR BURN_BUNDLE_EXECUTE_PACKAGE_ACTION = L"WixBundleExecutePackageActi | |||
| 45 | const LPCWSTR BURN_BUNDLE_FORCED_RESTART_PACKAGE = L"WixBundleForcedRestartPackage"; | 45 | const LPCWSTR BURN_BUNDLE_FORCED_RESTART_PACKAGE = L"WixBundleForcedRestartPackage"; |
| 46 | const LPCWSTR BURN_BUNDLE_INSTALLED = L"WixBundleInstalled"; | 46 | const LPCWSTR BURN_BUNDLE_INSTALLED = L"WixBundleInstalled"; |
| 47 | const LPCWSTR BURN_BUNDLE_ELEVATED = L"WixBundleElevated"; | 47 | const LPCWSTR BURN_BUNDLE_ELEVATED = L"WixBundleElevated"; |
| 48 | const LPCWSTR BURN_BUNDLE_PLANNED_SCOPE = L"WixBundlePlannedScope"; | ||
| 48 | const LPCWSTR BURN_BUNDLE_PROVIDER_KEY = L"WixBundleProviderKey"; | 49 | const LPCWSTR BURN_BUNDLE_PROVIDER_KEY = L"WixBundleProviderKey"; |
| 50 | const LPCWSTR BURN_BUNDLE_SCOPE = L"WixBundleScope"; | ||
| 49 | const LPCWSTR BURN_BUNDLE_SOURCE_PROCESS_PATH = L"WixBundleSourceProcessPath"; | 51 | const LPCWSTR BURN_BUNDLE_SOURCE_PROCESS_PATH = L"WixBundleSourceProcessPath"; |
| 50 | const LPCWSTR BURN_BUNDLE_SOURCE_PROCESS_FOLDER = L"WixBundleSourceProcessFolder"; | 52 | const LPCWSTR BURN_BUNDLE_SOURCE_PROCESS_FOLDER = L"WixBundleSourceProcessFolder"; |
| 51 | const LPCWSTR BURN_BUNDLE_TAG = L"WixBundleTag"; | 53 | const LPCWSTR BURN_BUNDLE_TAG = L"WixBundleTag"; |
| @@ -243,7 +245,8 @@ HRESULT CoreDetect( | |||
| 243 | ); | 245 | ); |
| 244 | HRESULT CorePlan( | 246 | HRESULT CorePlan( |
| 245 | __in BURN_ENGINE_STATE* pEngineState, | 247 | __in BURN_ENGINE_STATE* pEngineState, |
| 246 | __in BOOTSTRAPPER_ACTION action | 248 | __in BOOTSTRAPPER_ACTION action, |
| 249 | __in BOOTSTRAPPER_SCOPE scope | ||
| 247 | ); | 250 | ); |
| 248 | HRESULT CoreElevate( | 251 | HRESULT CoreElevate( |
| 249 | __in BURN_ENGINE_STATE* pEngineState, | 252 | __in BURN_ENGINE_STATE* pEngineState, |
diff --git a/src/burn/engine/dependency.cpp b/src/burn/engine/dependency.cpp index 94a8a1e4..7cd0db9f 100644 --- a/src/burn/engine/dependency.cpp +++ b/src/burn/engine/dependency.cpp | |||
| @@ -12,6 +12,7 @@ const LPCWSTR vcszIgnoreDependenciesDelim = L";"; | |||
| 12 | 12 | ||
| 13 | static HRESULT DetectPackageDependents( | 13 | static HRESULT DetectPackageDependents( |
| 14 | __in BURN_PACKAGE* pPackage, | 14 | __in BURN_PACKAGE* pPackage, |
| 15 | __in BOOL fPackagePerMachine, | ||
| 15 | __in const BURN_REGISTRATION* pRegistration | 16 | __in const BURN_REGISTRATION* pRegistration |
| 16 | ); | 17 | ); |
| 17 | 18 | ||
| @@ -249,7 +250,22 @@ extern "C" HRESULT DependencyDetectProviderKeyBundleCode( | |||
| 249 | { | 250 | { |
| 250 | HRESULT hr = S_OK; | 251 | HRESULT hr = S_OK; |
| 251 | 252 | ||
| 252 | hr = DepGetProviderInformation(pRegistration->hkRoot, pRegistration->sczProviderKey, &pRegistration->sczDetectedProviderKeyBundleCode, NULL, NULL); | 253 | // For configurable packages, check both scopes because until planning, |
| 254 | // we can't know their planned scope. | ||
| 255 | if (pRegistration->hkRoot) | ||
| 256 | { | ||
| 257 | hr = DepGetProviderInformation(pRegistration->hkRoot, pRegistration->sczProviderKey, &pRegistration->sczDetectedProviderKeyBundleCode, NULL, NULL); | ||
| 258 | } | ||
| 259 | else | ||
| 260 | { | ||
| 261 | hr = DepGetProviderInformation(HKEY_LOCAL_MACHINE, pRegistration->sczProviderKey, &pRegistration->sczDetectedProviderKeyBundleCode, NULL, NULL); | ||
| 262 | |||
| 263 | if (E_NOTFOUND == hr) | ||
| 264 | { | ||
| 265 | hr = DepGetProviderInformation(HKEY_CURRENT_USER, pRegistration->sczProviderKey, &pRegistration->sczDetectedProviderKeyBundleCode, NULL, NULL); | ||
| 266 | } | ||
| 267 | } | ||
| 268 | |||
| 253 | if (E_NOTFOUND == hr) | 269 | if (E_NOTFOUND == hr) |
| 254 | { | 270 | { |
| 255 | ReleaseNullStr(pRegistration->sczDetectedProviderKeyBundleCode); | 271 | ReleaseNullStr(pRegistration->sczDetectedProviderKeyBundleCode); |
| @@ -284,7 +300,21 @@ extern "C" HRESULT DependencyDetectBundle( | |||
| 284 | hr = DependencyDetectProviderKeyBundleCode(pRegistration); | 300 | hr = DependencyDetectProviderKeyBundleCode(pRegistration); |
| 285 | ExitOnFailure(hr, "Failed to detect provider key bundle code."); | 301 | ExitOnFailure(hr, "Failed to detect provider key bundle code."); |
| 286 | 302 | ||
| 287 | hr = DepCheckDependents(pRegistration->hkRoot, pRegistration->sczProviderKey, 0, NULL, &pRegistration->rgDependents, &pRegistration->cDependents); | 303 | // For configurable packages, check both scopes because until planning, |
| 304 | // we can't know their planned scope. | ||
| 305 | if (pRegistration->hkRoot) | ||
| 306 | { | ||
| 307 | hr = DepCheckDependents(pRegistration->hkRoot, pRegistration->sczProviderKey, 0, NULL, &pRegistration->rgDependents, &pRegistration->cDependents); | ||
| 308 | } | ||
| 309 | else | ||
| 310 | { | ||
| 311 | hr = DepCheckDependents(HKEY_LOCAL_MACHINE, pRegistration->sczProviderKey, 0, NULL, &pRegistration->rgDependents, &pRegistration->cDependents); | ||
| 312 | |||
| 313 | if (E_NOTFOUND == hr) | ||
| 314 | { | ||
| 315 | hr = DepCheckDependents(HKEY_CURRENT_USER, pRegistration->sczProviderKey, 0, NULL, &pRegistration->rgDependents, &pRegistration->cDependents); | ||
| 316 | } | ||
| 317 | } | ||
| 288 | ExitOnPathFailure(hr, fExists, "Failed dependents check on bundle."); | 318 | ExitOnPathFailure(hr, fExists, "Failed dependents check on bundle."); |
| 289 | 319 | ||
| 290 | if (pDependencies->fSelfDependent || pDependencies->fActiveParent) | 320 | if (pDependencies->fSelfDependent || pDependencies->fActiveParent) |
| @@ -292,13 +322,13 @@ extern "C" HRESULT DependencyDetectBundle( | |||
| 292 | for (DWORD i = 0; i < pRegistration->cDependents; ++i) | 322 | for (DWORD i = 0; i < pRegistration->cDependents; ++i) |
| 293 | { | 323 | { |
| 294 | DEPENDENCY* pDependent = pRegistration->rgDependents + i; | 324 | DEPENDENCY* pDependent = pRegistration->rgDependents + i; |
| 295 | 325 | ||
| 296 | if (pDependencies->fActiveParent && CSTR_EQUAL == ::CompareStringOrdinal(pDependencies->wzActiveParent, -1, pDependent->sczKey, -1, TRUE)) | 326 | if (pDependent && pDependencies->fActiveParent && CSTR_EQUAL == ::CompareStringOrdinal(pDependencies->wzActiveParent, -1, pDependent->sczKey, -1, TRUE)) |
| 297 | { | 327 | { |
| 298 | pRegistration->fParentRegisteredAsDependent = TRUE; | 328 | pRegistration->fParentRegisteredAsDependent = TRUE; |
| 299 | } | 329 | } |
| 300 | 330 | ||
| 301 | if (pDependencies->fSelfDependent && CSTR_EQUAL == ::CompareStringOrdinal(pDependencies->wzSelfDependent, -1, pDependent->sczKey, -1, TRUE)) | 331 | if (pDependent && pDependencies->fSelfDependent && CSTR_EQUAL == ::CompareStringOrdinal(pDependencies->wzSelfDependent, -1, pDependent->sczKey, -1, TRUE)) |
| 302 | { | 332 | { |
| 303 | pRegistration->fSelfRegisteredAsDependent = TRUE; | 333 | pRegistration->fSelfRegisteredAsDependent = TRUE; |
| 304 | } | 334 | } |
| @@ -316,11 +346,24 @@ extern "C" HRESULT DependencyDetectChainPackage( | |||
| 316 | { | 346 | { |
| 317 | HRESULT hr = S_OK; | 347 | HRESULT hr = S_OK; |
| 318 | 348 | ||
| 319 | hr = DetectPackageDependents(pPackage, pRegistration); | 349 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == pPackage->scope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == pPackage->scope) |
| 320 | ExitOnFailure(hr, "Failed to detect dependents for package '%ls'", pPackage->sczId); | 350 | { |
| 351 | // For configurable packages, check both scopes because until planning, | ||
| 352 | // we can't know their planned scope. | ||
| 353 | hr = DetectPackageDependents(pPackage, /*fPerMachine*/TRUE, pRegistration); | ||
| 354 | ExitOnFailure(hr, "Failed to detect per-machine dependents for configurable package '%ls'", pPackage->sczId); | ||
| 355 | |||
| 356 | hr = DetectPackageDependents(pPackage, /*fPerMachine*/FALSE, pRegistration); | ||
| 357 | ExitOnFailure(hr, "Failed to detect per-user dependents for configurable package '%ls'", pPackage->sczId); | ||
| 358 | } | ||
| 359 | else | ||
| 360 | { | ||
| 361 | hr = DetectPackageDependents(pPackage, pPackage->fPerMachine, pRegistration); | ||
| 362 | ExitOnFailure(hr, "Failed to detect dependents for %hs package '%ls'", LoggingInstallScopeToString(pPackage->fPerMachine), pPackage->sczId); | ||
| 363 | } | ||
| 321 | 364 | ||
| 322 | hr = DependencyDetectCompatibleEntry(pPackage, pRegistration); | 365 | hr = DependencyDetectCompatibleEntry(pPackage, pRegistration); |
| 323 | ExitOnFailure(hr, "Failed to detect compatible package for package '%ls'", pPackage->sczId); | 366 | ExitOnFailure(hr, "Failed to detect compatible package for %hs package '%ls'", LoggingInstallScopeToString(pPackage->fPerMachine), pPackage->sczId); |
| 324 | 367 | ||
| 325 | LExit: | 368 | LExit: |
| 326 | return hr; | 369 | return hr; |
| @@ -336,7 +379,7 @@ extern "C" HRESULT DependencyDetectRelatedBundle( | |||
| 336 | 379 | ||
| 337 | if (pRelatedBundle->fPlannable) | 380 | if (pRelatedBundle->fPlannable) |
| 338 | { | 381 | { |
| 339 | hr = DetectPackageDependents(pPackage, pRegistration); | 382 | hr = DetectPackageDependents(pPackage, pPackage->fPerMachine, pRegistration); |
| 340 | ExitOnFailure(hr, "Failed to detect dependents for related bundle '%ls'", pPackage->sczId); | 383 | ExitOnFailure(hr, "Failed to detect dependents for related bundle '%ls'", pPackage->sczId); |
| 341 | } | 384 | } |
| 342 | 385 | ||
| @@ -626,7 +669,7 @@ LExit: | |||
| 626 | } | 669 | } |
| 627 | 670 | ||
| 628 | extern "C" HRESULT DependencyPlanPackage( | 671 | extern "C" HRESULT DependencyPlanPackage( |
| 629 | __in_opt DWORD *pdwInsertSequence, | 672 | __in_opt DWORD* pdwInsertSequence, |
| 630 | __in const BURN_PACKAGE* pPackage, | 673 | __in const BURN_PACKAGE* pPackage, |
| 631 | __in BURN_PLAN* pPlan | 674 | __in BURN_PLAN* pPlan |
| 632 | ) | 675 | ) |
| @@ -946,18 +989,19 @@ LExit: | |||
| 946 | 989 | ||
| 947 | static HRESULT DetectPackageDependents( | 990 | static HRESULT DetectPackageDependents( |
| 948 | __in BURN_PACKAGE* pPackage, | 991 | __in BURN_PACKAGE* pPackage, |
| 992 | __in BOOL fPackagePerMachine, | ||
| 949 | __in const BURN_REGISTRATION* pRegistration | 993 | __in const BURN_REGISTRATION* pRegistration |
| 950 | ) | 994 | ) |
| 951 | { | 995 | { |
| 952 | HRESULT hr = S_OK; | 996 | HRESULT hr = S_OK; |
| 953 | HKEY hkHive = pPackage->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | 997 | HKEY hkHive = fPackagePerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| 954 | BOOL fCanIgnorePresence = pPackage->fCanAffectRegistration && 0 < pPackage->cDependencyProviders && | 998 | BOOL fCanIgnorePresence = pPackage->fCanAffectRegistration && 0 < pPackage->cDependencyProviders && |
| 955 | (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->cacheRegistrationState || BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->installRegistrationState); | 999 | (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->cacheRegistrationState || BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->installRegistrationState); |
| 956 | BOOL fBundleRegisteredAsDependent = FALSE; | 1000 | BOOL fBundleRegisteredAsDependent = FALSE; |
| 957 | 1001 | ||
| 958 | // There's currently no point in getting the dependents if the scope doesn't match, | 1002 | // There's currently no point in getting the dependents if the scope doesn't match, |
| 959 | // because they will just get ignored. | 1003 | // because they will just get ignored. |
| 960 | if (pRegistration->fPerMachine != pPackage->fPerMachine) | 1004 | if (pRegistration->fPerMachine != fPackagePerMachine) |
| 961 | { | 1005 | { |
| 962 | ExitFunction(); | 1006 | ExitFunction(); |
| 963 | } | 1007 | } |
| @@ -979,7 +1023,7 @@ static HRESULT DetectPackageDependents( | |||
| 979 | { | 1023 | { |
| 980 | DEPENDENCY* pDependent = pProvider->rgDependents + iDependent; | 1024 | DEPENDENCY* pDependent = pProvider->rgDependents + iDependent; |
| 981 | 1025 | ||
| 982 | if (CSTR_EQUAL == ::CompareStringOrdinal(pRegistration->sczCode, -1, pDependent->sczKey, -1, TRUE)) | 1026 | if (pDependent && CSTR_EQUAL == ::CompareStringOrdinal(pRegistration->sczCode, -1, pDependent->sczKey, -1, TRUE)) |
| 983 | { | 1027 | { |
| 984 | pProvider->fBundleRegisteredAsDependent = TRUE; | 1028 | pProvider->fBundleRegisteredAsDependent = TRUE; |
| 985 | fBundleRegisteredAsDependent = TRUE; | 1029 | fBundleRegisteredAsDependent = TRUE; |
| @@ -994,10 +1038,12 @@ static HRESULT DetectPackageDependents( | |||
| 994 | { | 1038 | { |
| 995 | pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED; | 1039 | pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED; |
| 996 | } | 1040 | } |
| 1041 | |||
| 997 | if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->installRegistrationState) | 1042 | if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->installRegistrationState) |
| 998 | { | 1043 | { |
| 999 | pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED; | 1044 | pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED; |
| 1000 | } | 1045 | } |
| 1046 | |||
| 1001 | if (BURN_PACKAGE_TYPE_MSP == pPackage->type) | 1047 | if (BURN_PACKAGE_TYPE_MSP == pPackage->type) |
| 1002 | { | 1048 | { |
| 1003 | for (DWORD i = 0; i < pPackage->Msp.cTargetProductCodes; ++i) | 1049 | for (DWORD i = 0; i < pPackage->Msp.cTargetProductCodes; ++i) |
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp index ef87841f..711ce4af 100644 --- a/src/burn/engine/elevation.cpp +++ b/src/burn/engine/elevation.cpp | |||
| @@ -1191,7 +1191,6 @@ extern "C" HRESULT ElevationExecuteMsiPackage( | |||
| 1191 | hr = VariableSerialize(pVariables, FALSE, &pbData, &cbData); | 1191 | hr = VariableSerialize(pVariables, FALSE, &pbData, &cbData); |
| 1192 | ExitOnFailure(hr, "Failed to write variables."); | 1192 | ExitOnFailure(hr, "Failed to write variables."); |
| 1193 | 1193 | ||
| 1194 | |||
| 1195 | // send message | 1194 | // send message |
| 1196 | context.pfnMessageHandler = pfnMessageHandler; | 1195 | context.pfnMessageHandler = pfnMessageHandler; |
| 1197 | context.pvContext = pvContext; | 1196 | context.pvContext = pvContext; |
| @@ -2572,6 +2571,11 @@ static HRESULT OnSessionBegin( | |||
| 2572 | ExitOnFailure(hr, "Failed to read variables."); | 2571 | ExitOnFailure(hr, "Failed to read variables."); |
| 2573 | 2572 | ||
| 2574 | // Begin session in per-machine process. | 2573 | // Begin session in per-machine process. |
| 2574 | pRegistration->fPerMachine = TRUE; | ||
| 2575 | |||
| 2576 | hr = RegistrationSetPaths(pRegistration, pCache); | ||
| 2577 | ExitOnFailure(hr, "Failed to set elevated registration paths."); | ||
| 2578 | |||
| 2575 | hr = RegistrationSessionBegin(sczEngineWorkingPath, pRegistration, pCache, pVariables, dwRegistrationOperations, qwEstimatedSize, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); | 2579 | hr = RegistrationSessionBegin(sczEngineWorkingPath, pRegistration, pCache, pVariables, dwRegistrationOperations, qwEstimatedSize, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); |
| 2576 | ExitOnFailure(hr, "Failed to begin registration session."); | 2580 | ExitOnFailure(hr, "Failed to begin registration session."); |
| 2577 | 2581 | ||
| @@ -2657,6 +2661,8 @@ static HRESULT OnCachePreparePackage( | |||
| 2657 | { | 2661 | { |
| 2658 | hr = PackageFindById(pPackages, scz, &pPackage); | 2662 | hr = PackageFindById(pPackages, scz, &pPackage); |
| 2659 | ExitOnFailure(hr, "Failed to find package: %ls", scz); | 2663 | ExitOnFailure(hr, "Failed to find package: %ls", scz); |
| 2664 | |||
| 2665 | pPackage->fPerMachine = TRUE; | ||
| 2660 | } | 2666 | } |
| 2661 | else | 2667 | else |
| 2662 | { | 2668 | { |
| @@ -2698,6 +2704,8 @@ static HRESULT OnCacheCompletePayload( | |||
| 2698 | { | 2704 | { |
| 2699 | hr = PackageFindById(pPackages, scz, &pPackage); | 2705 | hr = PackageFindById(pPackages, scz, &pPackage); |
| 2700 | ExitOnFailure(hr, "Failed to find package: %ls", scz); | 2706 | ExitOnFailure(hr, "Failed to find package: %ls", scz); |
| 2707 | |||
| 2708 | pPackage->fPerMachine = TRUE; | ||
| 2701 | } | 2709 | } |
| 2702 | 2710 | ||
| 2703 | hr = BuffReadString(pbData, cbData, &iData, &scz); | 2711 | hr = BuffReadString(pbData, cbData, &iData, &scz); |
| @@ -2717,8 +2725,8 @@ static HRESULT OnCacheCompletePayload( | |||
| 2717 | 2725 | ||
| 2718 | if (pPackage && pPayload) // complete payload. | 2726 | if (pPackage && pPayload) // complete payload. |
| 2719 | { | 2727 | { |
| 2720 | hr = CacheCompletePayload(pCache, pPackage->fPerMachine, pPayload, pPackage->sczCacheId, sczUnverifiedPath, fMove, BurnCacheMessageHandler, ElevatedProgressRoutine, hPipe); | 2728 | hr = CacheCompletePayload(pCache, TRUE/*fPerMachine*/, pPayload, pPackage->sczCacheId, sczUnverifiedPath, fMove, BurnCacheMessageHandler, ElevatedProgressRoutine, hPipe); |
| 2721 | ExitOnFailure(hr, "Failed to cache payload: %ls", pPayload->sczKey); | 2729 | ExitOnFailure(hr, "Failed to cache per-machine payload: %ls", pPayload->sczKey); |
| 2722 | } | 2730 | } |
| 2723 | else | 2731 | else |
| 2724 | { | 2732 | { |
| @@ -2755,6 +2763,8 @@ static HRESULT OnCacheVerifyPayload( | |||
| 2755 | { | 2763 | { |
| 2756 | hr = PackageFindById(pPackages, scz, &pPackage); | 2764 | hr = PackageFindById(pPackages, scz, &pPackage); |
| 2757 | ExitOnFailure(hr, "Failed to find package: %ls", scz); | 2765 | ExitOnFailure(hr, "Failed to find package: %ls", scz); |
| 2766 | |||
| 2767 | pPackage->fPerMachine = TRUE; | ||
| 2758 | } | 2768 | } |
| 2759 | 2769 | ||
| 2760 | hr = BuffReadString(pbData, cbData, &iData, &scz); | 2770 | hr = BuffReadString(pbData, cbData, &iData, &scz); |
| @@ -2970,6 +2980,8 @@ static HRESULT OnExecuteBundlePackage( | |||
| 2970 | hr = PackageFindById(pPackages, sczPackage, &executeAction.bundlePackage.pPackage); | 2980 | hr = PackageFindById(pPackages, sczPackage, &executeAction.bundlePackage.pPackage); |
| 2971 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 2981 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 2972 | 2982 | ||
| 2983 | executeAction.bundlePackage.pPackage->fPerMachine = TRUE; | ||
| 2984 | |||
| 2973 | if (BURN_PACKAGE_TYPE_BUNDLE != executeAction.bundlePackage.pPackage->type) | 2985 | if (BURN_PACKAGE_TYPE_BUNDLE != executeAction.bundlePackage.pPackage->type) |
| 2974 | { | 2986 | { |
| 2975 | ExitWithRootFailure(hr, E_INVALIDARG, "Package is not a BUNDLE package: %ls", sczPackage); | 2987 | ExitWithRootFailure(hr, E_INVALIDARG, "Package is not a BUNDLE package: %ls", sczPackage); |
| @@ -3052,6 +3064,8 @@ static HRESULT OnExecuteExePackage( | |||
| 3052 | hr = PackageFindById(pPackages, sczPackage, &executeAction.exePackage.pPackage); | 3064 | hr = PackageFindById(pPackages, sczPackage, &executeAction.exePackage.pPackage); |
| 3053 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3065 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3054 | 3066 | ||
| 3067 | executeAction.exePackage.pPackage->fPerMachine = TRUE; | ||
| 3068 | |||
| 3055 | if (BURN_PACKAGE_TYPE_EXE != executeAction.exePackage.pPackage->type) | 3069 | if (BURN_PACKAGE_TYPE_EXE != executeAction.exePackage.pPackage->type) |
| 3056 | { | 3070 | { |
| 3057 | ExitWithRootFailure(hr, E_INVALIDARG, "Package is not an EXE package: %ls", sczPackage); | 3071 | ExitWithRootFailure(hr, E_INVALIDARG, "Package is not an EXE package: %ls", sczPackage); |
| @@ -3113,6 +3127,8 @@ static HRESULT OnExecuteMsiPackage( | |||
| 3113 | hr = PackageFindById(pPackages, sczPackage, &executeAction.msiPackage.pPackage); | 3127 | hr = PackageFindById(pPackages, sczPackage, &executeAction.msiPackage.pPackage); |
| 3114 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3128 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3115 | 3129 | ||
| 3130 | executeAction.msiPackage.pPackage->fPerMachine = TRUE; | ||
| 3131 | |||
| 3116 | hr = BuffReadPointer(pbData, cbData, &iData, (DWORD_PTR*)&hwndParent); | 3132 | hr = BuffReadPointer(pbData, cbData, &iData, (DWORD_PTR*)&hwndParent); |
| 3117 | ExitOnFailure(hr, "Failed to read parent hwnd."); | 3133 | ExitOnFailure(hr, "Failed to read parent hwnd."); |
| 3118 | 3134 | ||
| @@ -3205,6 +3221,8 @@ static HRESULT OnExecuteMspPackage( | |||
| 3205 | hr = PackageFindById(pPackages, sczPackage, &executeAction.mspTarget.pPackage); | 3221 | hr = PackageFindById(pPackages, sczPackage, &executeAction.mspTarget.pPackage); |
| 3206 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3222 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3207 | 3223 | ||
| 3224 | executeAction.mspTarget.pPackage->fPerMachine = TRUE; | ||
| 3225 | |||
| 3208 | hr = BuffReadPointer(pbData, cbData, &iData, (DWORD_PTR*)&hwndParent); | 3226 | hr = BuffReadPointer(pbData, cbData, &iData, (DWORD_PTR*)&hwndParent); |
| 3209 | ExitOnFailure(hr, "Failed to read parent hwnd."); | 3227 | ExitOnFailure(hr, "Failed to read parent hwnd."); |
| 3210 | 3228 | ||
| @@ -3246,6 +3264,8 @@ static HRESULT OnExecuteMspPackage( | |||
| 3246 | 3264 | ||
| 3247 | hr = PackageFindById(pPackages, sczPackage, &executeAction.mspTarget.rgOrderedPatches[i].pPackage); | 3265 | hr = PackageFindById(pPackages, sczPackage, &executeAction.mspTarget.rgOrderedPatches[i].pPackage); |
| 3248 | ExitOnFailure(hr, "Failed to find ordered patch package: %ls", sczPackage); | 3266 | ExitOnFailure(hr, "Failed to find ordered patch package: %ls", sczPackage); |
| 3267 | |||
| 3268 | executeAction.mspTarget.rgOrderedPatches[i].pPackage->fPerMachine = TRUE; | ||
| 3249 | } | 3269 | } |
| 3250 | } | 3270 | } |
| 3251 | 3271 | ||
| @@ -3310,6 +3330,8 @@ static HRESULT OnExecuteMsuPackage( | |||
| 3310 | hr = PackageFindById(pPackages, sczPackage, &executeAction.msuPackage.pPackage); | 3330 | hr = PackageFindById(pPackages, sczPackage, &executeAction.msuPackage.pPackage); |
| 3311 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3331 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3312 | 3332 | ||
| 3333 | executeAction.msuPackage.pPackage->fPerMachine = TRUE; | ||
| 3334 | |||
| 3313 | if (BURN_PACKAGE_TYPE_MSU != executeAction.msuPackage.pPackage->type) | 3335 | if (BURN_PACKAGE_TYPE_MSU != executeAction.msuPackage.pPackage->type) |
| 3314 | { | 3336 | { |
| 3315 | ExitWithRootFailure(hr, E_INVALIDARG, "Package is not an MSU package: %ls", sczPackage); | 3337 | ExitWithRootFailure(hr, E_INVALIDARG, "Package is not an MSU package: %ls", sczPackage); |
| @@ -3371,6 +3393,8 @@ static HRESULT OnUninstallMsiCompatiblePackage( | |||
| 3371 | hr = PackageFindById(pPackages, sczPackageId, &pPackage); | 3393 | hr = PackageFindById(pPackages, sczPackageId, &pPackage); |
| 3372 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackageId); | 3394 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackageId); |
| 3373 | 3395 | ||
| 3396 | pPackage->fPerMachine = TRUE; | ||
| 3397 | |||
| 3374 | executeAction.uninstallMsiCompatiblePackage.pParentPackage = pPackage; | 3398 | executeAction.uninstallMsiCompatiblePackage.pParentPackage = pPackage; |
| 3375 | pCompatiblePackage = &pPackage->compatiblePackage; | 3399 | pCompatiblePackage = &pPackage->compatiblePackage; |
| 3376 | 3400 | ||
| @@ -3424,6 +3448,8 @@ static HRESULT OnExecutePackageProviderAction( | |||
| 3424 | } | 3448 | } |
| 3425 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3449 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3426 | 3450 | ||
| 3451 | executeAction.packageProvider.pPackage->fPerMachine; | ||
| 3452 | |||
| 3427 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&fRollback); | 3453 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&fRollback); |
| 3428 | ExitOnFailure(hr, "Failed to read rollback flag."); | 3454 | ExitOnFailure(hr, "Failed to read rollback flag."); |
| 3429 | 3455 | ||
| @@ -3436,11 +3462,6 @@ static HRESULT OnExecutePackageProviderAction( | |||
| 3436 | ExitOnFailure(hr, "Failed to read provider action."); | 3462 | ExitOnFailure(hr, "Failed to read provider action."); |
| 3437 | } | 3463 | } |
| 3438 | 3464 | ||
| 3439 | if (!executeAction.packageProvider.pPackage->fPerMachine) | ||
| 3440 | { | ||
| 3441 | ExitWithRootFailure(hr, E_INVALIDARG, "ExecutePackageProviderAction called for per-user package."); | ||
| 3442 | } | ||
| 3443 | |||
| 3444 | // Execute the package provider action. | 3465 | // Execute the package provider action. |
| 3445 | hr = DependencyExecutePackageProviderAction(&executeAction, fRollback); | 3466 | hr = DependencyExecutePackageProviderAction(&executeAction, fRollback); |
| 3446 | ExitOnFailure(hr, "Failed to execute package provider action."); | 3467 | ExitOnFailure(hr, "Failed to execute package provider action."); |
| @@ -3479,6 +3500,8 @@ static HRESULT OnExecutePackageDependencyAction( | |||
| 3479 | } | 3500 | } |
| 3480 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3501 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3481 | 3502 | ||
| 3503 | executeAction.packageDependency.pPackage->fPerMachine = TRUE; | ||
| 3504 | |||
| 3482 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&fRollback); | 3505 | hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&fRollback); |
| 3483 | ExitOnFailure(hr, "Failed to read rollback flag."); | 3506 | ExitOnFailure(hr, "Failed to read rollback flag."); |
| 3484 | 3507 | ||
| @@ -3784,6 +3807,8 @@ static HRESULT OnCleanCompatiblePackage( | |||
| 3784 | hr = PackageFindById(pPackages, sczPackageId, &pPackage); | 3807 | hr = PackageFindById(pPackages, sczPackageId, &pPackage); |
| 3785 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackageId); | 3808 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackageId); |
| 3786 | 3809 | ||
| 3810 | pPackage->fPerMachine = TRUE; | ||
| 3811 | |||
| 3787 | pCompatiblePackage = &pPackage->compatiblePackage; | 3812 | pCompatiblePackage = &pPackage->compatiblePackage; |
| 3788 | 3813 | ||
| 3789 | if (!pCompatiblePackage->fDetected || !pCompatiblePackage->compatibleEntry.sczId || !pCompatiblePackage->sczCacheId || !*pCompatiblePackage->sczCacheId) | 3814 | if (!pCompatiblePackage->fDetected || !pCompatiblePackage->compatibleEntry.sczId || !pCompatiblePackage->sczCacheId || !*pCompatiblePackage->sczCacheId) |
| @@ -3826,6 +3851,8 @@ static HRESULT OnCleanPackage( | |||
| 3826 | hr = PackageFindById(pPackages, sczPackage, &pPackage); | 3851 | hr = PackageFindById(pPackages, sczPackage, &pPackage); |
| 3827 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); | 3852 | ExitOnFailure(hr, "Failed to find package: %ls", sczPackage); |
| 3828 | 3853 | ||
| 3854 | pPackage->fPerMachine = TRUE; | ||
| 3855 | |||
| 3829 | // Remove the package from the cache. | 3856 | // Remove the package from the cache. |
| 3830 | hr = CacheRemovePackage(pCache, TRUE, pPackage->sczId, pPackage->sczCacheId); | 3857 | hr = CacheRemovePackage(pCache, TRUE, pPackage->sczId, pPackage->sczCacheId); |
| 3831 | ExitOnFailure(hr, "Failed to remove from cache package: %ls", pPackage->sczId); | 3858 | ExitOnFailure(hr, "Failed to remove from cache package: %ls", pPackage->sczId); |
diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp index d432f732..8423da41 100644 --- a/src/burn/engine/engine.cpp +++ b/src/burn/engine/engine.cpp | |||
| @@ -16,11 +16,6 @@ static HRESULT InitializeEngineState( | |||
| 16 | static void UninitializeEngineState( | 16 | static void UninitializeEngineState( |
| 17 | __in BURN_ENGINE_STATE* pEngineState | 17 | __in BURN_ENGINE_STATE* pEngineState |
| 18 | ); | 18 | ); |
| 19 | #if 0 | ||
| 20 | static HRESULT RunUntrusted( | ||
| 21 | __in BURN_ENGINE_STATE* pEngineState | ||
| 22 | ); | ||
| 23 | #endif | ||
| 24 | static HRESULT RunNormal( | 19 | static HRESULT RunNormal( |
| 25 | __in HINSTANCE hInstance, | 20 | __in HINSTANCE hInstance, |
| 26 | __in BURN_ENGINE_STATE* pEngineState | 21 | __in BURN_ENGINE_STATE* pEngineState |
| @@ -812,7 +807,7 @@ static HRESULT ProcessMessage( | |||
| 812 | break; | 807 | break; |
| 813 | 808 | ||
| 814 | case WM_BURN_PLAN: | 809 | case WM_BURN_PLAN: |
| 815 | hr = CorePlan(pEngineState, pAction->plan.action); | 810 | hr = CorePlan(pEngineState, pAction->plan.action, pAction->plan.plannedScope); |
| 816 | break; | 811 | break; |
| 817 | 812 | ||
| 818 | case WM_BURN_ELEVATE: | 813 | case WM_BURN_ELEVATE: |
diff --git a/src/burn/engine/engine.mc b/src/burn/engine/engine.mc index 776f7832..8e2f1a2e 100644 --- a/src/burn/engine/engine.mc +++ b/src/burn/engine/engine.mc | |||
| @@ -271,7 +271,7 @@ MessageId=101 | |||
| 271 | Severity=Success | 271 | Severity=Success |
| 272 | SymbolicName=MSG_DETECTED_PACKAGE | 272 | SymbolicName=MSG_DETECTED_PACKAGE |
| 273 | Language=English | 273 | Language=English |
| 274 | Detected package: %1!ls!, state: %2!hs!, cached: %3!hs!, install registration state: %4!hs!, cache registration state: %5!hs! | 274 | Detected package: %1!ls!, state: %2!hs!, authored scope: %6!hs!, cached: %3!hs!, install registration state: %4!hs!, cache registration state: %5!hs! |
| 275 | . | 275 | . |
| 276 | 276 | ||
| 277 | MessageId=102 | 277 | MessageId=102 |
| @@ -404,14 +404,21 @@ MessageId=200 | |||
| 404 | Severity=Success | 404 | Severity=Success |
| 405 | SymbolicName=MSG_PLAN_BEGIN | 405 | SymbolicName=MSG_PLAN_BEGIN |
| 406 | Language=English | 406 | Language=English |
| 407 | Plan begin, %1!u! packages, action: %2!hs! | 407 | Plan begin, %1!u! packages, action: %2!hs!, planned scope: %3!hs! |
| 408 | . | ||
| 409 | |||
| 410 | MessageId=226 | ||
| 411 | Severity=Success | ||
| 412 | SymbolicName=MSG_PLAN_CONFIGURED_SCOPE | ||
| 413 | Language=English | ||
| 414 | Planned configurable scope: %1!hs! | ||
| 408 | . | 415 | . |
| 409 | 416 | ||
| 410 | MessageId=201 | 417 | MessageId=201 |
| 411 | Severity=Success | 418 | Severity=Success |
| 412 | SymbolicName=MSG_PLANNED_PACKAGE | 419 | SymbolicName=MSG_PLANNED_PACKAGE |
| 413 | Language=English | 420 | Language=English |
| 414 | Planned package: %1!ls!, state: %2!hs!, default requested: %3!hs!, ba requested: %4!hs!, execute: %5!hs!, rollback: %6!hs!, default cache strategy: %7!hs!, ba requested strategy: %8!hs!, cache: %9!hs!, uncache: %10!hs!, dependency: %11!hs!, expected install registration state: %12!hs!, expected cache registration state: %13!hs! | 421 | Planned package: %1!ls!, state: %2!hs!, default requested: %3!hs!, ba requested: %4!hs!, execute: %5!hs!, rollback: %6!hs!, scope: %14!hs!, default cache strategy: %7!hs!, ba requested strategy: %8!hs!, cache: %9!hs!, uncache: %10!hs!, dependency: %11!hs!, expected install registration state: %12!hs!, expected cache registration state: %13!hs! |
| 415 | . | 422 | . |
| 416 | 423 | ||
| 417 | MessageId=203 | 424 | MessageId=203 |
| @@ -782,7 +789,7 @@ MessageId=328 | |||
| 782 | Severity=Warning | 789 | Severity=Warning |
| 783 | SymbolicName=MSG_DEPENDENCY_PACKAGE_DEPENDENT | 790 | SymbolicName=MSG_DEPENDENCY_PACKAGE_DEPENDENT |
| 784 | Language=English | 791 | Language=English |
| 785 | Found dependent: %1!ls!, name: %2!ls! | 792 | Found dependent: %1!ls!, name: %2!ls! |
| 786 | . | 793 | . |
| 787 | 794 | ||
| 788 | MessageId=329 | 795 | MessageId=329 |
| @@ -1288,3 +1295,17 @@ SymbolicName=MSG_DEPENDENCY_PACKAGE_DEPENDENTS_OVERRIDDEN | |||
| 1288 | Language=English | 1295 | Language=English |
| 1289 | BA requested to uninstall package: %1!ls!, despite dependents: | 1296 | BA requested to uninstall package: %1!ls!, despite dependents: |
| 1290 | . | 1297 | . |
| 1298 | MessageId=702 | ||
| 1299 | Severity=Warning | ||
| 1300 | SymbolicName=MSG_SCOPE_IGNORED_BA_SCOPE | ||
| 1301 | Language=English | ||
| 1302 | Scope command-line switch ignored because the bootstrapper application already specified a scope. | ||
| 1303 | . | ||
| 1304 | |||
| 1305 | MessageId=703 | ||
| 1306 | Severity=Warning | ||
| 1307 | SymbolicName=MSG_SCOPE_IGNORED_UNCONFIGURABLE | ||
| 1308 | Language=English | ||
| 1309 | Scope command-line switch ignored because the bundle doesn't have any packages with configurable scope. | ||
| 1310 | . | ||
| 1311 | |||
diff --git a/src/burn/engine/engine.vcxproj b/src/burn/engine/engine.vcxproj index 98556ea6..5ab9f1ce 100644 --- a/src/burn/engine/engine.vcxproj +++ b/src/burn/engine/engine.vcxproj | |||
| @@ -1,6 +1,5 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | 2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> |
| 3 | |||
| 4 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | 3 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
| 5 | <ItemGroup Label="ProjectConfigurations"> | 4 | <ItemGroup Label="ProjectConfigurations"> |
| 6 | <ProjectConfiguration Include="Debug|Win32"> | 5 | <ProjectConfiguration Include="Debug|Win32"> |
| @@ -28,7 +27,6 @@ | |||
| 28 | <Platform>ARM64</Platform> | 27 | <Platform>ARM64</Platform> |
| 29 | </ProjectConfiguration> | 28 | </ProjectConfiguration> |
| 30 | </ItemGroup> | 29 | </ItemGroup> |
| 31 | |||
| 32 | <PropertyGroup Label="Globals"> | 30 | <PropertyGroup Label="Globals"> |
| 33 | <ProjectGuid>{8119537D-E1D9-6591-D51A-49768A2F9C37}</ProjectGuid> | 31 | <ProjectGuid>{8119537D-E1D9-6591-D51A-49768A2F9C37}</ProjectGuid> |
| 34 | <ConfigurationType>StaticLibrary</ConfigurationType> | 32 | <ConfigurationType>StaticLibrary</ConfigurationType> |
| @@ -37,20 +35,15 @@ | |||
| 37 | <Description>Native component of WixToolset.Burn</Description> | 35 | <Description>Native component of WixToolset.Burn</Description> |
| 38 | <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets> | 36 | <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets> |
| 39 | </PropertyGroup> | 37 | </PropertyGroup> |
| 40 | |||
| 41 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | 38 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
| 42 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | 39 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
| 43 | |||
| 44 | <PropertyGroup> | 40 | <PropertyGroup> |
| 45 | <ProjectAdditionalIncludeDirectories>..\..\api\burn\inc;$(BurnGeneratedHeaderDirectory);$(ProjectAdditionalIncludeDirectories)</ProjectAdditionalIncludeDirectories> | 41 | <ProjectAdditionalIncludeDirectories>..\..\api\burn\inc;$(BurnGeneratedHeaderDirectory);$(ProjectAdditionalIncludeDirectories)</ProjectAdditionalIncludeDirectories> |
| 46 | </PropertyGroup> | 42 | </PropertyGroup> |
| 47 | |||
| 48 | <ImportGroup Label="ExtensionSettings"> | 43 | <ImportGroup Label="ExtensionSettings"> |
| 49 | </ImportGroup> | 44 | </ImportGroup> |
| 50 | |||
| 51 | <ImportGroup Label="Shared"> | 45 | <ImportGroup Label="Shared"> |
| 52 | </ImportGroup> | 46 | </ImportGroup> |
| 53 | |||
| 54 | <ItemGroup> | 47 | <ItemGroup> |
| 55 | <ClCompile Include="apply.cpp" /> | 48 | <ClCompile Include="apply.cpp" /> |
| 56 | <ClCompile Include="approvedexe.cpp" /> | 49 | <ClCompile Include="approvedexe.cpp" /> |
| @@ -97,7 +90,6 @@ | |||
| 97 | <ClCompile Include="variable.cpp" /> | 90 | <ClCompile Include="variable.cpp" /> |
| 98 | <ClCompile Include="variant.cpp" /> | 91 | <ClCompile Include="variant.cpp" /> |
| 99 | </ItemGroup> | 92 | </ItemGroup> |
| 100 | |||
| 101 | <ItemGroup> | 93 | <ItemGroup> |
| 102 | <ClInclude Include="apply.h" /> | 94 | <ClInclude Include="apply.h" /> |
| 103 | <ClInclude Include="approvedexe.h" /> | 95 | <ClInclude Include="approvedexe.h" /> |
| @@ -147,7 +139,6 @@ | |||
| 147 | <ClInclude Include="variable.h" /> | 139 | <ClInclude Include="variable.h" /> |
| 148 | <ClInclude Include="variant.h" /> | 140 | <ClInclude Include="variant.h" /> |
| 149 | </ItemGroup> | 141 | </ItemGroup> |
| 150 | |||
| 151 | <ItemDefinitionGroup> | 142 | <ItemDefinitionGroup> |
| 152 | <CustomBuildStep> | 143 | <CustomBuildStep> |
| 153 | <Message>Compiling message file...</Message> | 144 | <Message>Compiling message file...</Message> |
| @@ -157,7 +148,6 @@ rc.exe -fo "$(OutDir)engine.res" "$(IntDir)engine.messages.rc"</Command> | |||
| 157 | <Outputs>$(IntDir)engine.messages.h;$(IntDir)engine.messages.rc</Outputs> | 148 | <Outputs>$(IntDir)engine.messages.h;$(IntDir)engine.messages.rc</Outputs> |
| 158 | </CustomBuildStep> | 149 | </CustomBuildStep> |
| 159 | </ItemDefinitionGroup> | 150 | </ItemDefinitionGroup> |
| 160 | |||
| 161 | <Target Name="SetWixVersion" BeforeTargets="ClCompile"> | 151 | <Target Name="SetWixVersion" BeforeTargets="ClCompile"> |
| 162 | <PropertyGroup> | 152 | <PropertyGroup> |
| 163 | <rmj>$(SomeVerInfoMajor)</rmj> | 153 | <rmj>$(SomeVerInfoMajor)</rmj> |
| @@ -172,11 +162,12 @@ rc.exe -fo "$(OutDir)engine.res" "$(IntDir)engine.messages.rc"</Command> | |||
| 172 | </ItemGroup> | 162 | </ItemGroup> |
| 173 | <WriteLinesToFile Overwrite="true" File="$(BurnGeneratedHeaderDirectory)engine.version.h" Lines="@(BurnVersionLines)" /> | 163 | <WriteLinesToFile Overwrite="true" File="$(BurnGeneratedHeaderDirectory)engine.version.h" Lines="@(BurnVersionLines)" /> |
| 174 | </Target> | 164 | </Target> |
| 175 | |||
| 176 | <ItemGroup> | 165 | <ItemGroup> |
| 177 | <PackageReference Include="WixToolset.DUtil" /> | 166 | <PackageReference Include="WixToolset.DUtil" /> |
| 178 | <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" /> | 167 | <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" /> |
| 179 | </ItemGroup> | 168 | </ItemGroup> |
| 180 | 169 | <ItemGroup> | |
| 170 | <None Include="engine.mc" /> | ||
| 171 | </ItemGroup> | ||
| 181 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | 172 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
| 182 | </Project> | 173 | </Project> \ No newline at end of file |
diff --git a/src/burn/engine/externalengine.cpp b/src/burn/engine/externalengine.cpp index 352d184c..d4814dc1 100644 --- a/src/burn/engine/externalengine.cpp +++ b/src/burn/engine/externalengine.cpp | |||
| @@ -633,8 +633,9 @@ LExit: | |||
| 633 | 633 | ||
| 634 | HRESULT ExternalEnginePlan( | 634 | HRESULT ExternalEnginePlan( |
| 635 | __in BAENGINE_CONTEXT* pEngineContext, | 635 | __in BAENGINE_CONTEXT* pEngineContext, |
| 636 | __in const BOOTSTRAPPER_ACTION action | 636 | __in const BOOTSTRAPPER_ACTION action, |
| 637 | ) | 637 | __in const BOOTSTRAPPER_SCOPE plannedScope |
| 638 | ) | ||
| 638 | { | 639 | { |
| 639 | HRESULT hr = S_OK; | 640 | HRESULT hr = S_OK; |
| 640 | BAENGINE_ACTION* pAction = NULL; | 641 | BAENGINE_ACTION* pAction = NULL; |
| @@ -649,6 +650,7 @@ HRESULT ExternalEnginePlan( | |||
| 649 | 650 | ||
| 650 | pAction->dwMessage = WM_BURN_PLAN; | 651 | pAction->dwMessage = WM_BURN_PLAN; |
| 651 | pAction->plan.action = action; | 652 | pAction->plan.action = action; |
| 653 | pAction->plan.plannedScope = plannedScope; | ||
| 652 | 654 | ||
| 653 | hr = EnqueueAction(pEngineContext, &pAction); | 655 | hr = EnqueueAction(pEngineContext, &pAction); |
| 654 | ExitOnFailure(hr, "Failed to enqueue plan action."); | 656 | ExitOnFailure(hr, "Failed to enqueue plan action."); |
diff --git a/src/burn/engine/externalengine.h b/src/burn/engine/externalengine.h index 9b95e645..1053d0c0 100644 --- a/src/burn/engine/externalengine.h +++ b/src/burn/engine/externalengine.h | |||
| @@ -146,8 +146,9 @@ HRESULT ExternalEngineDetect( | |||
| 146 | 146 | ||
| 147 | HRESULT ExternalEnginePlan( | 147 | HRESULT ExternalEnginePlan( |
| 148 | __in BAENGINE_CONTEXT* pEngineContext, | 148 | __in BAENGINE_CONTEXT* pEngineContext, |
| 149 | __in const BOOTSTRAPPER_ACTION action | 149 | __in const BOOTSTRAPPER_ACTION action, |
| 150 | ); | 150 | __in const BOOTSTRAPPER_SCOPE plannedScope |
| 151 | ); | ||
| 151 | 152 | ||
| 152 | HRESULT ExternalEngineElevate( | 153 | HRESULT ExternalEngineElevate( |
| 153 | __in BAENGINE_CONTEXT* pEngineContext, | 154 | __in BAENGINE_CONTEXT* pEngineContext, |
diff --git a/src/burn/engine/logging.cpp b/src/burn/engine/logging.cpp index 52123499..47f52d27 100644 --- a/src/burn/engine/logging.cpp +++ b/src/burn/engine/logging.cpp | |||
| @@ -968,6 +968,42 @@ extern "C" LPCSTR LoggingInstallScopeToString( | |||
| 968 | return fPerMachine ? "PerMachine" : "PerUser"; | 968 | return fPerMachine ? "PerMachine" : "PerUser"; |
| 969 | } | 969 | } |
| 970 | 970 | ||
| 971 | extern "C" LPCSTR LoggingPackageScopeToString( | ||
| 972 | __in BOOTSTRAPPER_PACKAGE_SCOPE scope | ||
| 973 | ) | ||
| 974 | { | ||
| 975 | switch (scope) | ||
| 976 | { | ||
| 977 | case BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE: | ||
| 978 | return "PerMachine"; | ||
| 979 | case BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER: | ||
| 980 | return "PerMachineOrUser"; | ||
| 981 | case BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE: | ||
| 982 | return "PerUserOrMachine"; | ||
| 983 | case BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER: | ||
| 984 | return "PerUser"; | ||
| 985 | default: | ||
| 986 | return "Invalid"; | ||
| 987 | } | ||
| 988 | } | ||
| 989 | |||
| 990 | extern "C" LPCSTR LoggingBundleScopeToString( | ||
| 991 | __in BOOTSTRAPPER_SCOPE scope | ||
| 992 | ) | ||
| 993 | { | ||
| 994 | switch (scope) | ||
| 995 | { | ||
| 996 | case BOOTSTRAPPER_SCOPE_DEFAULT: | ||
| 997 | return "Default"; | ||
| 998 | case BOOTSTRAPPER_SCOPE_PER_MACHINE: | ||
| 999 | return "PerMachine"; | ||
| 1000 | case BOOTSTRAPPER_SCOPE_PER_USER: | ||
| 1001 | return "PerUser"; | ||
| 1002 | default: | ||
| 1003 | return "Invalid"; | ||
| 1004 | } | ||
| 1005 | } | ||
| 1006 | |||
| 971 | 1007 | ||
| 972 | // internal function declarations | 1008 | // internal function declarations |
| 973 | 1009 | ||
diff --git a/src/burn/engine/logging.h b/src/burn/engine/logging.h index b28a53d4..76103732 100644 --- a/src/burn/engine/logging.h +++ b/src/burn/engine/logging.h | |||
| @@ -202,6 +202,13 @@ LPCSTR LoggingInstallScopeToString( | |||
| 202 | __in BOOL fPerMachine | 202 | __in BOOL fPerMachine |
| 203 | ); | 203 | ); |
| 204 | 204 | ||
| 205 | LPCSTR LoggingPackageScopeToString( | ||
| 206 | __in BOOTSTRAPPER_PACKAGE_SCOPE scope | ||
| 207 | ); | ||
| 208 | |||
| 209 | LPCSTR LoggingBundleScopeToString( | ||
| 210 | __in BOOTSTRAPPER_SCOPE scope | ||
| 211 | ); | ||
| 205 | 212 | ||
| 206 | #if defined(__cplusplus) | 213 | #if defined(__cplusplus) |
| 207 | } | 214 | } |
diff --git a/src/burn/engine/msiengine.cpp b/src/burn/engine/msiengine.cpp index a1379054..11bb8a0e 100644 --- a/src/burn/engine/msiengine.cpp +++ b/src/burn/engine/msiengine.cpp | |||
| @@ -454,7 +454,18 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 454 | 454 | ||
| 455 | // detect self by product code | 455 | // detect self by product code |
| 456 | // TODO: what to do about MSIINSTALLCONTEXT_USERMANAGED? | 456 | // TODO: what to do about MSIINSTALLCONTEXT_USERMANAGED? |
| 457 | hr = WiuGetProductInfoEx(pPackage->Msi.sczProductCode, NULL, pPackage->fPerMachine ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczInstalledVersion); | 457 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == pPackage->scope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == pPackage->scope) |
| 458 | { | ||
| 459 | hr = WiuGetProductInfoEx(pPackage->Msi.sczProductCode, NULL, MSIINSTALLCONTEXT_MACHINE, INSTALLPROPERTY_VERSIONSTRING, &sczInstalledVersion); | ||
| 460 | if (FAILED(hr)) | ||
| 461 | { | ||
| 462 | hr = WiuGetProductInfoEx(pPackage->Msi.sczProductCode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczInstalledVersion); | ||
| 463 | } | ||
| 464 | } | ||
| 465 | else | ||
| 466 | { | ||
| 467 | hr = WiuGetProductInfoEx(pPackage->Msi.sczProductCode, NULL, pPackage->scope == BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczInstalledVersion); | ||
| 468 | } | ||
| 458 | if (SUCCEEDED(hr)) | 469 | if (SUCCEEDED(hr)) |
| 459 | { | 470 | { |
| 460 | fDetectFeatures = TRUE; | 471 | fDetectFeatures = TRUE; |
| @@ -777,7 +788,18 @@ extern "C" HRESULT MsiEngineDetectCompatiblePackage( | |||
| 777 | ExitFunction(); | 788 | ExitFunction(); |
| 778 | } | 789 | } |
| 779 | 790 | ||
| 780 | hr = WiuGetProductInfoEx(wzCompatibleProductCode, NULL, pPackage->fPerMachine ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczVersion); | 791 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == pPackage->scope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == pPackage->scope) |
| 792 | { | ||
| 793 | hr = WiuGetProductInfoEx(wzCompatibleProductCode, NULL, MSIINSTALLCONTEXT_MACHINE, INSTALLPROPERTY_VERSIONSTRING, &sczVersion); | ||
| 794 | if (FAILED(hr)) | ||
| 795 | { | ||
| 796 | hr = WiuGetProductInfoEx(wzCompatibleProductCode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczVersion); | ||
| 797 | } | ||
| 798 | } | ||
| 799 | else | ||
| 800 | { | ||
| 801 | hr = WiuGetProductInfoEx(wzCompatibleProductCode, NULL, pPackage->scope == BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczVersion); | ||
| 802 | } | ||
| 781 | if (HRESULT_FROM_WIN32(ERROR_UNKNOWN_PRODUCT) == hr || HRESULT_FROM_WIN32(ERROR_UNKNOWN_PROPERTY) == hr || E_INVALIDARG == hr) | 803 | if (HRESULT_FROM_WIN32(ERROR_UNKNOWN_PRODUCT) == hr || HRESULT_FROM_WIN32(ERROR_UNKNOWN_PROPERTY) == hr || E_INVALIDARG == hr) |
| 782 | { | 804 | { |
| 783 | ExitFunction1(hr = S_OK); | 805 | ExitFunction1(hr = S_OK); |
| @@ -1336,10 +1358,10 @@ extern "C" HRESULT MsiEngineExecutePackage( | |||
| 1336 | hr = ConcatPatchProperty(pCache, pPackage, fRollback, &sczObfuscatedProperties); | 1358 | hr = ConcatPatchProperty(pCache, pPackage, fRollback, &sczObfuscatedProperties); |
| 1337 | ExitOnFailure(hr, "Failed to add patch properties to obfuscated argument string."); | 1359 | ExitOnFailure(hr, "Failed to add patch properties to obfuscated argument string."); |
| 1338 | 1360 | ||
| 1339 | hr = MsiEngineConcatBurnProperties(pExecuteAction->msiPackage.action, pExecuteAction->msiPackage.actionMsiProperty, pExecuteAction->msiPackage.fileVersioning, TRUE, 0 != pPackage->Msi.cFeatures, &sczProperties); | 1361 | hr = MsiEngineConcatBurnProperties(pExecuteAction->msiPackage.action, pExecuteAction->msiPackage.actionMsiProperty, pExecuteAction->msiPackage.fileVersioning, TRUE, 0 != pPackage->Msi.cFeatures, pExecuteAction->msiPackage.pPackage->scope, pExecuteAction->msiPackage.pPackage->fPerMachine, &sczProperties); |
| 1340 | ExitOnFailure(hr, "Failed to add action property to argument string."); | 1362 | ExitOnFailure(hr, "Failed to add action property to argument string."); |
| 1341 | 1363 | ||
| 1342 | hr = MsiEngineConcatBurnProperties(pExecuteAction->msiPackage.action, pExecuteAction->msiPackage.actionMsiProperty, pExecuteAction->msiPackage.fileVersioning, TRUE, 0 != pPackage->Msi.cFeatures, &sczObfuscatedProperties); | 1364 | hr = MsiEngineConcatBurnProperties(pExecuteAction->msiPackage.action, pExecuteAction->msiPackage.actionMsiProperty, pExecuteAction->msiPackage.fileVersioning, TRUE, 0 != pPackage->Msi.cFeatures, pPackage->scope, pPackage->fPerMachine, &sczObfuscatedProperties); |
| 1343 | ExitOnFailure(hr, "Failed to add action property to obfuscated argument string."); | 1365 | ExitOnFailure(hr, "Failed to add action property to obfuscated argument string."); |
| 1344 | 1366 | ||
| 1345 | LogId(REPORT_STANDARD, MSG_APPLYING_PACKAGE, LoggingRollbackOrExecute(fRollback), pPackage->sczId, LoggingActionStateToString(pExecuteAction->msiPackage.action), sczMsiPath, sczObfuscatedProperties ? sczObfuscatedProperties : L""); | 1367 | LogId(REPORT_STANDARD, MSG_APPLYING_PACKAGE, LoggingRollbackOrExecute(fRollback), pPackage->sczId, LoggingActionStateToString(pExecuteAction->msiPackage.action), sczMsiPath, sczObfuscatedProperties ? sczObfuscatedProperties : L""); |
| @@ -1449,7 +1471,7 @@ extern "C" HRESULT MsiEngineUninstallCompatiblePackage( | |||
| 1449 | ExitOnFailure(hr, "Failed to enable logging for compatible package: %ls to: %ls", pCompatibleEntry->sczId, pExecuteAction->uninstallMsiCompatiblePackage.sczLogPath); | 1471 | ExitOnFailure(hr, "Failed to enable logging for compatible package: %ls to: %ls", pCompatibleEntry->sczId, pExecuteAction->uninstallMsiCompatiblePackage.sczLogPath); |
| 1450 | } | 1472 | } |
| 1451 | 1473 | ||
| 1452 | hr = MsiEngineConcatBurnProperties(action, burnMsiProperty, fileVersioning, TRUE, FALSE, &sczProperties); | 1474 | hr = MsiEngineConcatBurnProperties(action, burnMsiProperty, fileVersioning, TRUE, FALSE, pParentPackage->scope, pParentPackage->fPerMachine, &sczProperties); |
| 1453 | ExitOnFailure(hr, "Failed to add action property to argument string."); | 1475 | ExitOnFailure(hr, "Failed to add action property to argument string."); |
| 1454 | 1476 | ||
| 1455 | LogId(REPORT_STANDARD, MSG_APPLYING_ORPHAN_COMPATIBLE_PACKAGE, LoggingRollbackOrExecute(fRollback), pCompatibleEntry->sczId, pParentPackage->sczId, LoggingActionStateToString(action), sczProperties ? sczProperties : L""); | 1477 | LogId(REPORT_STANDARD, MSG_APPLYING_ORPHAN_COMPATIBLE_PACKAGE, LoggingRollbackOrExecute(fRollback), pCompatibleEntry->sczId, pParentPackage->sczId, LoggingActionStateToString(action), sczProperties ? sczProperties : L""); |
| @@ -1491,6 +1513,8 @@ extern "C" HRESULT MsiEngineConcatBurnProperties( | |||
| 1491 | __in BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning, | 1513 | __in BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning, |
| 1492 | __in BOOL fMsiPackage, | 1514 | __in BOOL fMsiPackage, |
| 1493 | __in BOOL fFeatureSelectionEnabled, | 1515 | __in BOOL fFeatureSelectionEnabled, |
| 1516 | __in BOOTSTRAPPER_PACKAGE_SCOPE scope, | ||
| 1517 | __in BOOL fPlannedPerMachineScope, | ||
| 1494 | __deref_out_z LPWSTR* psczProperties | 1518 | __deref_out_z LPWSTR* psczProperties |
| 1495 | ) | 1519 | ) |
| 1496 | { | 1520 | { |
| @@ -1534,6 +1558,7 @@ extern "C" HRESULT MsiEngineConcatBurnProperties( | |||
| 1534 | break; | 1558 | break; |
| 1535 | } | 1559 | } |
| 1536 | 1560 | ||
| 1561 | // Append properties used by WixUI (and usable otherwise) to adjust internal UI behavior. | ||
| 1537 | switch (actionMsiProperty) | 1562 | switch (actionMsiProperty) |
| 1538 | { | 1563 | { |
| 1539 | case BURN_MSI_PROPERTY_INSTALL: | 1564 | case BURN_MSI_PROPERTY_INSTALL: |
| @@ -1581,6 +1606,20 @@ extern "C" HRESULT MsiEngineConcatBurnProperties( | |||
| 1581 | ExitOnFailure(hr, "Failed to add reinstall mode."); | 1606 | ExitOnFailure(hr, "Failed to add reinstall mode."); |
| 1582 | } | 1607 | } |
| 1583 | 1608 | ||
| 1609 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == scope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == scope) | ||
| 1610 | { | ||
| 1611 | if (fPlannedPerMachineScope) | ||
| 1612 | { | ||
| 1613 | hr = StrAllocConcatFormattedSecure(psczProperties, L" MSIINSTALLPERUSER=\"\""); | ||
| 1614 | ExitOnFailure(hr, "Failed to add per-machine scope properties."); | ||
| 1615 | } | ||
| 1616 | else | ||
| 1617 | { | ||
| 1618 | hr = StrAllocConcatFormattedSecure(psczProperties, L" MSIINSTALLPERUSER=\"1\""); | ||
| 1619 | ExitOnFailure(hr, "Failed to add per-user scope properties."); | ||
| 1620 | } | ||
| 1621 | } | ||
| 1622 | |||
| 1584 | hr = StrAllocConcatSecure(psczProperties, L" REBOOT=ReallySuppress", 0); | 1623 | hr = StrAllocConcatSecure(psczProperties, L" REBOOT=ReallySuppress", 0); |
| 1585 | ExitOnFailure(hr, "Failed to add reboot suppression property."); | 1624 | ExitOnFailure(hr, "Failed to add reboot suppression property."); |
| 1586 | 1625 | ||
diff --git a/src/burn/engine/msiengine.h b/src/burn/engine/msiengine.h index 862c4f6a..d4660dc8 100644 --- a/src/burn/engine/msiengine.h +++ b/src/burn/engine/msiengine.h | |||
| @@ -93,6 +93,8 @@ HRESULT MsiEngineConcatBurnProperties( | |||
| 93 | __in BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning, | 93 | __in BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning, |
| 94 | __in BOOL fMsiPackage, | 94 | __in BOOL fMsiPackage, |
| 95 | __in BOOL fFeatureSelectionEnabled, | 95 | __in BOOL fFeatureSelectionEnabled, |
| 96 | __in BOOTSTRAPPER_PACKAGE_SCOPE scope, | ||
| 97 | __in BOOL fPlannedPerMachineScope, | ||
| 96 | __deref_out_z LPWSTR* psczProperties | 98 | __deref_out_z LPWSTR* psczProperties |
| 97 | ); | 99 | ); |
| 98 | HRESULT MsiEngineConcatPackageProperties( | 100 | HRESULT MsiEngineConcatPackageProperties( |
diff --git a/src/burn/engine/mspengine.cpp b/src/burn/engine/mspengine.cpp index e8ef7fcb..18be3cc6 100644 --- a/src/burn/engine/mspengine.cpp +++ b/src/burn/engine/mspengine.cpp | |||
| @@ -676,10 +676,10 @@ extern "C" HRESULT MspEngineExecutePackage( | |||
| 676 | } | 676 | } |
| 677 | 677 | ||
| 678 | // Always add Burn properties last. | 678 | // Always add Burn properties last. |
| 679 | hr = MsiEngineConcatBurnProperties(pExecuteAction->mspTarget.action, pExecuteAction->mspTarget.actionMsiProperty, pExecuteAction->mspTarget.fileVersioning, FALSE, FALSE, &sczProperties); | 679 | hr = MsiEngineConcatBurnProperties(pExecuteAction->mspTarget.action, pExecuteAction->mspTarget.actionMsiProperty, pExecuteAction->mspTarget.fileVersioning, FALSE, FALSE, pExecuteAction->mspTarget.pPackage->scope, pExecuteAction->mspTarget.pPackage->fPerMachine, &sczProperties); |
| 680 | ExitOnFailure(hr, "Failed to add action property to argument string."); | 680 | ExitOnFailure(hr, "Failed to add action property to argument string."); |
| 681 | 681 | ||
| 682 | hr = MsiEngineConcatBurnProperties(pExecuteAction->mspTarget.action, pExecuteAction->mspTarget.actionMsiProperty, pExecuteAction->mspTarget.fileVersioning, FALSE, FALSE, &sczObfuscatedProperties); | 682 | hr = MsiEngineConcatBurnProperties(pExecuteAction->mspTarget.action, pExecuteAction->mspTarget.actionMsiProperty, pExecuteAction->mspTarget.fileVersioning, FALSE, FALSE, pExecuteAction->mspTarget.pPackage->scope, pExecuteAction->mspTarget.pPackage->fPerMachine, &sczObfuscatedProperties); |
| 683 | ExitOnFailure(hr, "Failed to add action property to obfuscated argument string."); | 683 | ExitOnFailure(hr, "Failed to add action property to obfuscated argument string."); |
| 684 | 684 | ||
| 685 | LogId(REPORT_STANDARD, MSG_APPLYING_PATCH_PACKAGE, pExecuteAction->mspTarget.pPackage->sczId, LoggingActionStateToString(pExecuteAction->mspTarget.action), sczPatches, sczObfuscatedProperties, pExecuteAction->mspTarget.sczTargetProductCode); | 685 | LogId(REPORT_STANDARD, MSG_APPLYING_PATCH_PACKAGE, pExecuteAction->mspTarget.pPackage->sczId, LoggingActionStateToString(pExecuteAction->mspTarget.action), sczPatches, sczObfuscatedProperties, pExecuteAction->mspTarget.sczTargetProductCode); |
diff --git a/src/burn/engine/package.cpp b/src/burn/engine/package.cpp index 3bf676ba..61b73dc6 100644 --- a/src/burn/engine/package.cpp +++ b/src/burn/engine/package.cpp | |||
| @@ -154,9 +154,12 @@ extern "C" HRESULT PackagesParseFromXml( | |||
| 154 | hr = XmlGetAttributeUInt64(pixnNode, L"InstallSize", &pPackage->qwInstallSize); | 154 | hr = XmlGetAttributeUInt64(pixnNode, L"InstallSize", &pPackage->qwInstallSize); |
| 155 | ExitOnOptionalXmlQueryFailure(hr, fFoundXml, "Failed to get @InstallSize."); | 155 | ExitOnOptionalXmlQueryFailure(hr, fFoundXml, "Failed to get @InstallSize."); |
| 156 | 156 | ||
| 157 | // @PerMachine | 157 | // @Scope |
| 158 | hr = XmlGetYesNoAttribute(pixnNode, L"PerMachine", &pPackage->fPerMachine); | 158 | hr = PackageParseScopeFromXml(pixnNode, &pPackage->scope); |
| 159 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @PerMachine."); | 159 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @Scope."); |
| 160 | |||
| 161 | // Shortcut for static per-machine or per-user packages. | ||
| 162 | pPackage->fPerMachine = BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE == pPackage->scope; | ||
| 160 | 163 | ||
| 161 | // @Permanent | 164 | // @Permanent |
| 162 | hr = XmlGetYesNoAttribute(pixnNode, L"Permanent", &pPackage->fPermanent); | 165 | hr = XmlGetYesNoAttribute(pixnNode, L"Permanent", &pPackage->fPermanent); |
| @@ -593,6 +596,45 @@ LExit: | |||
| 593 | return hr; | 596 | return hr; |
| 594 | } | 597 | } |
| 595 | 598 | ||
| 599 | extern "C" HRESULT PackageParseScopeFromXml( | ||
| 600 | __in IXMLDOMNode* pixn, | ||
| 601 | __in BOOTSTRAPPER_PACKAGE_SCOPE* pScope | ||
| 602 | ) | ||
| 603 | { | ||
| 604 | HRESULT hr = S_OK; | ||
| 605 | LPWSTR scz = NULL; | ||
| 606 | |||
| 607 | hr = XmlGetAttributeEx(pixn, L"Scope", &scz); | ||
| 608 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @Scope."); | ||
| 609 | |||
| 610 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, scz, -1, L"perMachine", -1)) | ||
| 611 | { | ||
| 612 | *pScope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE; | ||
| 613 | } | ||
| 614 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, scz, -1, L"perUser", -1)) | ||
| 615 | { | ||
| 616 | *pScope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER; | ||
| 617 | } | ||
| 618 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, scz, -1, L"perUserOrMachine", -1)) | ||
| 619 | { | ||
| 620 | *pScope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE; | ||
| 621 | } | ||
| 622 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, scz, -1, L"perMachineOrUser", -1)) | ||
| 623 | { | ||
| 624 | *pScope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER; | ||
| 625 | } | ||
| 626 | else | ||
| 627 | { | ||
| 628 | hr = E_UNEXPECTED; | ||
| 629 | ExitOnRootFailure(hr, "Invalid scope: %ls", scz); | ||
| 630 | } | ||
| 631 | |||
| 632 | LExit: | ||
| 633 | ReleaseStr(scz); | ||
| 634 | |||
| 635 | return hr; | ||
| 636 | } | ||
| 637 | |||
| 596 | 638 | ||
| 597 | // internal function declarations | 639 | // internal function declarations |
| 598 | 640 | ||
diff --git a/src/burn/engine/package.h b/src/burn/engine/package.h index d596d7c0..5397e9cc 100644 --- a/src/burn/engine/package.h +++ b/src/burn/engine/package.h | |||
| @@ -268,7 +268,8 @@ typedef struct _BURN_PACKAGE | |||
| 268 | 268 | ||
| 269 | LPWSTR sczInstallCondition; | 269 | LPWSTR sczInstallCondition; |
| 270 | LPWSTR sczRepairCondition; | 270 | LPWSTR sczRepairCondition; |
| 271 | BOOL fPerMachine; | 271 | BOOTSTRAPPER_PACKAGE_SCOPE scope; |
| 272 | BOOL fPerMachine; // only valid after Plan (for PUOM/PMOU packages). | ||
| 272 | BOOL fPermanent; | 273 | BOOL fPermanent; |
| 273 | BOOL fVital; | 274 | BOOL fVital; |
| 274 | BOOL fCanAffectRegistration; | 275 | BOOL fCanAffectRegistration; |
| @@ -483,6 +484,10 @@ HRESULT PackageFindRollbackBoundaryById( | |||
| 483 | __in_z LPCWSTR wzId, | 484 | __in_z LPCWSTR wzId, |
| 484 | __out BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary | 485 | __out BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary |
| 485 | ); | 486 | ); |
| 487 | HRESULT PackageParseScopeFromXml( | ||
| 488 | __in IXMLDOMNode* pixn, | ||
| 489 | __in BOOTSTRAPPER_PACKAGE_SCOPE* pScope | ||
| 490 | ); | ||
| 486 | 491 | ||
| 487 | 492 | ||
| 488 | #if defined(__cplusplus) | 493 | #if defined(__cplusplus) |
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp index edc09033..6c46269b 100644 --- a/src/burn/engine/plan.cpp +++ b/src/burn/engine/plan.cpp | |||
| @@ -278,7 +278,7 @@ extern "C" void PlanReset( | |||
| 278 | } | 278 | } |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | PlanSetVariables(BOOTSTRAPPER_ACTION_UNKNOWN, pVariables); | 281 | PlanSetVariables(BOOTSTRAPPER_ACTION_UNKNOWN, BOOTSTRAPPER_PACKAGE_SCOPE_INVALID, BOOTSTRAPPER_SCOPE_DEFAULT, pVariables); |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | extern "C" void PlanUninitializeExecuteAction( | 284 | extern "C" void PlanUninitializeExecuteAction( |
| @@ -332,6 +332,8 @@ extern "C" void PlanUninitializeExecuteAction( | |||
| 332 | 332 | ||
| 333 | extern "C" HRESULT PlanSetVariables( | 333 | extern "C" HRESULT PlanSetVariables( |
| 334 | __in BOOTSTRAPPER_ACTION action, | 334 | __in BOOTSTRAPPER_ACTION action, |
| 335 | __in BOOTSTRAPPER_PACKAGE_SCOPE authoredScope, | ||
| 336 | __in BOOTSTRAPPER_SCOPE plannedScope, | ||
| 335 | __in BURN_VARIABLES* pVariables | 337 | __in BURN_VARIABLES* pVariables |
| 336 | ) | 338 | ) |
| 337 | { | 339 | { |
| @@ -340,6 +342,12 @@ extern "C" HRESULT PlanSetVariables( | |||
| 340 | hr = VariableSetNumeric(pVariables, BURN_BUNDLE_ACTION, action, TRUE); | 342 | hr = VariableSetNumeric(pVariables, BURN_BUNDLE_ACTION, action, TRUE); |
| 341 | ExitOnFailure(hr, "Failed to set the bundle action built-in variable."); | 343 | ExitOnFailure(hr, "Failed to set the bundle action built-in variable."); |
| 342 | 344 | ||
| 345 | hr = VariableSetNumeric(pVariables, BURN_BUNDLE_SCOPE, authoredScope, TRUE); | ||
| 346 | ExitOnFailure(hr, "Failed to set the bundle authored scope built-in variable."); | ||
| 347 | |||
| 348 | hr = VariableSetNumeric(pVariables, BURN_BUNDLE_PLANNED_SCOPE, plannedScope, TRUE); | ||
| 349 | ExitOnFailure(hr, "Failed to set the bundle planned scope built-in variable."); | ||
| 350 | |||
| 343 | LExit: | 351 | LExit: |
| 344 | return hr; | 352 | return hr; |
| 345 | } | 353 | } |
| @@ -812,6 +820,66 @@ LExit: | |||
| 812 | return hr; | 820 | return hr; |
| 813 | } | 821 | } |
| 814 | 822 | ||
| 823 | extern "C" HRESULT PlanPackagesAndBundleScope( | ||
| 824 | __in BURN_PACKAGE* rgPackages, | ||
| 825 | __in DWORD cPackages, | ||
| 826 | __in BOOTSTRAPPER_SCOPE scope, | ||
| 827 | __in BOOTSTRAPPER_PACKAGE_SCOPE authoredScope, | ||
| 828 | __in BOOTSTRAPPER_SCOPE commandLineScope, | ||
| 829 | __out BOOTSTRAPPER_SCOPE* pResultingScope, | ||
| 830 | __out BOOL* pfRegistrationPerMachine | ||
| 831 | ) | ||
| 832 | { | ||
| 833 | HRESULT hr = S_OK; | ||
| 834 | BOOL fRegistrationPerMachine = TRUE; | ||
| 835 | |||
| 836 | // If a scope was specified on the command line and the BA didn't set a scope, | ||
| 837 | // let the command-line switch override. | ||
| 838 | if (BOOTSTRAPPER_SCOPE_DEFAULT != commandLineScope) | ||
| 839 | { | ||
| 840 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == authoredScope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == authoredScope) | ||
| 841 | { | ||
| 842 | if (BOOTSTRAPPER_SCOPE_DEFAULT == scope) | ||
| 843 | { | ||
| 844 | scope = commandLineScope; | ||
| 845 | } | ||
| 846 | else | ||
| 847 | { | ||
| 848 | LogId(REPORT_STANDARD, MSG_SCOPE_IGNORED_BA_SCOPE); | ||
| 849 | } | ||
| 850 | } | ||
| 851 | else | ||
| 852 | { | ||
| 853 | LogId(REPORT_STANDARD, MSG_SCOPE_IGNORED_UNCONFIGURABLE); | ||
| 854 | } | ||
| 855 | } | ||
| 856 | |||
| 857 | for (DWORD i = 0; i < cPackages; ++i) | ||
| 858 | { | ||
| 859 | BURN_PACKAGE* pPackage = rgPackages + i; | ||
| 860 | |||
| 861 | pPackage->fPerMachine = | ||
| 862 | (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE == pPackage->scope) | ||
| 863 | || (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER == pPackage->scope && | ||
| 864 | (BOOTSTRAPPER_SCOPE_DEFAULT == scope || BOOTSTRAPPER_SCOPE_PER_MACHINE == scope)) | ||
| 865 | || (BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE == pPackage->scope && | ||
| 866 | BOOTSTRAPPER_SCOPE_PER_MACHINE == scope); | ||
| 867 | |||
| 868 | // Any per-user package makes the registration per-user as well. | ||
| 869 | if (!pPackage->fPerMachine) | ||
| 870 | { | ||
| 871 | fRegistrationPerMachine = FALSE; | ||
| 872 | } | ||
| 873 | } | ||
| 874 | |||
| 875 | *pResultingScope = scope; | ||
| 876 | *pfRegistrationPerMachine = fRegistrationPerMachine; | ||
| 877 | |||
| 878 | //LExit: | ||
| 879 | return hr; | ||
| 880 | } | ||
| 881 | |||
| 882 | |||
| 815 | static HRESULT PlanPackagesHelper( | 883 | static HRESULT PlanPackagesHelper( |
| 816 | __in BURN_PACKAGE* rgPackages, | 884 | __in BURN_PACKAGE* rgPackages, |
| 817 | __in DWORD cPackages, | 885 | __in DWORD cPackages, |
| @@ -2971,7 +3039,7 @@ static void ExecuteActionLog( | |||
| 2971 | break; | 3039 | break; |
| 2972 | 3040 | ||
| 2973 | case BURN_EXECUTE_ACTION_TYPE_MSI_PACKAGE: | 3041 | case BURN_EXECUTE_ACTION_TYPE_MSI_PACKAGE: |
| 2974 | LogStringLine(PlanDumpLevel, "%ls action[%u]: MSI_PACKAGE package id: %ls, action: %hs, action msi property: %ls, ui level: %u, disable externaluihandler: %hs, file versioning: %hs, log path: %ls, logging attrib: %u", wzBase, iAction, pAction->msiPackage.pPackage->sczId, LoggingActionStateToString(pAction->msiPackage.action), LoggingBurnMsiPropertyToString(pAction->msiPackage.actionMsiProperty), pAction->msiPackage.uiLevel, LoggingBoolToString(pAction->msiPackage.fDisableExternalUiHandler), LoggingMsiFileVersioningToString(pAction->msiPackage.fileVersioning), pAction->msiPackage.sczLogPath, pAction->msiPackage.dwLoggingAttributes); | 3042 | LogStringLine(PlanDumpLevel, "%ls action[%u]: MSI_PACKAGE package id: %ls, scope: %hs, action: %hs, action msi property: %ls, ui level: %u, disable externaluihandler: %hs, file versioning: %hs, log path: %ls, logging attrib: %u", wzBase, iAction, pAction->msiPackage.pPackage->sczId, LoggingPackageScopeToString(pAction->msiPackage.pPackage->scope), LoggingActionStateToString(pAction->msiPackage.action), LoggingBurnMsiPropertyToString(pAction->msiPackage.actionMsiProperty), pAction->msiPackage.uiLevel, LoggingBoolToString(pAction->msiPackage.fDisableExternalUiHandler), LoggingMsiFileVersioningToString(pAction->msiPackage.fileVersioning), pAction->msiPackage.sczLogPath, pAction->msiPackage.dwLoggingAttributes); |
| 2975 | for (DWORD j = 0; j < pAction->msiPackage.pPackage->Msi.cSlipstreamMspPackages; ++j) | 3043 | for (DWORD j = 0; j < pAction->msiPackage.pPackage->Msi.cSlipstreamMspPackages; ++j) |
| 2976 | { | 3044 | { |
| 2977 | const BURN_SLIPSTREAM_MSP* pSlipstreamMsp = pAction->msiPackage.pPackage->Msi.rgSlipstreamMsps + j; | 3045 | const BURN_SLIPSTREAM_MSP* pSlipstreamMsp = pAction->msiPackage.pPackage->Msi.rgSlipstreamMsps + j; |
| @@ -3083,6 +3151,7 @@ extern "C" void PlanDump( | |||
| 3083 | LogStringLine(PlanDumpLevel, " bundle code: %ls", pPlan->wzBundleCode); | 3151 | LogStringLine(PlanDumpLevel, " bundle code: %ls", pPlan->wzBundleCode); |
| 3084 | LogStringLine(PlanDumpLevel, " bundle provider key: %ls", pPlan->wzBundleProviderKey); | 3152 | LogStringLine(PlanDumpLevel, " bundle provider key: %ls", pPlan->wzBundleProviderKey); |
| 3085 | LogStringLine(PlanDumpLevel, " use-forward-compatible: %hs", LoggingTrueFalseToString(pPlan->fEnabledForwardCompatibleBundle)); | 3153 | LogStringLine(PlanDumpLevel, " use-forward-compatible: %hs", LoggingTrueFalseToString(pPlan->fEnabledForwardCompatibleBundle)); |
| 3154 | LogStringLine(PlanDumpLevel, " planned scope: %hs", LoggingBundleScopeToString(pPlan->plannedScope)); | ||
| 3086 | LogStringLine(PlanDumpLevel, " per-machine: %hs", LoggingTrueFalseToString(pPlan->fPerMachine)); | 3155 | LogStringLine(PlanDumpLevel, " per-machine: %hs", LoggingTrueFalseToString(pPlan->fPerMachine)); |
| 3087 | LogStringLine(PlanDumpLevel, " can affect machine state: %hs", LoggingTrueFalseToString(pPlan->fCanAffectMachineState)); | 3156 | LogStringLine(PlanDumpLevel, " can affect machine state: %hs", LoggingTrueFalseToString(pPlan->fCanAffectMachineState)); |
| 3088 | LogStringLine(PlanDumpLevel, " disable-rollback: %hs", LoggingTrueFalseToString(pPlan->fDisableRollback)); | 3157 | LogStringLine(PlanDumpLevel, " disable-rollback: %hs", LoggingTrueFalseToString(pPlan->fDisableRollback)); |
diff --git a/src/burn/engine/plan.h b/src/burn/engine/plan.h index 03b1423d..a20d7c76 100644 --- a/src/burn/engine/plan.h +++ b/src/burn/engine/plan.h | |||
| @@ -249,6 +249,7 @@ typedef struct _BURN_CLEAN_ACTION | |||
| 249 | typedef struct _BURN_PLAN | 249 | typedef struct _BURN_PLAN |
| 250 | { | 250 | { |
| 251 | BOOTSTRAPPER_ACTION action; | 251 | BOOTSTRAPPER_ACTION action; |
| 252 | BOOTSTRAPPER_SCOPE plannedScope; | ||
| 252 | BURN_CACHE* pCache; | 253 | BURN_CACHE* pCache; |
| 253 | BOOTSTRAPPER_COMMAND* pCommand; | 254 | BOOTSTRAPPER_COMMAND* pCommand; |
| 254 | BURN_ENGINE_COMMAND* pInternalCommand; | 255 | BURN_ENGINE_COMMAND* pInternalCommand; |
| @@ -328,6 +329,8 @@ void PlanUninitializeExecuteAction( | |||
| 328 | ); | 329 | ); |
| 329 | HRESULT PlanSetVariables( | 330 | HRESULT PlanSetVariables( |
| 330 | __in BOOTSTRAPPER_ACTION action, | 331 | __in BOOTSTRAPPER_ACTION action, |
| 332 | __in BOOTSTRAPPER_PACKAGE_SCOPE authoredScope, | ||
| 333 | __in BOOTSTRAPPER_SCOPE plannedScope, | ||
| 331 | __in BURN_VARIABLES* pVariables | 334 | __in BURN_VARIABLES* pVariables |
| 332 | ); | 335 | ); |
| 333 | HRESULT PlanDefaultRelatedBundlePlanType( | 336 | HRESULT PlanDefaultRelatedBundlePlanType( |
| @@ -479,6 +482,15 @@ HRESULT PlanSetResumeCommand( | |||
| 479 | void PlanDump( | 482 | void PlanDump( |
| 480 | __in BURN_PLAN* pPlan | 483 | __in BURN_PLAN* pPlan |
| 481 | ); | 484 | ); |
| 485 | HRESULT PlanPackagesAndBundleScope( | ||
| 486 | __in BURN_PACKAGE* rgPackages, | ||
| 487 | __in DWORD cPackages, | ||
| 488 | __in BOOTSTRAPPER_SCOPE scope, | ||
| 489 | __in BOOTSTRAPPER_PACKAGE_SCOPE authoredScope, | ||
| 490 | __in BOOTSTRAPPER_SCOPE commandLineScope, | ||
| 491 | __out BOOTSTRAPPER_SCOPE* pResultingScope, | ||
| 492 | __out BOOL* pfPerMachine | ||
| 493 | ); | ||
| 482 | 494 | ||
| 483 | #if defined(__cplusplus) | 495 | #if defined(__cplusplus) |
| 484 | } | 496 | } |
diff --git a/src/burn/engine/registration.cpp b/src/burn/engine/registration.cpp index 9733e92c..fa1b024a 100644 --- a/src/burn/engine/registration.cpp +++ b/src/burn/engine/registration.cpp | |||
| @@ -39,10 +39,6 @@ static HRESULT ParseSoftwareTagsFromXml( | |||
| 39 | __out BURN_SOFTWARE_TAG** prgSoftwareTags, | 39 | __out BURN_SOFTWARE_TAG** prgSoftwareTags, |
| 40 | __out DWORD* pcSoftwareTags | 40 | __out DWORD* pcSoftwareTags |
| 41 | ); | 41 | ); |
| 42 | static HRESULT SetPaths( | ||
| 43 | __in BURN_REGISTRATION* pRegistration, | ||
| 44 | __in BURN_CACHE* pCache | ||
| 45 | ); | ||
| 46 | static HRESULT GetBundleManufacturer( | 42 | static HRESULT GetBundleManufacturer( |
| 47 | __in BURN_REGISTRATION* pRegistration, | 43 | __in BURN_REGISTRATION* pRegistration, |
| 48 | __in BURN_VARIABLES* pVariables, | 44 | __in BURN_VARIABLES* pVariables, |
| @@ -108,6 +104,15 @@ static HRESULT UpdateEstimatedSize( | |||
| 108 | ); | 104 | ); |
| 109 | static BOOL IsWuRebootPending(); | 105 | static BOOL IsWuRebootPending(); |
| 110 | static BOOL IsRegistryRebootPending(); | 106 | static BOOL IsRegistryRebootPending(); |
| 107 | static HRESULT RegistrationDetectResumeTypeByHive( | ||
| 108 | __in HKEY hkRegistrationRoot, | ||
| 109 | __in BURN_REGISTRATION* pRegistration, | ||
| 110 | __out BOOTSTRAPPER_RESUME_TYPE* pResumeType | ||
| 111 | ); | ||
| 112 | static HRESULT DetectInstalled( | ||
| 113 | __in BURN_REGISTRATION* pRegistration, | ||
| 114 | __in HKEY hkRoot | ||
| 115 | ); | ||
| 111 | 116 | ||
| 112 | // function definitions | 117 | // function definitions |
| 113 | 118 | ||
| @@ -163,9 +168,9 @@ extern "C" HRESULT RegistrationParseFromXml( | |||
| 163 | hr = XmlGetAttributeEx(pixnRegistrationNode, L"ExecutableName", &pRegistration->sczExecutableName); | 168 | hr = XmlGetAttributeEx(pixnRegistrationNode, L"ExecutableName", &pRegistration->sczExecutableName); |
| 164 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @ExecutableName."); | 169 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @ExecutableName."); |
| 165 | 170 | ||
| 166 | // @PerMachine | 171 | // @Scope |
| 167 | hr = XmlGetYesNoAttribute(pixnRegistrationNode, L"PerMachine", &pRegistration->fPerMachine); | 172 | hr = PackageParseScopeFromXml(pixnRegistrationNode, &pRegistration->scope); |
| 168 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @PerMachine."); | 173 | ExitOnOptionalXmlQueryFailure(hr, fFoundXml, "Failed to get @Scope."); |
| 169 | 174 | ||
| 170 | // select ARP node | 175 | // select ARP node |
| 171 | hr = XmlSelectSingleNode(pixnRegistrationNode, L"Arp", &pixnArpNode); | 176 | hr = XmlSelectSingleNode(pixnRegistrationNode, L"Arp", &pixnArpNode); |
| @@ -285,8 +290,18 @@ extern "C" HRESULT RegistrationParseFromXml( | |||
| 285 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @Classification."); | 290 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get @Classification."); |
| 286 | } | 291 | } |
| 287 | 292 | ||
| 288 | hr = SetPaths(pRegistration, pCache); | 293 | // Handle the easy case of build-time bundle scope early. |
| 289 | ExitOnFailure(hr, "Failed to set registration paths."); | 294 | if (BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE == pRegistration->scope || BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER == pRegistration->scope) |
| 295 | { | ||
| 296 | pRegistration->fPerMachine = BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE == pRegistration->scope; | ||
| 297 | |||
| 298 | hr = RegistrationSetPaths(pRegistration, pCache); | ||
| 299 | ExitOnFailure(hr, "Failed to set registration paths for fixed scope."); | ||
| 300 | } | ||
| 301 | else | ||
| 302 | { | ||
| 303 | pRegistration->hkRoot = reinterpret_cast<HKEY>(0ull); | ||
| 304 | } | ||
| 290 | 305 | ||
| 291 | LExit: | 306 | LExit: |
| 292 | ReleaseObject(pixnRegistrationNode); | 307 | ReleaseObject(pixnRegistrationNode); |
| @@ -452,31 +467,28 @@ LExit: | |||
| 452 | 467 | ||
| 453 | extern "C" HRESULT RegistrationDetectInstalled( | 468 | extern "C" HRESULT RegistrationDetectInstalled( |
| 454 | __in BURN_REGISTRATION* pRegistration | 469 | __in BURN_REGISTRATION* pRegistration |
| 455 | ) | 470 | ) |
| 456 | { | 471 | { |
| 457 | HRESULT hr = S_OK; | 472 | HRESULT hr = S_OK; |
| 458 | HKEY hkRegistration = NULL; | ||
| 459 | DWORD dwInstalled = 0; | ||
| 460 | 473 | ||
| 461 | pRegistration->fCached = FileExistsEx(pRegistration->sczCacheExecutablePath, NULL); | 474 | if (pRegistration->hkRoot) |
| 462 | pRegistration->detectedRegistrationType = BOOTSTRAPPER_REGISTRATION_TYPE_NONE; | ||
| 463 | |||
| 464 | // open registration key | ||
| 465 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_QUERY_VALUE, &hkRegistration); | ||
| 466 | if (SUCCEEDED(hr)) | ||
| 467 | { | 475 | { |
| 468 | hr = RegReadNumber(hkRegistration, REGISTRY_BUNDLE_INSTALLED, &dwInstalled); | 476 | hr = DetectInstalled(pRegistration, pRegistration->hkRoot); |
| 469 | |||
| 470 | pRegistration->detectedRegistrationType = (1 == dwInstalled) ? BOOTSTRAPPER_REGISTRATION_TYPE_FULL : BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS; | ||
| 471 | } | 477 | } |
| 472 | 478 | else | |
| 473 | // Not finding the key or value is okay. | ||
| 474 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | ||
| 475 | { | 479 | { |
| 476 | hr = S_OK; | 480 | // For PUOM/PMOU bundles, check per-machine then fall back to per-user. |
| 481 | hr = DetectInstalled(pRegistration, HKEY_LOCAL_MACHINE); | ||
| 482 | ExitOnFailure(hr, "Failed to detect HKEY_LOCAL_MACHINE bundle registration install state."); | ||
| 483 | |||
| 484 | if (BOOTSTRAPPER_REGISTRATION_TYPE_NONE == pRegistration->detectedRegistrationType) | ||
| 485 | { | ||
| 486 | hr = DetectInstalled(pRegistration, HKEY_CURRENT_USER); | ||
| 487 | ExitOnFailure(hr, "Failed to detect HKEY_CURRENT_USER bundle registration install state."); | ||
| 488 | } | ||
| 477 | } | 489 | } |
| 478 | 490 | ||
| 479 | ReleaseRegKey(hkRegistration); | 491 | LExit: |
| 480 | return hr; | 492 | return hr; |
| 481 | } | 493 | } |
| 482 | 494 | ||
| @@ -488,63 +500,26 @@ extern "C" HRESULT RegistrationDetectInstalled( | |||
| 488 | extern "C" HRESULT RegistrationDetectResumeType( | 500 | extern "C" HRESULT RegistrationDetectResumeType( |
| 489 | __in BURN_REGISTRATION* pRegistration, | 501 | __in BURN_REGISTRATION* pRegistration, |
| 490 | __out BOOTSTRAPPER_RESUME_TYPE* pResumeType | 502 | __out BOOTSTRAPPER_RESUME_TYPE* pResumeType |
| 491 | ) | 503 | ) |
| 492 | { | 504 | { |
| 493 | HRESULT hr = S_OK; | 505 | HRESULT hr = S_OK; |
| 494 | HKEY hkRegistration = NULL; | ||
| 495 | BOOL fExists = FALSE; | ||
| 496 | DWORD dwResume = 0; | ||
| 497 | 506 | ||
| 498 | // open registration key | 507 | if (pRegistration->hkRoot) |
| 499 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_QUERY_VALUE, &hkRegistration); | ||
| 500 | ExitOnPathFailure(hr, fExists, "Failed to open registration key."); | ||
| 501 | |||
| 502 | if (!fExists) | ||
| 503 | { | 508 | { |
| 504 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_NONE; | 509 | hr = RegistrationDetectResumeTypeByHive(pRegistration->hkRoot, pRegistration, pResumeType); |
| 505 | ExitFunction(); | ||
| 506 | } | 510 | } |
| 507 | 511 | else | |
| 508 | // read Resume value | ||
| 509 | hr = RegReadNumber(hkRegistration, L"Resume", &dwResume); | ||
| 510 | ExitOnPathFailure(hr, fExists, "Failed to read Resume value."); | ||
| 511 | |||
| 512 | if (!fExists) | ||
| 513 | { | ||
| 514 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_INVALID; | ||
| 515 | ExitFunction(); | ||
| 516 | } | ||
| 517 | |||
| 518 | switch (dwResume) | ||
| 519 | { | 512 | { |
| 520 | case BURN_RESUME_MODE_ACTIVE: | 513 | hr = RegistrationDetectResumeTypeByHive(HKEY_LOCAL_MACHINE, pRegistration, pResumeType); |
| 521 | // a previous run was interrupted | ||
| 522 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED; | ||
| 523 | break; | ||
| 524 | |||
| 525 | case BURN_RESUME_MODE_SUSPEND: | ||
| 526 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_SUSPEND; | ||
| 527 | break; | ||
| 528 | |||
| 529 | case BURN_RESUME_MODE_ARP: | ||
| 530 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_ARP; | ||
| 531 | break; | ||
| 532 | |||
| 533 | case BURN_RESUME_MODE_REBOOT_PENDING: | ||
| 534 | // The volatile pending registry doesn't exist (checked above) which means | ||
| 535 | // the system was successfully restarted. | ||
| 536 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_REBOOT; | ||
| 537 | break; | ||
| 538 | 514 | ||
| 539 | default: | 515 | if (BOOTSTRAPPER_RESUME_TYPE_NONE == *pResumeType) |
| 540 | // the value stored in the registry is not valid | 516 | { |
| 541 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_INVALID; | 517 | hr = RegistrationDetectResumeTypeByHive(HKEY_CURRENT_USER, pRegistration, pResumeType); |
| 542 | break; | 518 | } |
| 543 | } | 519 | } |
| 520 | ExitOnFailure(hr, "Failed to find bundle registration: %ls", pRegistration->sczRegistrationKey); | ||
| 544 | 521 | ||
| 545 | LExit: | 522 | LExit: |
| 546 | ReleaseRegKey(hkRegistration); | ||
| 547 | |||
| 548 | return hr; | 523 | return hr; |
| 549 | } | 524 | } |
| 550 | 525 | ||
| @@ -889,7 +864,7 @@ extern "C" HRESULT RegistrationSessionEnd( | |||
| 889 | 864 | ||
| 890 | // Open registration key. | 865 | // Open registration key. |
| 891 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_WRITE, &hkRegistration); | 866 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_WRITE, &hkRegistration); |
| 892 | ExitOnFailure(hr, "Failed to open registration key."); | 867 | ExitOnFailure(hr, "Failed to open registration key for ending session."); |
| 893 | 868 | ||
| 894 | // update display name | 869 | // update display name |
| 895 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS == registrationType); | 870 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS == registrationType); |
| @@ -1068,6 +1043,39 @@ extern "C" HRESULT RegistrationGetResumeCommandLine( | |||
| 1068 | return hr; | 1043 | return hr; |
| 1069 | } | 1044 | } |
| 1070 | 1045 | ||
| 1046 | extern "C" HRESULT RegistrationSetPaths( | ||
| 1047 | __in BURN_REGISTRATION* pRegistration, | ||
| 1048 | __in BURN_CACHE* pCache | ||
| 1049 | ) | ||
| 1050 | { | ||
| 1051 | HRESULT hr = S_OK; | ||
| 1052 | LPWSTR sczCacheDirectory = NULL; | ||
| 1053 | |||
| 1054 | // save registration key root | ||
| 1055 | pRegistration->hkRoot = pRegistration->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | ||
| 1056 | |||
| 1057 | // build uninstall registry key path | ||
| 1058 | hr = StrAllocFormatted(&pRegistration->sczRegistrationKey, L"%ls\\%ls", BURN_REGISTRATION_REGISTRY_UNINSTALL_KEY, pRegistration->sczCode); | ||
| 1059 | ExitOnFailure(hr, "Failed to build uninstall registry key path."); | ||
| 1060 | |||
| 1061 | // build cache directory | ||
| 1062 | hr = CacheGetCompletedPath(pCache, pRegistration->fPerMachine, pRegistration->sczCode, &sczCacheDirectory); | ||
| 1063 | ExitOnFailure(hr, "Failed to build cache directory."); | ||
| 1064 | |||
| 1065 | // build cached executable path | ||
| 1066 | hr = PathConcatRelativeToFullyQualifiedBase(sczCacheDirectory, pRegistration->sczExecutableName, &pRegistration->sczCacheExecutablePath); | ||
| 1067 | ExitOnFailure(hr, "Failed to build cached executable path."); | ||
| 1068 | |||
| 1069 | // build state file path | ||
| 1070 | hr = StrAllocFormatted(&pRegistration->sczStateFile, L"%ls\\state.rsm", sczCacheDirectory); | ||
| 1071 | ExitOnFailure(hr, "Failed to build state file path."); | ||
| 1072 | |||
| 1073 | LExit: | ||
| 1074 | ReleaseStr(sczCacheDirectory); | ||
| 1075 | |||
| 1076 | return hr; | ||
| 1077 | } | ||
| 1078 | |||
| 1071 | 1079 | ||
| 1072 | // internal helper functions | 1080 | // internal helper functions |
| 1073 | 1081 | ||
| @@ -1141,38 +1149,6 @@ LExit: | |||
| 1141 | return hr; | 1149 | return hr; |
| 1142 | } | 1150 | } |
| 1143 | 1151 | ||
| 1144 | static HRESULT SetPaths( | ||
| 1145 | __in BURN_REGISTRATION* pRegistration, | ||
| 1146 | __in BURN_CACHE* pCache | ||
| 1147 | ) | ||
| 1148 | { | ||
| 1149 | HRESULT hr = S_OK; | ||
| 1150 | LPWSTR sczCacheDirectory = NULL; | ||
| 1151 | |||
| 1152 | // save registration key root | ||
| 1153 | pRegistration->hkRoot = pRegistration->fPerMachine ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; | ||
| 1154 | |||
| 1155 | // build uninstall registry key path | ||
| 1156 | hr = StrAllocFormatted(&pRegistration->sczRegistrationKey, L"%ls\\%ls", BURN_REGISTRATION_REGISTRY_UNINSTALL_KEY, pRegistration->sczCode); | ||
| 1157 | ExitOnFailure(hr, "Failed to build uninstall registry key path."); | ||
| 1158 | |||
| 1159 | // build cache directory | ||
| 1160 | hr = CacheGetCompletedPath(pCache, pRegistration->fPerMachine, pRegistration->sczCode, &sczCacheDirectory); | ||
| 1161 | ExitOnFailure(hr, "Failed to build cache directory."); | ||
| 1162 | |||
| 1163 | // build cached executable path | ||
| 1164 | hr = PathConcatRelativeToFullyQualifiedBase(sczCacheDirectory, pRegistration->sczExecutableName, &pRegistration->sczCacheExecutablePath); | ||
| 1165 | ExitOnFailure(hr, "Failed to build cached executable path."); | ||
| 1166 | |||
| 1167 | // build state file path | ||
| 1168 | hr = StrAllocFormatted(&pRegistration->sczStateFile, L"%ls\\state.rsm", sczCacheDirectory); | ||
| 1169 | ExitOnFailure(hr, "Failed to build state file path."); | ||
| 1170 | |||
| 1171 | LExit: | ||
| 1172 | ReleaseStr(sczCacheDirectory); | ||
| 1173 | return hr; | ||
| 1174 | } | ||
| 1175 | |||
| 1176 | static HRESULT GetBundleManufacturer( | 1152 | static HRESULT GetBundleManufacturer( |
| 1177 | __in BURN_REGISTRATION* pRegistration, | 1153 | __in BURN_REGISTRATION* pRegistration, |
| 1178 | __in BURN_VARIABLES* pVariables, | 1154 | __in BURN_VARIABLES* pVariables, |
| @@ -1703,3 +1679,102 @@ static BOOL IsRegistryRebootPending() | |||
| 1703 | 1679 | ||
| 1704 | return fRebootPending; | 1680 | return fRebootPending; |
| 1705 | } | 1681 | } |
| 1682 | |||
| 1683 | static HRESULT RegistrationDetectResumeTypeByHive( | ||
| 1684 | __in HKEY hkRegistrationRoot, | ||
| 1685 | __in BURN_REGISTRATION* pRegistration, | ||
| 1686 | __out BOOTSTRAPPER_RESUME_TYPE* pResumeType | ||
| 1687 | ) | ||
| 1688 | { | ||
| 1689 | HRESULT hr = S_OK; | ||
| 1690 | HKEY hkRegistration = NULL; | ||
| 1691 | BOOL fExists = FALSE; | ||
| 1692 | DWORD dwResume = 0; | ||
| 1693 | |||
| 1694 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_NONE; | ||
| 1695 | |||
| 1696 | // open registration key | ||
| 1697 | hr = RegOpen(hkRegistrationRoot, pRegistration->sczRegistrationKey, KEY_QUERY_VALUE, &hkRegistration); | ||
| 1698 | ExitOnPathFailure(hr, fExists, "Failed to open registration key."); | ||
| 1699 | |||
| 1700 | if (!fExists) | ||
| 1701 | { | ||
| 1702 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_NONE; | ||
| 1703 | ExitFunction(); | ||
| 1704 | } | ||
| 1705 | |||
| 1706 | // read Resume value | ||
| 1707 | hr = RegReadNumber(hkRegistration, L"Resume", &dwResume); | ||
| 1708 | ExitOnPathFailure(hr, fExists, "Failed to read Resume value."); | ||
| 1709 | |||
| 1710 | if (!fExists) | ||
| 1711 | { | ||
| 1712 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_INVALID; | ||
| 1713 | ExitFunction(); | ||
| 1714 | } | ||
| 1715 | |||
| 1716 | switch (dwResume) | ||
| 1717 | { | ||
| 1718 | case BURN_RESUME_MODE_ACTIVE: | ||
| 1719 | // a previous run was interrupted | ||
| 1720 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED; | ||
| 1721 | break; | ||
| 1722 | |||
| 1723 | case BURN_RESUME_MODE_SUSPEND: | ||
| 1724 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_SUSPEND; | ||
| 1725 | break; | ||
| 1726 | |||
| 1727 | case BURN_RESUME_MODE_ARP: | ||
| 1728 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_ARP; | ||
| 1729 | break; | ||
| 1730 | |||
| 1731 | case BURN_RESUME_MODE_REBOOT_PENDING: | ||
| 1732 | // The volatile pending registry doesn't exist (checked above) which means | ||
| 1733 | // the system was successfully restarted. | ||
| 1734 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_REBOOT; | ||
| 1735 | break; | ||
| 1736 | |||
| 1737 | default: | ||
| 1738 | // the value stored in the registry is not valid | ||
| 1739 | *pResumeType = BOOTSTRAPPER_RESUME_TYPE_INVALID; | ||
| 1740 | break; | ||
| 1741 | } | ||
| 1742 | |||
| 1743 | LExit: | ||
| 1744 | ReleaseRegKey(hkRegistration); | ||
| 1745 | |||
| 1746 | return hr; | ||
| 1747 | } | ||
| 1748 | |||
| 1749 | static HRESULT DetectInstalled( | ||
| 1750 | __in BURN_REGISTRATION* pRegistration, | ||
| 1751 | __in HKEY hkRoot | ||
| 1752 | ) | ||
| 1753 | { | ||
| 1754 | HRESULT hr = S_OK; | ||
| 1755 | HKEY hkRegistration = NULL; | ||
| 1756 | DWORD dwInstalled = 0; | ||
| 1757 | |||
| 1758 | pRegistration->fCached = pRegistration->sczCacheExecutablePath && FileExistsEx(pRegistration->sczCacheExecutablePath, NULL); | ||
| 1759 | pRegistration->detectedRegistrationType = BOOTSTRAPPER_REGISTRATION_TYPE_NONE; | ||
| 1760 | |||
| 1761 | // open registration key | ||
| 1762 | hr = RegOpen(hkRoot, pRegistration->sczRegistrationKey, KEY_QUERY_VALUE, &hkRegistration); | ||
| 1763 | if (SUCCEEDED(hr)) | ||
| 1764 | { | ||
| 1765 | hr = RegReadNumber(hkRegistration, REGISTRY_BUNDLE_INSTALLED, &dwInstalled); | ||
| 1766 | |||
| 1767 | pRegistration->detectedRegistrationType = (1 == dwInstalled) ? BOOTSTRAPPER_REGISTRATION_TYPE_FULL : BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS; | ||
| 1768 | } | ||
| 1769 | |||
| 1770 | // Not finding the key or value is okay. | ||
| 1771 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | ||
| 1772 | { | ||
| 1773 | hr = S_OK; | ||
| 1774 | } | ||
| 1775 | |||
| 1776 | ReleaseRegKey(hkRegistration); | ||
| 1777 | |||
| 1778 | return hr; | ||
| 1779 | } | ||
| 1780 | |||
diff --git a/src/burn/engine/registration.h b/src/burn/engine/registration.h index 326f21c6..e83b75b6 100644 --- a/src/burn/engine/registration.h +++ b/src/burn/engine/registration.h | |||
| @@ -94,11 +94,12 @@ typedef struct _BURN_SOFTWARE_TAGS | |||
| 94 | 94 | ||
| 95 | typedef struct _BURN_REGISTRATION | 95 | typedef struct _BURN_REGISTRATION |
| 96 | { | 96 | { |
| 97 | BOOL fPerMachine; | 97 | BOOL fPerMachine; // For PUOM/PMOU bundles, only valid after planning. |
| 98 | BOOL fForceSystemComponent; | 98 | BOOL fForceSystemComponent; |
| 99 | BOOL fDisableResume; | 99 | BOOL fDisableResume; |
| 100 | BOOL fCached; | 100 | BOOL fCached; |
| 101 | BOOTSTRAPPER_REGISTRATION_TYPE detectedRegistrationType; | 101 | BOOTSTRAPPER_REGISTRATION_TYPE detectedRegistrationType; |
| 102 | BOOTSTRAPPER_PACKAGE_SCOPE scope; | ||
| 102 | LPWSTR sczCode; | 103 | LPWSTR sczCode; |
| 103 | LPWSTR sczTag; | 104 | LPWSTR sczTag; |
| 104 | 105 | ||
| @@ -167,7 +168,7 @@ HRESULT RegistrationParseFromXml( | |||
| 167 | __in BURN_REGISTRATION* pRegistration, | 168 | __in BURN_REGISTRATION* pRegistration, |
| 168 | __in BURN_CACHE* pCache, | 169 | __in BURN_CACHE* pCache, |
| 169 | __in IXMLDOMNode* pixnBundle | 170 | __in IXMLDOMNode* pixnBundle |
| 170 | ); | 171 | ); |
| 171 | void RegistrationUninitialize( | 172 | void RegistrationUninitialize( |
| 172 | __in BURN_REGISTRATION* pRegistration | 173 | __in BURN_REGISTRATION* pRegistration |
| 173 | ); | 174 | ); |
| @@ -191,7 +192,7 @@ HRESULT RegistrationDetectRelatedBundles( | |||
| 191 | ); | 192 | ); |
| 192 | HRESULT RegistrationPlanInitialize( | 193 | HRESULT RegistrationPlanInitialize( |
| 193 | __in BURN_REGISTRATION* pRegistration | 194 | __in BURN_REGISTRATION* pRegistration |
| 194 | ); | 195 | ); |
| 195 | HRESULT RegistrationSessionBegin( | 196 | HRESULT RegistrationSessionBegin( |
| 196 | __in_z LPCWSTR wzEngineWorkingPath, | 197 | __in_z LPCWSTR wzEngineWorkingPath, |
| 197 | __in BURN_REGISTRATION* pRegistration, | 198 | __in BURN_REGISTRATION* pRegistration, |
| @@ -225,6 +226,10 @@ HRESULT RegistrationGetResumeCommandLine( | |||
| 225 | __in const BURN_REGISTRATION* pRegistration, | 226 | __in const BURN_REGISTRATION* pRegistration, |
| 226 | __deref_out_z LPWSTR* psczResumeCommandLine | 227 | __deref_out_z LPWSTR* psczResumeCommandLine |
| 227 | ); | 228 | ); |
| 229 | HRESULT RegistrationSetPaths( | ||
| 230 | __in BURN_REGISTRATION* pRegistration, | ||
| 231 | __in BURN_CACHE* pCache | ||
| 232 | ); | ||
| 228 | 233 | ||
| 229 | 234 | ||
| 230 | #if defined(__cplusplus) | 235 | #if defined(__cplusplus) |
diff --git a/src/burn/engine/relatedbundle.cpp b/src/burn/engine/relatedbundle.cpp index c9aa7170..d0b97af0 100644 --- a/src/burn/engine/relatedbundle.cpp +++ b/src/burn/engine/relatedbundle.cpp | |||
| @@ -22,7 +22,7 @@ static __callback int __cdecl CompareRelatedBundlesPlan( | |||
| 22 | ); | 22 | ); |
| 23 | static BUNDLE_QUERY_CALLBACK_RESULT CALLBACK QueryRelatedBundlesCallback( | 23 | static BUNDLE_QUERY_CALLBACK_RESULT CALLBACK QueryRelatedBundlesCallback( |
| 24 | __in const BUNDLE_QUERY_RELATED_BUNDLE_RESULT* pBundle, | 24 | __in const BUNDLE_QUERY_RELATED_BUNDLE_RESULT* pBundle, |
| 25 | __in_opt LPVOID pvContext | 25 | __in LPVOID pvContext |
| 26 | ); | 26 | ); |
| 27 | static HRESULT LoadIfRelatedBundle( | 27 | static HRESULT LoadIfRelatedBundle( |
| 28 | __in const BUNDLE_QUERY_RELATED_BUNDLE_RESULT* pBundle, | 28 | __in const BUNDLE_QUERY_RELATED_BUNDLE_RESULT* pBundle, |
| @@ -258,7 +258,7 @@ static __callback int __cdecl CompareRelatedBundlesPlan( | |||
| 258 | 258 | ||
| 259 | static BUNDLE_QUERY_CALLBACK_RESULT CALLBACK QueryRelatedBundlesCallback( | 259 | static BUNDLE_QUERY_CALLBACK_RESULT CALLBACK QueryRelatedBundlesCallback( |
| 260 | __in const BUNDLE_QUERY_RELATED_BUNDLE_RESULT* pBundle, | 260 | __in const BUNDLE_QUERY_RELATED_BUNDLE_RESULT* pBundle, |
| 261 | __in_opt LPVOID pvContext | 261 | __in LPVOID pvContext |
| 262 | ) | 262 | ) |
| 263 | { | 263 | { |
| 264 | HRESULT hr = S_OK; | 264 | HRESULT hr = S_OK; |
diff --git a/src/burn/engine/uithread.cpp b/src/burn/engine/uithread.cpp index 9beb9f80..1f7db965 100644 --- a/src/burn/engine/uithread.cpp +++ b/src/burn/engine/uithread.cpp | |||
| @@ -123,7 +123,7 @@ static DWORD WINAPI ThreadProc( | |||
| 123 | info.pEngineState = pEngineState; | 123 | info.pEngineState = pEngineState; |
| 124 | 124 | ||
| 125 | // Create the window to handle reboots without activating it. | 125 | // Create the window to handle reboots without activating it. |
| 126 | hWnd = ::CreateWindowExW(WS_EX_NOACTIVATE, wc.lpszClassName, NULL, WS_POPUP, 0, 0, 0, 0, HWND_DESKTOP, NULL, pContext->hInstance, &info); | 126 | hWnd = ::CreateWindowExW(WS_EX_NOACTIVATE, wc.lpszClassName, BURN_UITHREAD_CLASS_WINDOW, WS_POPUP, 0, 0, 0, 0, HWND_DESKTOP, NULL, pContext->hInstance, &info); |
| 127 | ExitOnNullWithLastError(hWnd, hr, "Failed to create Burn UI thread window."); | 127 | ExitOnNullWithLastError(hWnd, hr, "Failed to create Burn UI thread window."); |
| 128 | 128 | ||
| 129 | ::ShowWindow(hWnd, SW_SHOWNA); | 129 | ::ShowWindow(hWnd, SW_SHOWNA); |
diff --git a/src/burn/engine/variable.cpp b/src/burn/engine/variable.cpp index a795d76c..1b7dc4d1 100644 --- a/src/burn/engine/variable.cpp +++ b/src/burn/engine/variable.cpp | |||
| @@ -305,6 +305,8 @@ extern "C" HRESULT VariableInitialize( | |||
| 305 | {BURN_BUNDLE_TAG, InitializeVariableString, (DWORD_PTR)L"", FALSE, TRUE}, | 305 | {BURN_BUNDLE_TAG, InitializeVariableString, (DWORD_PTR)L"", FALSE, TRUE}, |
| 306 | {BURN_BUNDLE_UILEVEL, InitializeVariableNumeric, 0, FALSE, TRUE}, | 306 | {BURN_BUNDLE_UILEVEL, InitializeVariableNumeric, 0, FALSE, TRUE}, |
| 307 | {BURN_BUNDLE_VERSION, InitializeVariableVersion, (DWORD_PTR)L"0", FALSE, TRUE}, | 307 | {BURN_BUNDLE_VERSION, InitializeVariableVersion, (DWORD_PTR)L"0", FALSE, TRUE}, |
| 308 | {BURN_BUNDLE_SCOPE, InitializeVariableNumeric, 0, FALSE, TRUE}, | ||
| 309 | {BURN_BUNDLE_PLANNED_SCOPE, InitializeVariableNumeric, 0, FALSE, TRUE}, | ||
| 308 | }; | 310 | }; |
| 309 | 311 | ||
| 310 | const WELL_KNOWN_VARIABLE_DECLARATION vrgWellKnownVariableNames[] = | 312 | const WELL_KNOWN_VARIABLE_DECLARATION vrgWellKnownVariableNames[] = |
diff --git a/src/burn/test/BurnUnitTest/ApprovedExeTest.cpp b/src/burn/test/BurnUnitTest/ApprovedExeTest.cpp index da51f1f8..6798d3cb 100644 --- a/src/burn/test/BurnUnitTest/ApprovedExeTest.cpp +++ b/src/burn/test/BurnUnitTest/ApprovedExeTest.cpp | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -308,5 +304,3 @@ namespace Bootstrapper | |||
| 308 | } | 304 | } |
| 309 | } | 305 | } |
| 310 | } | 306 | } |
| 311 | } | ||
| 312 | } | ||
diff --git a/src/burn/test/BurnUnitTest/BurnTestException.h b/src/burn/test/BurnUnitTest/BurnTestException.h index b9467926..b6055041 100644 --- a/src/burn/test/BurnUnitTest/BurnTestException.h +++ b/src/burn/test/BurnUnitTest/BurnTestException.h | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -35,8 +31,6 @@ namespace Bootstrapper | |||
| 35 | } | 31 | } |
| 36 | } | 32 | } |
| 37 | } | 33 | } |
| 38 | } | ||
| 39 | } | ||
| 40 | 34 | ||
| 41 | // this class is used by __TestThrowOnFailure_Format() below to deallocate | 35 | // this class is used by __TestThrowOnFailure_Format() below to deallocate |
| 42 | // the string created after the function call has returned | 36 | // the string created after the function call has returned |
| @@ -83,6 +77,6 @@ LExit: | |||
| 83 | } | 77 | } |
| 84 | #pragma warning (pop) | 78 | #pragma warning (pop) |
| 85 | 79 | ||
| 86 | #define TestThrowOnFailure(hr, s) if (FAILED(hr)) { throw gcnew Microsoft::Tools::WindowsInstallerXml::Test::Bootstrapper::BurnTestException(hr, gcnew System::String(s)); } | 80 | #define TestThrowOnFailure(hr, s) if (FAILED(hr)) { throw gcnew WixToolset::Test::Bootstrapper::BurnTestException(hr, gcnew System::String(s)); } |
| 87 | #define TestThrowOnFailure1(hr, s, p) if (FAILED(hr)) { throw gcnew Microsoft::Tools::WindowsInstallerXml::Test::Bootstrapper::BurnTestException(hr, gcnew System::String(__TestThrowOnFailure_Format(s, p))); } | 81 | #define TestThrowOnFailure1(hr, s, p) if (FAILED(hr)) { throw gcnew WixToolset::Test::Bootstrapper::BurnTestException(hr, gcnew System::String(__TestThrowOnFailure_Format(s, p))); } |
| 88 | #define TestThrowOnFailure2(hr, s, p1, p2) if (FAILED(hr)) { throw gcnew Microsoft::Tools::WindowsInstallerXml::Test::Bootstrapper::BurnTestException(hr, gcnew System::String(__TestThrowOnFailure_Format(s, p1, p2))); } | 82 | #define TestThrowOnFailure2(hr, s, p1, p2) if (FAILED(hr)) { throw gcnew WixToolset::Test::Bootstrapper::BurnTestException(hr, gcnew System::String(__TestThrowOnFailure_Format(s, p1, p2))); } |
diff --git a/src/burn/test/BurnUnitTest/BurnTestFixture.h b/src/burn/test/BurnUnitTest/BurnTestFixture.h index 35acba67..95fd6fe5 100644 --- a/src/burn/test/BurnUnitTest/BurnTestFixture.h +++ b/src/burn/test/BurnUnitTest/BurnTestFixture.h | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -71,5 +67,3 @@ namespace Bootstrapper | |||
| 71 | } | 67 | } |
| 72 | } | 68 | } |
| 73 | } | 69 | } |
| 74 | } | ||
| 75 | } | ||
diff --git a/src/burn/test/BurnUnitTest/BurnUnitTest.h b/src/burn/test/BurnUnitTest/BurnUnitTest.h index ed1d2956..33cfe46d 100644 --- a/src/burn/test/BurnUnitTest/BurnUnitTest.h +++ b/src/burn/test/BurnUnitTest/BurnUnitTest.h | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -44,5 +40,3 @@ namespace Bootstrapper | |||
| 44 | } | 40 | } |
| 45 | } | 41 | } |
| 46 | } | 42 | } |
| 47 | } | ||
| 48 | } | ||
diff --git a/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj b/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj index 9704efa5..c741789e 100644 --- a/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj +++ b/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj | |||
| @@ -22,7 +22,6 @@ | |||
| 22 | <Platform>x64</Platform> | 22 | <Platform>x64</Platform> |
| 23 | </ProjectConfiguration> | 23 | </ProjectConfiguration> |
| 24 | </ItemGroup> | 24 | </ItemGroup> |
| 25 | |||
| 26 | <PropertyGroup Label="Globals"> | 25 | <PropertyGroup Label="Globals"> |
| 27 | <ProjectTypes>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}</ProjectTypes> | 26 | <ProjectTypes>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}</ProjectTypes> |
| 28 | <ProjectGuid>{9D1F1BA3-9393-4833-87A3-D5F1FC08EF67}</ProjectGuid> | 27 | <ProjectGuid>{9D1F1BA3-9393-4833-87A3-D5F1FC08EF67}</ProjectGuid> |
| @@ -34,15 +33,12 @@ | |||
| 34 | <SignOutput>false</SignOutput> | 33 | <SignOutput>false</SignOutput> |
| 35 | <IsWixTestProject>true</IsWixTestProject> | 34 | <IsWixTestProject>true</IsWixTestProject> |
| 36 | </PropertyGroup> | 35 | </PropertyGroup> |
| 37 | |||
| 38 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | 36 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
| 39 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | 37 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
| 40 | |||
| 41 | <PropertyGroup> | 38 | <PropertyGroup> |
| 42 | <ProjectAdditionalIncludeDirectories>$(ProjectAdditionalIncludeDirectories);$(BurnGeneratedHeaderDirectory);..\..\engine;..\..\..\api\burn\inc;..\..\..\libs\dutil\WixToolset.Dutil\inc</ProjectAdditionalIncludeDirectories> | 39 | <ProjectAdditionalIncludeDirectories>$(ProjectAdditionalIncludeDirectories);$(BurnGeneratedHeaderDirectory);..\..\engine;..\..\..\api\burn\inc;..\..\..\libs\dutil\WixToolset.Dutil\inc</ProjectAdditionalIncludeDirectories> |
| 43 | <ProjectAdditionalLinkLibraries>cabinet.lib;crypt32.lib;msi.lib;rpcrt4.lib;shlwapi.lib;userenv.lib;wininet.lib;wintrust.lib;$(RootBuildFolder)libs\$(Configuration)\$(WixNativeSdkLibraryToolset)\$(PlatformTarget)\dutil.lib;engine.res</ProjectAdditionalLinkLibraries> | 40 | <ProjectAdditionalLinkLibraries>cabinet.lib;crypt32.lib;msi.lib;rpcrt4.lib;shlwapi.lib;userenv.lib;wininet.lib;wintrust.lib;$(RootBuildFolder)libs\$(Configuration)\$(WixNativeSdkLibraryToolset)\$(PlatformTarget)\dutil.lib;engine.res</ProjectAdditionalLinkLibraries> |
| 44 | </PropertyGroup> | 41 | </PropertyGroup> |
| 45 | |||
| 46 | <ItemGroup> | 42 | <ItemGroup> |
| 47 | <ClCompile Include="AssemblyInfo.cpp" /> | 43 | <ClCompile Include="AssemblyInfo.cpp" /> |
| 48 | <ClCompile Include="ApprovedExeTest.cpp" /> | 44 | <ClCompile Include="ApprovedExeTest.cpp" /> |
| @@ -76,11 +72,9 @@ | |||
| 76 | <ClInclude Include="TestRegistryFixture.h" /> | 72 | <ClInclude Include="TestRegistryFixture.h" /> |
| 77 | <ClInclude Include="VariableHelpers.h" /> | 73 | <ClInclude Include="VariableHelpers.h" /> |
| 78 | </ItemGroup> | 74 | </ItemGroup> |
| 79 | |||
| 80 | <ItemGroup> | 75 | <ItemGroup> |
| 81 | <ResourceCompile Include="BurnUnitTest.rc" /> | 76 | <ResourceCompile Include="BurnUnitTest.rc" /> |
| 82 | </ItemGroup> | 77 | </ItemGroup> |
| 83 | |||
| 84 | <ItemGroup> | 78 | <ItemGroup> |
| 85 | <None Include="TestData\CacheTest\CacheSignatureTest.File" CopyToOutputDirectory="PreserveNewest" /> | 79 | <None Include="TestData\CacheTest\CacheSignatureTest.File" CopyToOutputDirectory="PreserveNewest" /> |
| 86 | <None Include="TestData\PlanTest\BasicFunctionality_BundleA_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | 80 | <None Include="TestData\PlanTest\BasicFunctionality_BundleA_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> |
| @@ -91,14 +85,23 @@ | |||
| 91 | <None Include="TestData\PlanTest\MsuPackageFixture_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | 85 | <None Include="TestData\PlanTest\MsuPackageFixture_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> |
| 92 | <None Include="TestData\PlanTest\Slipstream_BundleA_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | 86 | <None Include="TestData\PlanTest\Slipstream_BundleA_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> |
| 93 | <None Include="TestData\PlanTest\Slipstream_BundleA_modified_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | 87 | <None Include="TestData\PlanTest\Slipstream_BundleA_modified_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> |
| 88 | <None Include="TestData\PlanTest\AllPmouBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 89 | <None Include="TestData\PlanTest\AllPuomBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 90 | <None Include="TestData\PlanTest\PerUserBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 91 | <None Include="TestData\PlanTest\PerMachineBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 92 | <None Include="TestData\PlanTest\PuPmouBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 93 | <None Include="TestData\PlanTest\PuPuomBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 94 | <None Include="TestData\PlanTest\PmPuomBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 95 | <None Include="TestData\PlanTest\PmPmouBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 96 | <None Include="TestData\PlanTest\PmPuPmouBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 97 | <None Include="TestData\PlanTest\PmPuPuomBundle_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 98 | <None Include="TestData\PlanTest\PuomBundlePackage_manifest.xml" CopyToOutputDirectory="PreserveNewest" /> | ||
| 94 | </ItemGroup> | 99 | </ItemGroup> |
| 95 | |||
| 96 | <ItemGroup> | 100 | <ItemGroup> |
| 97 | <ProjectReference Include="..\..\engine\engine.vcxproj"> | 101 | <ProjectReference Include="..\..\engine\engine.vcxproj"> |
| 98 | <Project>{8119537D-E1D9-6591-D51A-49770A2F9C37}</Project> | 102 | <Project>{8119537D-E1D9-6591-D51A-49770A2F9C37}</Project> |
| 99 | </ProjectReference> | 103 | </ProjectReference> |
| 100 | </ItemGroup> | 104 | </ItemGroup> |
| 101 | |||
| 102 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | 105 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
| 103 | <Import Project="..\..\..\internal\WixInternal.TestSupport.Native\build\WixInternal.TestSupport.Native.targets" /> | 106 | <Import Project="..\..\..\internal\WixInternal.TestSupport.Native\build\WixInternal.TestSupport.Native.targets" /> |
| 104 | </Project> | 107 | </Project> |
diff --git a/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj.filters b/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj.filters index aac5ab8b..0c458f48 100644 --- a/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj.filters +++ b/src/burn/test/BurnUnitTest/BurnUnitTest.vcxproj.filters | |||
| @@ -98,4 +98,20 @@ | |||
| 98 | <Filter>Resource Files</Filter> | 98 | <Filter>Resource Files</Filter> |
| 99 | </ResourceCompile> | 99 | </ResourceCompile> |
| 100 | </ItemGroup> | 100 | </ItemGroup> |
| 101 | </Project> | 101 | <ItemGroup> |
| 102 | <None Include="$(MSBuildThisFileDirectory)xunit.runner.visualstudio.testadapter.dll" /> | ||
| 103 | <None Include="$(MSBuildThisFileDirectory)xunit.abstractions.dll" /> | ||
| 104 | <None Include="$(MSBuildThisFileDirectory)xunit.runner.reporters.net452.dll" /> | ||
| 105 | <None Include="$(MSBuildThisFileDirectory)xunit.runner.utility.net452.dll" /> | ||
| 106 | <None Include="TestData\CacheTest\CacheSignatureTest.File" /> | ||
| 107 | <None Include="TestData\PlanTest\BasicFunctionality_BundleA_manifest.xml" /> | ||
| 108 | <None Include="TestData\PlanTest\BundlePackage_Multiple_manifest.xml" /> | ||
| 109 | <None Include="TestData\PlanTest\ExePackage_PerUserArpEntry_manifest.xml" /> | ||
| 110 | <None Include="TestData\PlanTest\Failure_BundleD_manifest.xml" /> | ||
| 111 | <None Include="TestData\PlanTest\PuomWithPerMachineBundle_manifest.xml" /> | ||
| 112 | <None Include="TestData\PlanTest\MsiTransaction_BundleAv1_manifest.xml" /> | ||
| 113 | <None Include="TestData\PlanTest\MsuPackageFixture_manifest.xml" /> | ||
| 114 | <None Include="TestData\PlanTest\Slipstream_BundleA_manifest.xml" /> | ||
| 115 | <None Include="TestData\PlanTest\Slipstream_BundleA_modified_manifest.xml" /> | ||
| 116 | </ItemGroup> | ||
| 117 | </Project> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/CacheTest.cpp b/src/burn/test/BurnUnitTest/CacheTest.cpp index 8e3660b2..c142e673 100644 --- a/src/burn/test/BurnUnitTest/CacheTest.cpp +++ b/src/burn/test/BurnUnitTest/CacheTest.cpp | |||
| @@ -23,11 +23,7 @@ typedef struct _CACHE_TEST_CONTEXT | |||
| 23 | { | 23 | { |
| 24 | } CACHE_TEST_CONTEXT; | 24 | } CACHE_TEST_CONTEXT; |
| 25 | 25 | ||
| 26 | namespace Microsoft | 26 | namespace WixToolset |
| 27 | { | ||
| 28 | namespace Tools | ||
| 29 | { | ||
| 30 | namespace WindowsInstallerXml | ||
| 31 | { | 27 | { |
| 32 | namespace Test | 28 | namespace Test |
| 33 | { | 29 | { |
| @@ -158,7 +154,7 @@ namespace Bootstrapper | |||
| 158 | hr = StrAllocHexDecode(L"25e61cd83485062b70713aebddd3fe4992826cb121466fddc8de3eacb1e42f39d4bdd8455d95eec8c9529ced4c0296ab861931fe2c86df2f2b4e8d259a6d9223", &pb, &cb); | 154 | hr = StrAllocHexDecode(L"25e61cd83485062b70713aebddd3fe4992826cb121466fddc8de3eacb1e42f39d4bdd8455d95eec8c9529ced4c0296ab861931fe2c86df2f2b4e8d259a6d9223", &pb, &cb); |
| 159 | Assert::Equal(S_OK, hr); | 155 | Assert::Equal(S_OK, hr); |
| 160 | 156 | ||
| 161 | package.fPerMachine = FALSE; | 157 | package.scope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER; |
| 162 | package.sczCacheId = L"Bootstrapper.CacheTest.CacheSignatureTest"; | 158 | package.sczCacheId = L"Bootstrapper.CacheTest.CacheSignatureTest"; |
| 163 | payload.sczKey = L"CacheSignatureTest.PayloadKey"; | 159 | payload.sczKey = L"CacheSignatureTest.PayloadKey"; |
| 164 | payload.sczFilePath = L"CacheSignatureTest.File"; | 160 | payload.sczFilePath = L"CacheSignatureTest.File"; |
| @@ -192,8 +188,6 @@ namespace Bootstrapper | |||
| 192 | } | 188 | } |
| 193 | } | 189 | } |
| 194 | } | 190 | } |
| 195 | } | ||
| 196 | } | ||
| 197 | 191 | ||
| 198 | static HRESULT CALLBACK CacheTestEventRoutine( | 192 | static HRESULT CALLBACK CacheTestEventRoutine( |
| 199 | __in BURN_CACHE_MESSAGE* /*pMessage*/, | 193 | __in BURN_CACHE_MESSAGE* /*pMessage*/, |
diff --git a/src/burn/test/BurnUnitTest/ElevationTest.cpp b/src/burn/test/BurnUnitTest/ElevationTest.cpp index 81e9f93e..feacdb7c 100644 --- a/src/burn/test/BurnUnitTest/ElevationTest.cpp +++ b/src/burn/test/BurnUnitTest/ElevationTest.cpp | |||
| @@ -25,11 +25,7 @@ static HRESULT ProcessChildMessages( | |||
| 25 | __out DWORD* pdwResult | 25 | __out DWORD* pdwResult |
| 26 | ); | 26 | ); |
| 27 | 27 | ||
| 28 | namespace Microsoft | 28 | namespace WixToolset |
| 29 | { | ||
| 30 | namespace Tools | ||
| 31 | { | ||
| 32 | namespace WindowsInstallerXml | ||
| 33 | { | 29 | { |
| 34 | namespace Test | 30 | namespace Test |
| 35 | { | 31 | { |
| @@ -92,8 +88,6 @@ namespace Bootstrapper | |||
| 92 | } | 88 | } |
| 93 | } | 89 | } |
| 94 | } | 90 | } |
| 95 | } | ||
| 96 | } | ||
| 97 | 91 | ||
| 98 | 92 | ||
| 99 | static BOOL STDAPICALLTYPE ElevateTest_ShellExecuteExW( | 93 | static BOOL STDAPICALLTYPE ElevateTest_ShellExecuteExW( |
diff --git a/src/burn/test/BurnUnitTest/EmbeddedTest.cpp b/src/burn/test/BurnUnitTest/EmbeddedTest.cpp index a19790ad..33f03282 100644 --- a/src/burn/test/BurnUnitTest/EmbeddedTest.cpp +++ b/src/burn/test/BurnUnitTest/EmbeddedTest.cpp | |||
| @@ -33,11 +33,7 @@ static int EmbeddedTest_GenericMessageHandler( | |||
| 33 | __in LPVOID pvContext | 33 | __in LPVOID pvContext |
| 34 | ); | 34 | ); |
| 35 | 35 | ||
| 36 | namespace Microsoft | 36 | namespace WixToolset |
| 37 | { | ||
| 38 | namespace Tools | ||
| 39 | { | ||
| 40 | namespace WindowsInstallerXml | ||
| 41 | { | 37 | { |
| 42 | namespace Test | 38 | namespace Test |
| 43 | { | 39 | { |
| @@ -84,8 +80,6 @@ namespace Bootstrapper | |||
| 84 | } | 80 | } |
| 85 | } | 81 | } |
| 86 | } | 82 | } |
| 87 | } | ||
| 88 | } | ||
| 89 | 83 | ||
| 90 | 84 | ||
| 91 | static BOOL STDAPICALLTYPE EmbeddedTest_CreateProcessW( | 85 | static BOOL STDAPICALLTYPE EmbeddedTest_CreateProcessW( |
diff --git a/src/burn/test/BurnUnitTest/ExitCodeTest.cpp b/src/burn/test/BurnUnitTest/ExitCodeTest.cpp index 9b66f4c0..0529fa45 100644 --- a/src/burn/test/BurnUnitTest/ExitCodeTest.cpp +++ b/src/burn/test/BurnUnitTest/ExitCodeTest.cpp | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -328,7 +324,7 @@ static void LoadEngineState( | |||
| 328 | L"<BurnManifest>" | 324 | L"<BurnManifest>" |
| 329 | L" <Payload Id='test.exe' FilePath='test.exe' Packaging='external' SourcePath='test.exe' Hash='000000000000' FileSize='1' />" | 325 | L" <Payload Id='test.exe' FilePath='test.exe' Packaging='external' SourcePath='test.exe' Hash='000000000000' FileSize='1' />" |
| 330 | L" <Chain>" | 326 | L" <Chain>" |
| 331 | L" <ExePackage Id='Custom' Cache='remove' CacheId='test.exe' InstallSize='1' Size='1' PerMachine='no' Permanent='yes' Vital='yes' DetectCondition='' InstallArguments='[ExeExitCode]' UninstallArguments='' Uninstallable='no' RepairArguments='' Repairable='no' Protocol='none' DetectionType='condition'>" | 327 | L" <ExePackage Id='Custom' Cache='remove' CacheId='test.exe' InstallSize='1' Size='1' Scope='peruser' Permanent='yes' Vital='yes' DetectCondition='' InstallArguments='[ExeExitCode]' UninstallArguments='' Uninstallable='no' RepairArguments='' Repairable='no' Protocol='none' DetectionType='condition'>" |
| 332 | L" <ExitCode Code='0' Type='2' />" | 328 | L" <ExitCode Code='0' Type='2' />" |
| 333 | L" <ExitCode Code='3' Type='3' />" | 329 | L" <ExitCode Code='3' Type='3' />" |
| 334 | L" <ExitCode Code='4' Type='4' />" | 330 | L" <ExitCode Code='4' Type='4' />" |
| @@ -349,7 +345,7 @@ static void LoadEngineState( | |||
| 349 | L" <ExitCode Code='*' Type='1' />" | 345 | L" <ExitCode Code='*' Type='1' />" |
| 350 | L" <PayloadRef Id='test.exe' />" | 346 | L" <PayloadRef Id='test.exe' />" |
| 351 | L" </ExePackage>" | 347 | L" </ExePackage>" |
| 352 | L" <ExePackage Id='Standard' Cache='remove' CacheId='test.exe' InstallSize='1' Size='1' PerMachine='no' Permanent='yes' Vital='yes' DetectCondition='' InstallArguments='[ExeExitCode]' UninstallArguments='' Uninstallable='no' RepairArguments='' Repairable='no' Protocol='none' DetectionType='condition'>" | 348 | L" <ExePackage Id='Standard' Cache='remove' CacheId='test.exe' InstallSize='1' Size='1' Scope='peruser' Permanent='yes' Vital='yes' DetectCondition='' InstallArguments='[ExeExitCode]' UninstallArguments='' Uninstallable='no' RepairArguments='' Repairable='no' Protocol='none' DetectionType='condition'>" |
| 353 | L" <PayloadRef Id='test.exe' />" | 349 | L" <PayloadRef Id='test.exe' />" |
| 354 | L" </ExePackage>" | 350 | L" </ExePackage>" |
| 355 | L" </Chain>" | 351 | L" </Chain>" |
| @@ -376,5 +372,3 @@ static void LoadEngineState( | |||
| 376 | } | 372 | } |
| 377 | } | 373 | } |
| 378 | } | 374 | } |
| 379 | } | ||
| 380 | } | ||
diff --git a/src/burn/test/BurnUnitTest/LoggingTest.cpp b/src/burn/test/BurnUnitTest/LoggingTest.cpp index ed74c875..7619b913 100644 --- a/src/burn/test/BurnUnitTest/LoggingTest.cpp +++ b/src/burn/test/BurnUnitTest/LoggingTest.cpp | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -64,5 +60,3 @@ namespace Bootstrapper | |||
| 64 | } | 60 | } |
| 65 | } | 61 | } |
| 66 | } | 62 | } |
| 67 | } | ||
| 68 | } | ||
diff --git a/src/burn/test/BurnUnitTest/ManifestHelpers.cpp b/src/burn/test/BurnUnitTest/ManifestHelpers.cpp index 96d5fab4..b68504aa 100644 --- a/src/burn/test/BurnUnitTest/ManifestHelpers.cpp +++ b/src/burn/test/BurnUnitTest/ManifestHelpers.cpp | |||
| @@ -7,11 +7,7 @@ using namespace System; | |||
| 7 | using namespace Xunit; | 7 | using namespace Xunit; |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | namespace Microsoft | 10 | namespace WixToolset |
| 11 | { | ||
| 12 | namespace Tools | ||
| 13 | { | ||
| 14 | namespace WindowsInstallerXml | ||
| 15 | { | 11 | { |
| 16 | namespace Test | 12 | namespace Test |
| 17 | { | 13 | { |
| @@ -37,5 +33,3 @@ namespace Bootstrapper | |||
| 37 | } | 33 | } |
| 38 | } | 34 | } |
| 39 | } | 35 | } |
| 40 | } | ||
| 41 | } | ||
diff --git a/src/burn/test/BurnUnitTest/ManifestHelpers.h b/src/burn/test/BurnUnitTest/ManifestHelpers.h index e3e57555..e3c97c64 100644 --- a/src/burn/test/BurnUnitTest/ManifestHelpers.h +++ b/src/burn/test/BurnUnitTest/ManifestHelpers.h | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -20,5 +16,3 @@ void LoadBundleXmlHelper(LPCWSTR wzDocument, IXMLDOMElement** ppixeBundle); | |||
| 20 | } | 16 | } |
| 21 | } | 17 | } |
| 22 | } | 18 | } |
| 23 | } | ||
| 24 | } | ||
diff --git a/src/burn/test/BurnUnitTest/ManifestTest.cpp b/src/burn/test/BurnUnitTest/ManifestTest.cpp index 4959cee0..4e6bac24 100644 --- a/src/burn/test/BurnUnitTest/ManifestTest.cpp +++ b/src/burn/test/BurnUnitTest/ManifestTest.cpp | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -40,7 +36,7 @@ namespace Bootstrapper | |||
| 40 | " <UX PrimaryPayloadId='ux.exe'>" | 36 | " <UX PrimaryPayloadId='ux.exe'>" |
| 41 | " <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='u0' />" | 37 | " <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='u0' />" |
| 42 | " </UX>" | 38 | " </UX>" |
| 43 | " <Registration Code='{D54F896D-1952-43e6-9C67-B5652240618C}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no' />" | 39 | " <Registration Code='{D54F896D-1952-43e6-9C67-B5652240618C}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' Scope='peruser' />" |
| 44 | " <Variable Id='Variable1' Type='numeric' Value='1' Hidden='no' Persisted='no' />" | 40 | " <Variable Id='Variable1' Type='numeric' Value='1' Hidden='no' Persisted='no' />" |
| 45 | " <RegistrySearch Id='Search1' Type='exists' Root='HKLM' Key='SOFTWARE\\Microsoft' Variable='Variable1' Condition='0' />" | 41 | " <RegistrySearch Id='Search1' Type='exists' Root='HKLM' Key='SOFTWARE\\Microsoft' Variable='Variable1' Condition='0' />" |
| 46 | "</BurnManifest>"; | 42 | "</BurnManifest>"; |
| @@ -67,5 +63,3 @@ namespace Bootstrapper | |||
| 67 | } | 63 | } |
| 68 | } | 64 | } |
| 69 | } | 65 | } |
| 70 | } | ||
| 71 | } | ||
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp index e2850a62..7e7d84cc 100644 --- a/src/burn/test/BurnUnitTest/PlanTest.cpp +++ b/src/burn/test/BurnUnitTest/PlanTest.cpp | |||
| @@ -2,12 +2,20 @@ | |||
| 2 | 2 | ||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | #if TODO_REIMPLEMENT | ||
| 5 | static HRESULT WINAPI PlanTestBAProc( | 6 | static HRESULT WINAPI PlanTestBAProc( |
| 6 | __in BOOTSTRAPPER_APPLICATION_MESSAGE message, | 7 | __in BOOTSTRAPPER_APPLICATION_MESSAGE message, |
| 7 | __in const LPVOID pvArgs, | 8 | __in const LPVOID pvArgs, |
| 8 | __inout LPVOID pvResults, | 9 | __inout LPVOID pvResults, |
| 9 | __in_opt LPVOID pvContext | 10 | __in_opt LPVOID pvContext |
| 10 | ); | 11 | ); |
| 12 | #endif | ||
| 13 | |||
| 14 | struct REDIRECTED_LOGGING_CONTEXT | ||
| 15 | { | ||
| 16 | LPSTR pszBuffer; | ||
| 17 | }; | ||
| 18 | |||
| 11 | 19 | ||
| 12 | static LPCWSTR wzArpEntryExeManifestFileName = L"ExePackage_PerUserArpEntry_manifest.xml"; | 20 | static LPCWSTR wzArpEntryExeManifestFileName = L"ExePackage_PerUserArpEntry_manifest.xml"; |
| 13 | static LPCWSTR wzMsiTransactionManifestFileName = L"MsiTransaction_BundleAv1_manifest.xml"; | 21 | static LPCWSTR wzMsiTransactionManifestFileName = L"MsiTransaction_BundleAv1_manifest.xml"; |
| @@ -28,11 +36,7 @@ static BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE vRelatedBundlePlanType = BOOTSTRAPP | |||
| 28 | static BURN_DEPENDENCY_ACTION registerActions1[] = { BURN_DEPENDENCY_ACTION_REGISTER }; | 36 | static BURN_DEPENDENCY_ACTION registerActions1[] = { BURN_DEPENDENCY_ACTION_REGISTER }; |
| 29 | static BURN_DEPENDENCY_ACTION unregisterActions1[] = { BURN_DEPENDENCY_ACTION_UNREGISTER }; | 37 | static BURN_DEPENDENCY_ACTION unregisterActions1[] = { BURN_DEPENDENCY_ACTION_UNREGISTER }; |
| 30 | 38 | ||
| 31 | namespace Microsoft | 39 | namespace WixToolset |
| 32 | { | ||
| 33 | namespace Tools | ||
| 34 | { | ||
| 35 | namespace WindowsInstallerXml | ||
| 36 | { | 40 | { |
| 37 | namespace Test | 41 | namespace Test |
| 38 | { | 42 | { |
| @@ -43,12 +47,314 @@ namespace Bootstrapper | |||
| 43 | 47 | ||
| 44 | public ref class PlanTest : BurnUnitTest | 48 | public ref class PlanTest : BurnUnitTest |
| 45 | { | 49 | { |
| 50 | private: | ||
| 51 | void ScopeTest( | ||
| 52 | LPCWSTR wzManifestFileName, | ||
| 53 | BOOL fDefaultPlanPerMachine, | ||
| 54 | BOOL fDefaultRegistrationPerMachine, | ||
| 55 | BOOL fPerUserPlanPerMachine, | ||
| 56 | BOOL fPerUserRegistrationPerMachine, | ||
| 57 | BOOL fPerMachinePlanPerMachine, | ||
| 58 | BOOL fPerMachineRegistrationPerMachine | ||
| 59 | ) | ||
| 60 | { | ||
| 61 | HRESULT hr = S_OK; | ||
| 62 | BURN_ENGINE_STATE engineState = { }; | ||
| 63 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
| 64 | BURN_PLAN* pPlan = &engineState.plan; | ||
| 65 | |||
| 66 | InitializeEngineStateForCorePlan(wzManifestFileName, pEngineState); | ||
| 67 | DetectAttachedContainerAsAttached(pEngineState); | ||
| 68 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | ||
| 69 | |||
| 70 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); | ||
| 71 | NativeAssert::Succeeded(hr, "CorePlan default failed"); | ||
| 72 | |||
| 73 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 74 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_DEFAULT, pPlan->plannedScope); | ||
| 75 | Assert::Equal<DWORD>(fDefaultPlanPerMachine, pPlan->fPerMachine); | ||
| 76 | Assert::Equal<DWORD>(fDefaultRegistrationPerMachine, engineState.registration.fPerMachine); | ||
| 77 | |||
| 78 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_PER_USER); | ||
| 79 | NativeAssert::Succeeded(hr, "CorePlan per-user failed"); | ||
| 80 | |||
| 81 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 82 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_USER, pPlan->plannedScope); | ||
| 83 | Assert::Equal<DWORD>(fPerUserPlanPerMachine, pPlan->fPerMachine); | ||
| 84 | Assert::Equal<DWORD>(fPerUserRegistrationPerMachine, engineState.registration.fPerMachine); | ||
| 85 | |||
| 86 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_PER_MACHINE); | ||
| 87 | NativeAssert::Succeeded(hr, "CorePlan per-machine failed"); | ||
| 88 | |||
| 89 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 90 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_MACHINE, pPlan->plannedScope); | ||
| 91 | Assert::Equal<DWORD>(fPerMachinePlanPerMachine, pPlan->fPerMachine); | ||
| 92 | Assert::Equal<DWORD>(fPerMachineRegistrationPerMachine, engineState.registration.fPerMachine); | ||
| 93 | } | ||
| 94 | |||
| 46 | public: | 95 | public: |
| 47 | PlanTest(BurnTestFixture^ fixture) : BurnUnitTest(fixture) | 96 | PlanTest(BurnTestFixture^ fixture) : BurnUnitTest(fixture) |
| 48 | { | 97 | { |
| 49 | } | 98 | } |
| 50 | 99 | ||
| 51 | [Fact] | 100 | [Fact] |
| 101 | void CommandLineScopeTestNoop() | ||
| 102 | { | ||
| 103 | HRESULT hr = S_OK; | ||
| 104 | BURN_ENGINE_STATE engineState = { }; | ||
| 105 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
| 106 | BURN_PLAN* pPlan = &engineState.plan; | ||
| 107 | |||
| 108 | engineState.command.commandLineScope = BOOTSTRAPPER_SCOPE_PER_MACHINE; | ||
| 109 | |||
| 110 | InitializeEngineStateForCorePlan(L"AllPmouBundle_manifest.xml", pEngineState); | ||
| 111 | DetectAttachedContainerAsAttached(pEngineState); | ||
| 112 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | ||
| 113 | |||
| 114 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_PER_USER); | ||
| 115 | NativeAssert::Succeeded(hr, "CorePlan default failed"); | ||
| 116 | |||
| 117 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 118 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_USER, pPlan->plannedScope); | ||
| 119 | Assert::Equal<DWORD>(FALSE, pPlan->fPerMachine); | ||
| 120 | Assert::Equal<DWORD>(FALSE, engineState.registration.fPerMachine); | ||
| 121 | } | ||
| 122 | |||
| 123 | [Fact] | ||
| 124 | void CommandLineScopePerUserTest() | ||
| 125 | { | ||
| 126 | HRESULT hr = S_OK; | ||
| 127 | BURN_ENGINE_STATE engineState = { }; | ||
| 128 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
| 129 | BURN_PLAN* pPlan = &engineState.plan; | ||
| 130 | |||
| 131 | engineState.command.commandLineScope = BOOTSTRAPPER_SCOPE_PER_USER; | ||
| 132 | |||
| 133 | InitializeEngineStateForCorePlan(L"AllPmouBundle_manifest.xml", pEngineState); | ||
| 134 | DetectAttachedContainerAsAttached(pEngineState); | ||
| 135 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | ||
| 136 | |||
| 137 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); | ||
| 138 | NativeAssert::Succeeded(hr, "CorePlan default failed"); | ||
| 139 | |||
| 140 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 141 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_USER, pPlan->plannedScope); | ||
| 142 | Assert::Equal<DWORD>(FALSE, pPlan->fPerMachine); | ||
| 143 | Assert::Equal<DWORD>(FALSE, engineState.registration.fPerMachine); | ||
| 144 | } | ||
| 145 | |||
| 146 | [Fact] | ||
| 147 | void CommandLineScopePerMachineTest() | ||
| 148 | { | ||
| 149 | HRESULT hr = S_OK; | ||
| 150 | BURN_ENGINE_STATE engineState = { }; | ||
| 151 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
| 152 | BURN_PLAN* pPlan = &engineState.plan; | ||
| 153 | |||
| 154 | engineState.command.commandLineScope = BOOTSTRAPPER_SCOPE_PER_MACHINE; | ||
| 155 | |||
| 156 | InitializeEngineStateForCorePlan(L"AllPmouBundle_manifest.xml", pEngineState); | ||
| 157 | DetectAttachedContainerAsAttached(pEngineState); | ||
| 158 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | ||
| 159 | |||
| 160 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); | ||
| 161 | NativeAssert::Succeeded(hr, "CorePlan default failed"); | ||
| 162 | |||
| 163 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 164 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_MACHINE, pPlan->plannedScope); | ||
| 165 | Assert::Equal<DWORD>(TRUE, pPlan->fPerMachine); | ||
| 166 | Assert::Equal<DWORD>(TRUE, engineState.registration.fPerMachine); | ||
| 167 | } | ||
| 168 | |||
| 169 | [Fact] | ||
| 170 | void BundlePackageScopeTestNoop() | ||
| 171 | { | ||
| 172 | HRESULT hr = S_OK; | ||
| 173 | BURN_ENGINE_STATE engineState = { }; | ||
| 174 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
| 175 | BURN_PLAN* pPlan = &engineState.plan; | ||
| 176 | |||
| 177 | engineState.command.commandLineScope = BOOTSTRAPPER_SCOPE_PER_MACHINE; | ||
| 178 | |||
| 179 | InitializeEngineStateForCorePlan(L"PuomBundlePackage_manifest.xml", pEngineState); | ||
| 180 | DetectAttachedContainerAsAttached(pEngineState); | ||
| 181 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | ||
| 182 | |||
| 183 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_PER_USER); | ||
| 184 | NativeAssert::Succeeded(hr, "CorePlan default failed"); | ||
| 185 | |||
| 186 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 187 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_USER, pPlan->plannedScope); | ||
| 188 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_DEFAULT, engineState.packages.rgPackages[0].fPerMachine); | ||
| 189 | Assert::Equal<DWORD>(FALSE, pPlan->fPerMachine); | ||
| 190 | Assert::Equal<DWORD>(FALSE, engineState.registration.fPerMachine); | ||
| 191 | } | ||
| 192 | |||
| 193 | [Fact] | ||
| 194 | void BundlePackageScopeTestSucceeds() | ||
| 195 | { | ||
| 196 | HRESULT hr = S_OK; | ||
| 197 | BURN_ENGINE_STATE engineState = { }; | ||
| 198 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
| 199 | BURN_PLAN* pPlan = &engineState.plan; | ||
| 200 | |||
| 201 | engineState.command.commandLineScope = BOOTSTRAPPER_SCOPE_PER_MACHINE; | ||
| 202 | |||
| 203 | InitializeEngineStateForCorePlan(L"PuomBundlePackage_manifest.xml", pEngineState); | ||
| 204 | DetectAttachedContainerAsAttached(pEngineState); | ||
| 205 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | ||
| 206 | |||
| 207 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); | ||
| 208 | NativeAssert::Succeeded(hr, "CorePlan default failed"); | ||
| 209 | |||
| 210 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
| 211 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_MACHINE, pPlan->plannedScope); | ||
| 212 | Assert::Equal<DWORD>(BOOTSTRAPPER_SCOPE_PER_MACHINE, engineState.packages.rgPackages[0].fPerMachine); | ||
| 213 | Assert::Equal<DWORD>(TRUE, pPlan->fPerMachine); | ||
| 214 | Assert::Equal<DWORD>(TRUE, engineState.registration.fPerMachine); | ||
| 215 | } | ||
| 216 | |||
| 217 | [Fact] | ||
| 218 | void AllPerUserScopeTest() | ||
| 219 | { | ||
| 220 | ScopeTest( | ||
| 221 | L"PerUserBundle_manifest.xml", | ||
| 222 | FALSE /*fDefaultPlanPerMachine*/, | ||
| 223 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 224 | FALSE /*fPerUserPlanPerMachine*/, | ||
| 225 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 226 | FALSE /*fPerMachinePlanPerMachine*/, | ||
| 227 | FALSE /*fPerMachineRegistrationPerMachine*/ | ||
| 228 | ); | ||
| 229 | } | ||
| 230 | |||
| 231 | [Fact] | ||
| 232 | void AllPerMachineScopeTest() | ||
| 233 | { | ||
| 234 | ScopeTest( | ||
| 235 | L"PerMachineBundle_manifest.xml", | ||
| 236 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 237 | TRUE /*fDefaultRegistrationPerMachine*/, | ||
| 238 | TRUE /*fPerUserPlanPerMachine*/, | ||
| 239 | TRUE /*fPerUserRegistrationPerMachine*/, | ||
| 240 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 241 | TRUE /*fPerMachineRegistrationPerMachine*/ | ||
| 242 | ); | ||
| 243 | } | ||
| 244 | |||
| 245 | [Fact] | ||
| 246 | void AllPerMachineOrUserPackagesScopeTest() | ||
| 247 | { | ||
| 248 | ScopeTest( | ||
| 249 | L"AllPmouBundle_manifest.xml", | ||
| 250 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 251 | TRUE /*fDefaultRegistrationPerMachine*/, | ||
| 252 | FALSE /*fPerUserPlanPerMachine*/, | ||
| 253 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 254 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 255 | TRUE /*fPerMachineRegistrationPerMachine*/ | ||
| 256 | ); | ||
| 257 | } | ||
| 258 | |||
| 259 | [Fact] | ||
| 260 | void AllPerUserOrMachinePackagesScopeTest() | ||
| 261 | { | ||
| 262 | ScopeTest( | ||
| 263 | L"AllPuomBundle_manifest.xml", | ||
| 264 | FALSE /*fDefaultPlanPerMachine*/, | ||
| 265 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 266 | FALSE /*fPerUserPlanPerMachine*/, | ||
| 267 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 268 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 269 | TRUE /*fPerMachineRegistrationPerMachine*/ | ||
| 270 | ); | ||
| 271 | } | ||
| 272 | |||
| 273 | [Fact] | ||
| 274 | void PerMachineAndPerMachineOrUserScopeTest() | ||
| 275 | { | ||
| 276 | ScopeTest( | ||
| 277 | L"PmPmouBundle_manifest.xml", | ||
| 278 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 279 | TRUE /*fDefaultRegistrationPerMachine*/, | ||
| 280 | TRUE /*fPerUserPlanPerMachine*/, | ||
| 281 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 282 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 283 | TRUE /*fPerMachineRegistrationPerMachine*/ | ||
| 284 | ); | ||
| 285 | } | ||
| 286 | |||
| 287 | [Fact] | ||
| 288 | void PerMachineAndPerUserOrMachineScopeTest() | ||
| 289 | { | ||
| 290 | ScopeTest( | ||
| 291 | L"PmPuomBundle_manifest.xml", | ||
| 292 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 293 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 294 | TRUE /*fPerUserPlanPerMachine*/, | ||
| 295 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 296 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 297 | TRUE /*fPerMachineRegistrationPerMachine*/ | ||
| 298 | ); | ||
| 299 | } | ||
| 300 | |||
| 301 | [Fact] | ||
| 302 | void PerMachineAndPerUserAndPerMachineOrUserScopeTest() | ||
| 303 | { | ||
| 304 | ScopeTest( | ||
| 305 | L"PmPuPmouBundle_manifest.xml", | ||
| 306 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 307 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 308 | TRUE /*fPerUserPlanPerMachine*/, | ||
| 309 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 310 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 311 | FALSE /*fPerMachineRegistrationPerMachine*/ | ||
| 312 | ); | ||
| 313 | } | ||
| 314 | |||
| 315 | [Fact] | ||
| 316 | void PerMachineAndPerUserAndPerUserOrMachineScopeTest() | ||
| 317 | { | ||
| 318 | ScopeTest( | ||
| 319 | L"PmPuPuomBundle_manifest.xml", | ||
| 320 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 321 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 322 | TRUE /*fPerUserPlanPerMachine*/, | ||
| 323 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 324 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 325 | FALSE /*fPerMachineRegistrationPerMachine*/ | ||
| 326 | ); | ||
| 327 | } | ||
| 328 | |||
| 329 | [Fact] | ||
| 330 | void PerUserAndPerMachineOrUserScopeTest() | ||
| 331 | { | ||
| 332 | ScopeTest( | ||
| 333 | L"PuPmouBundle_manifest.xml", | ||
| 334 | TRUE /*fDefaultPlanPerMachine*/, | ||
| 335 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 336 | FALSE /*fPerUserPlanPerMachine*/, | ||
| 337 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 338 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 339 | FALSE /*fPerMachineRegistrationPerMachine*/ | ||
| 340 | ); | ||
| 341 | } | ||
| 342 | |||
| 343 | [Fact] | ||
| 344 | void PerUserAndPerUserOrMachineScopeTest() | ||
| 345 | { | ||
| 346 | ScopeTest( | ||
| 347 | L"PuPuomBundle_manifest.xml", | ||
| 348 | FALSE /*fDefaultPlanPerMachine*/, | ||
| 349 | FALSE /*fDefaultRegistrationPerMachine*/, | ||
| 350 | FALSE /*fPerUserPlanPerMachine*/, | ||
| 351 | FALSE /*fPerUserRegistrationPerMachine*/, | ||
| 352 | TRUE /*fPerMachinePlanPerMachine*/, | ||
| 353 | FALSE /*fPerMachineRegistrationPerMachine*/ | ||
| 354 | ); | ||
| 355 | } | ||
| 356 | |||
| 357 | [Fact] | ||
| 52 | void ArpEntryExeInstallTest() | 358 | void ArpEntryExeInstallTest() |
| 53 | { | 359 | { |
| 54 | HRESULT hr = S_OK; | 360 | HRESULT hr = S_OK; |
| @@ -60,7 +366,7 @@ namespace Bootstrapper | |||
| 60 | DetectAttachedContainerAsAttached(pEngineState); | 366 | DetectAttachedContainerAsAttached(pEngineState); |
| 61 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | 367 | DetectPermanentPackagesAsPresentAndCached(pEngineState); |
| 62 | 368 | ||
| 63 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 369 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 64 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 370 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 65 | 371 | ||
| 66 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 372 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -154,12 +460,13 @@ namespace Bootstrapper | |||
| 154 | 460 | ||
| 155 | pEngineState->packages.rgPackages[1].currentState = BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE; | 461 | pEngineState->packages.rgPackages[1].currentState = BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE; |
| 156 | 462 | ||
| 157 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 463 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 158 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 464 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 159 | 465 | ||
| 160 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 466 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| 161 | NativeAssert::StringEqual(L"{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}", pPlan->wzBundleCode); | 467 | NativeAssert::StringEqual(L"{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}", pPlan->wzBundleCode); |
| 162 | NativeAssert::StringEqual(L"{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}", pPlan->wzBundleProviderKey); | 468 | NativeAssert::StringEqual(L"{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}", pPlan->wzBundleProviderKey); |
| 469 | |||
| 163 | Assert::Equal<BOOL>(FALSE, pPlan->fEnabledForwardCompatibleBundle); | 470 | Assert::Equal<BOOL>(FALSE, pPlan->fEnabledForwardCompatibleBundle); |
| 164 | Assert::Equal<BOOL>(FALSE, pPlan->fPerMachine); | 471 | Assert::Equal<BOOL>(FALSE, pPlan->fPerMachine); |
| 165 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 472 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
| @@ -233,7 +540,7 @@ namespace Bootstrapper | |||
| 233 | InitializeEngineStateForCorePlan(wzArpEntryExeManifestFileName, pEngineState); | 540 | InitializeEngineStateForCorePlan(wzArpEntryExeManifestFileName, pEngineState); |
| 234 | DetectPackagesAsPresentAndCached(pEngineState); | 541 | DetectPackagesAsPresentAndCached(pEngineState); |
| 235 | 542 | ||
| 236 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 543 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 237 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 544 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 238 | 545 | ||
| 239 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 546 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -326,9 +633,11 @@ namespace Bootstrapper | |||
| 326 | DetectPackagesAsAbsent(pEngineState); | 633 | DetectPackagesAsAbsent(pEngineState); |
| 327 | DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"1.0.0.0", BOOTSTRAPPER_RELATION_UPGRADE); | 634 | DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"1.0.0.0", BOOTSTRAPPER_RELATION_UPGRADE); |
| 328 | 635 | ||
| 329 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 636 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 330 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 637 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 331 | 638 | ||
| 639 | PlanDump(pPlan); | ||
| 640 | |||
| 332 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 641 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| 333 | NativeAssert::StringEqual(L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", pPlan->wzBundleCode); | 642 | NativeAssert::StringEqual(L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", pPlan->wzBundleCode); |
| 334 | NativeAssert::StringEqual(L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", pPlan->wzBundleProviderKey); | 643 | NativeAssert::StringEqual(L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", pPlan->wzBundleProviderKey); |
| @@ -486,7 +795,7 @@ namespace Bootstrapper | |||
| 486 | InitializeEngineStateForCorePlan(wzMsiTransactionManifestFileName, pEngineState); | 795 | InitializeEngineStateForCorePlan(wzMsiTransactionManifestFileName, pEngineState); |
| 487 | DetectPackagesAsPresentAndCached(pEngineState); | 796 | DetectPackagesAsPresentAndCached(pEngineState); |
| 488 | 797 | ||
| 489 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 798 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 490 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 799 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 491 | 800 | ||
| 492 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 801 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -627,7 +936,7 @@ namespace Bootstrapper | |||
| 627 | DetectAttachedContainerAsAttached(pEngineState); | 936 | DetectAttachedContainerAsAttached(pEngineState); |
| 628 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | 937 | DetectPermanentPackagesAsPresentAndCached(pEngineState); |
| 629 | 938 | ||
| 630 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 939 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 631 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 940 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 632 | 941 | ||
| 633 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 942 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -742,7 +1051,7 @@ namespace Bootstrapper | |||
| 742 | DetectAttachedContainerAsAttached(pEngineState); | 1051 | DetectAttachedContainerAsAttached(pEngineState); |
| 743 | DetectPackagesAsPresentAndCached(pEngineState); | 1052 | DetectPackagesAsPresentAndCached(pEngineState); |
| 744 | 1053 | ||
| 745 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_REPAIR); | 1054 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_REPAIR, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 746 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1055 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 747 | 1056 | ||
| 748 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_REPAIR, pPlan->action); | 1057 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_REPAIR, pPlan->action); |
| @@ -836,7 +1145,7 @@ namespace Bootstrapper | |||
| 836 | DetectAttachedContainerAsAttached(pEngineState); | 1145 | DetectAttachedContainerAsAttached(pEngineState); |
| 837 | DetectPackagesAsPresentAndCached(pEngineState); | 1146 | DetectPackagesAsPresentAndCached(pEngineState); |
| 838 | 1147 | ||
| 839 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 1148 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 840 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1149 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 841 | 1150 | ||
| 842 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 1151 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -955,7 +1264,7 @@ namespace Bootstrapper | |||
| 955 | DetectPackagesAsAbsent(pEngineState); | 1264 | DetectPackagesAsAbsent(pEngineState); |
| 956 | DetectCompatibleMsiPackage(pEngineState, pEngineState->packages.rgPackages, L"{C24F3903-38E7-4D44-8037-D9856B3C5046}", L"2.0.0.0"); | 1265 | DetectCompatibleMsiPackage(pEngineState, pEngineState->packages.rgPackages, L"{C24F3903-38E7-4D44-8037-D9856B3C5046}", L"2.0.0.0"); |
| 957 | 1266 | ||
| 958 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 1267 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 959 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1268 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 960 | 1269 | ||
| 961 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 1270 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -1055,7 +1364,7 @@ namespace Bootstrapper | |||
| 1055 | vfUseRelatedBundlePlanType = TRUE; | 1364 | vfUseRelatedBundlePlanType = TRUE; |
| 1056 | vRelatedBundlePlanType = BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_UPGRADE; | 1365 | vRelatedBundlePlanType = BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_UPGRADE; |
| 1057 | 1366 | ||
| 1058 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 1367 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1059 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1368 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1060 | 1369 | ||
| 1061 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 1370 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -1174,7 +1483,7 @@ namespace Bootstrapper | |||
| 1174 | BURN_RELATED_BUNDLE* pRelatedBundle = DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"0.9.0.0", BOOTSTRAPPER_RELATION_UPGRADE); | 1483 | BURN_RELATED_BUNDLE* pRelatedBundle = DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"0.9.0.0", BOOTSTRAPPER_RELATION_UPGRADE); |
| 1175 | pRelatedBundle->fPlannable = FALSE; | 1484 | pRelatedBundle->fPlannable = FALSE; |
| 1176 | 1485 | ||
| 1177 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 1486 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1178 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1487 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1179 | 1488 | ||
| 1180 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 1489 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -1276,7 +1585,7 @@ namespace Bootstrapper | |||
| 1276 | DetectAttachedContainerAsAttached(pEngineState); | 1585 | DetectAttachedContainerAsAttached(pEngineState); |
| 1277 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | 1586 | DetectPermanentPackagesAsPresentAndCached(pEngineState); |
| 1278 | 1587 | ||
| 1279 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 1588 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1280 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1589 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1281 | 1590 | ||
| 1282 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 1591 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -1369,7 +1678,7 @@ namespace Bootstrapper | |||
| 1369 | DetectAttachedContainerAsAttached(pEngineState); | 1678 | DetectAttachedContainerAsAttached(pEngineState); |
| 1370 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | 1679 | DetectPermanentPackagesAsPresentAndCached(pEngineState); |
| 1371 | 1680 | ||
| 1372 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_LAYOUT); | 1681 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_LAYOUT, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1373 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1682 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1374 | 1683 | ||
| 1375 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_LAYOUT, pPlan->action); | 1684 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_LAYOUT, pPlan->action); |
| @@ -1452,7 +1761,7 @@ namespace Bootstrapper | |||
| 1452 | DetectPackagesAsAbsent(pEngineState); | 1761 | DetectPackagesAsAbsent(pEngineState); |
| 1453 | DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"0.9.0.0", BOOTSTRAPPER_RELATION_UPGRADE); | 1762 | DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"0.9.0.0", BOOTSTRAPPER_RELATION_UPGRADE); |
| 1454 | 1763 | ||
| 1455 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_CACHE); | 1764 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_CACHE, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1456 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1765 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1457 | 1766 | ||
| 1458 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_CACHE, pPlan->action); | 1767 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_CACHE, pPlan->action); |
| @@ -1541,7 +1850,7 @@ namespace Bootstrapper | |||
| 1541 | DetectPackagesAsAbsent(pEngineState); | 1850 | DetectPackagesAsAbsent(pEngineState); |
| 1542 | DetectRelatedBundle(pEngineState, L"{AF8355C9-CCDD-4D61-BF5F-EA5F948D8F01}", L"1.1.0.0", BOOTSTRAPPER_RELATION_UPGRADE); | 1851 | DetectRelatedBundle(pEngineState, L"{AF8355C9-CCDD-4D61-BF5F-EA5F948D8F01}", L"1.1.0.0", BOOTSTRAPPER_RELATION_UPGRADE); |
| 1543 | 1852 | ||
| 1544 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 1853 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1545 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1854 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1546 | 1855 | ||
| 1547 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 1856 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -1616,7 +1925,7 @@ namespace Bootstrapper | |||
| 1616 | vfUseRelatedBundleRequestState = TRUE; | 1925 | vfUseRelatedBundleRequestState = TRUE; |
| 1617 | vRelatedBundleRequestState = BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT; | 1926 | vRelatedBundleRequestState = BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT; |
| 1618 | 1927 | ||
| 1619 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 1928 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1620 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 1929 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1621 | 1930 | ||
| 1622 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 1931 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -1705,7 +2014,7 @@ namespace Bootstrapper | |||
| 1705 | vfUseRelatedBundleRequestState = TRUE; | 2014 | vfUseRelatedBundleRequestState = TRUE; |
| 1706 | vRelatedBundleRequestState = BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT; | 2015 | vRelatedBundleRequestState = BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT; |
| 1707 | 2016 | ||
| 1708 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 2017 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1709 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2018 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1710 | 2019 | ||
| 1711 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 2020 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -1798,7 +2107,7 @@ namespace Bootstrapper | |||
| 1798 | DetectPackagesAsAbsent(pEngineState); | 2107 | DetectPackagesAsAbsent(pEngineState); |
| 1799 | DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"0.9.0.0", BOOTSTRAPPER_RELATION_UPGRADE); | 2108 | DetectRelatedBundle(pEngineState, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", L"0.9.0.0", BOOTSTRAPPER_RELATION_UPGRADE); |
| 1800 | 2109 | ||
| 1801 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 2110 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1802 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2111 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1803 | 2112 | ||
| 1804 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 2113 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -1904,7 +2213,7 @@ namespace Bootstrapper | |||
| 1904 | 2213 | ||
| 1905 | pEngineState->registration.detectedRegistrationType = BOOTSTRAPPER_REGISTRATION_TYPE_FULL; | 2214 | pEngineState->registration.detectedRegistrationType = BOOTSTRAPPER_REGISTRATION_TYPE_FULL; |
| 1906 | 2215 | ||
| 1907 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_MODIFY); | 2216 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_MODIFY, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1908 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2217 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1909 | 2218 | ||
| 1910 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_MODIFY, pPlan->action); | 2219 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_MODIFY, pPlan->action); |
| @@ -1983,7 +2292,7 @@ namespace Bootstrapper | |||
| 1983 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); | 2292 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); |
| 1984 | DetectPackagesAsPresentAndCached(pEngineState); | 2293 | DetectPackagesAsPresentAndCached(pEngineState); |
| 1985 | 2294 | ||
| 1986 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 2295 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 1987 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2296 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 1988 | 2297 | ||
| 1989 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 2298 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -2084,7 +2393,7 @@ namespace Bootstrapper | |||
| 2084 | DetectPackagesAsPresentAndCached(pEngineState); | 2393 | DetectPackagesAsPresentAndCached(pEngineState); |
| 2085 | DetectBundleDependent(pEngineState, L"{29855EB1-724D-4285-A89C-5D37D8549DCD}"); | 2394 | DetectBundleDependent(pEngineState, L"{29855EB1-724D-4285-A89C-5D37D8549DCD}"); |
| 2086 | 2395 | ||
| 2087 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 2396 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2088 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2397 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2089 | 2398 | ||
| 2090 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 2399 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -2154,7 +2463,7 @@ namespace Bootstrapper | |||
| 2154 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); | 2463 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); |
| 2155 | DetectAsRelatedUpgradeBundle(&engineState, L"{02940F3E-C83E-452D-BFCF-C943777ACEAE}", L"2.0.0.0"); | 2464 | DetectAsRelatedUpgradeBundle(&engineState, L"{02940F3E-C83E-452D-BFCF-C943777ACEAE}", L"2.0.0.0"); |
| 2156 | 2465 | ||
| 2157 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 2466 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2158 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2467 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2159 | 2468 | ||
| 2160 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 2469 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -2240,7 +2549,7 @@ namespace Bootstrapper | |||
| 2240 | pEngineState->packages.rgPackages[0].currentState = BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED; | 2549 | pEngineState->packages.rgPackages[0].currentState = BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED; |
| 2241 | pEngineState->packages.rgPackages[0].Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; | 2550 | pEngineState->packages.rgPackages[0].Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; |
| 2242 | 2551 | ||
| 2243 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 2552 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2244 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2553 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2245 | 2554 | ||
| 2246 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 2555 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -2328,7 +2637,7 @@ namespace Bootstrapper | |||
| 2328 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); | 2637 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); |
| 2329 | DetectPackagesAsPresentAndCached(pEngineState); | 2638 | DetectPackagesAsPresentAndCached(pEngineState); |
| 2330 | 2639 | ||
| 2331 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL); | 2640 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2332 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2641 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2333 | 2642 | ||
| 2334 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL, pPlan->action); | 2643 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL, pPlan->action); |
| @@ -2430,7 +2739,7 @@ namespace Bootstrapper | |||
| 2430 | DetectAttachedContainerAsAttached(pEngineState); | 2739 | DetectAttachedContainerAsAttached(pEngineState); |
| 2431 | DetectPackagesAsAbsent(pEngineState); | 2740 | DetectPackagesAsAbsent(pEngineState); |
| 2432 | 2741 | ||
| 2433 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 2742 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2434 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2743 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2435 | 2744 | ||
| 2436 | llPlannedAction = VariableGetNumericHelper(&engineState.variables, BURN_BUNDLE_ACTION); | 2745 | llPlannedAction = VariableGetNumericHelper(&engineState.variables, BURN_BUNDLE_ACTION); |
| @@ -2523,7 +2832,7 @@ namespace Bootstrapper | |||
| 2523 | DetectPermanentPackagesAsPresentAndCached(pEngineState); | 2832 | DetectPermanentPackagesAsPresentAndCached(pEngineState); |
| 2524 | PlanTestDetectPatchInitialize(pEngineState); | 2833 | PlanTestDetectPatchInitialize(pEngineState); |
| 2525 | 2834 | ||
| 2526 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 2835 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2527 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2836 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2528 | 2837 | ||
| 2529 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 2838 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -2587,8 +2896,14 @@ namespace Bootstrapper | |||
| 2587 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); | 2896 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); |
| 2588 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 2897 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 2589 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 2898 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 2899 | |||
| 2900 | |||
| 2590 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); | 2901 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); |
| 2902 | |||
| 2903 | |||
| 2591 | 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); | 2904 | 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); |
| 2905 | |||
| 2906 | |||
| 2592 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); | 2907 | ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); |
| 2593 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 2908 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 2594 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); | 2909 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); |
| @@ -2654,7 +2969,7 @@ namespace Bootstrapper | |||
| 2654 | InitializeEngineStateForCorePlan(wzSlipstreamManifestFileName, pEngineState); | 2969 | InitializeEngineStateForCorePlan(wzSlipstreamManifestFileName, pEngineState); |
| 2655 | DetectPackagesAsPresentAndCached(pEngineState); | 2970 | DetectPackagesAsPresentAndCached(pEngineState); |
| 2656 | 2971 | ||
| 2657 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 2972 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2658 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 2973 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2659 | 2974 | ||
| 2660 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 2975 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -2784,7 +3099,7 @@ namespace Bootstrapper | |||
| 2784 | vfUsePackageRequestState = TRUE; | 3099 | vfUsePackageRequestState = TRUE; |
| 2785 | vPackageRequestState = BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT; | 3100 | vPackageRequestState = BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT; |
| 2786 | 3101 | ||
| 2787 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL); | 3102 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2788 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 3103 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2789 | 3104 | ||
| 2790 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); | 3105 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action); |
| @@ -2885,7 +3200,7 @@ namespace Bootstrapper | |||
| 2885 | InitializeEngineStateForCorePlan(wzSlipstreamModifiedManifestFileName, pEngineState); | 3200 | InitializeEngineStateForCorePlan(wzSlipstreamModifiedManifestFileName, pEngineState); |
| 2886 | DetectPackagesAsAbsent(pEngineState); | 3201 | DetectPackagesAsAbsent(pEngineState); |
| 2887 | 3202 | ||
| 2888 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | 3203 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_SCOPE_DEFAULT); |
| 2889 | NativeAssert::Succeeded(hr, "CorePlan failed"); | 3204 | NativeAssert::Succeeded(hr, "CorePlan failed"); |
| 2890 | 3205 | ||
| 2891 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | 3206 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); |
| @@ -3031,7 +3346,7 @@ namespace Bootstrapper | |||
| 3031 | Assert::True(FileExistsEx(sczFilePath, NULL), "Test file does not exist."); | 3346 | Assert::True(FileExistsEx(sczFilePath, NULL), "Test file does not exist."); |
| 3032 | 3347 | ||
| 3033 | hr = ManifestLoadXmlFromFile(sczFilePath, pEngineState); | 3348 | hr = ManifestLoadXmlFromFile(sczFilePath, pEngineState); |
| 3034 | NativeAssert::Succeeded(hr, "Failed to load manifest."); | 3349 | NativeAssert::Succeeded(hr, "Failed to load test manifest."); |
| 3035 | } | 3350 | } |
| 3036 | finally | 3351 | finally |
| 3037 | { | 3352 | { |
| @@ -3222,7 +3537,7 @@ namespace Bootstrapper | |||
| 3222 | for (DWORD j = 0; j < pPackage->Msi.cSlipstreamMspPackages; ++j) | 3537 | for (DWORD j = 0; j < pPackage->Msi.cSlipstreamMspPackages; ++j) |
| 3223 | { | 3538 | { |
| 3224 | BURN_PACKAGE* pMspPackage = pPackage->Msi.rgSlipstreamMsps[j].pMspPackage; | 3539 | BURN_PACKAGE* pMspPackage = pPackage->Msi.rgSlipstreamMsps[j].pMspPackage; |
| 3225 | MspEngineAddDetectedTargetProduct(&pEngineState->packages, pMspPackage, j, pPackage->Msi.sczProductCode, pPackage->fPerMachine ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED); | 3540 | MspEngineAddDetectedTargetProduct(&pEngineState->packages, pMspPackage, j, pPackage->Msi.sczProductCode, pPackage->scope == BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED); |
| 3226 | 3541 | ||
| 3227 | BURN_MSPTARGETPRODUCT* pTargetProduct = pMspPackage->Msp.rgTargetProducts + (pMspPackage->Msp.cTargetProductCodes - 1); | 3542 | BURN_MSPTARGETPRODUCT* pTargetProduct = pMspPackage->Msp.rgTargetProducts + (pMspPackage->Msp.cTargetProductCodes - 1); |
| 3228 | pTargetProduct->patchPackageState = BOOTSTRAPPER_PACKAGE_STATE_PRESENT; | 3543 | pTargetProduct->patchPackageState = BOOTSTRAPPER_PACKAGE_STATE_PRESENT; |
| @@ -3759,8 +4074,8 @@ namespace Bootstrapper | |||
| 3759 | void ValidatePlannedProvider( | 4074 | void ValidatePlannedProvider( |
| 3760 | __in BURN_PLAN* pPlan, | 4075 | __in BURN_PLAN* pPlan, |
| 3761 | __in UINT uIndex, | 4076 | __in UINT uIndex, |
| 3762 | __in LPCWSTR wzKey, | 4077 | __in_z LPCWSTR wzKey, |
| 3763 | __in LPCWSTR wzName | 4078 | __in_z_opt LPCWSTR wzName |
| 3764 | ) | 4079 | ) |
| 3765 | { | 4080 | { |
| 3766 | Assert::InRange(uIndex + 1u, 1u, pPlan->cPlannedProviders); | 4081 | Assert::InRange(uIndex + 1u, 1u, pPlan->cPlannedProviders); |
| @@ -3811,8 +4126,6 @@ namespace Bootstrapper | |||
| 3811 | } | 4126 | } |
| 3812 | } | 4127 | } |
| 3813 | } | 4128 | } |
| 3814 | } | ||
| 3815 | } | ||
| 3816 | 4129 | ||
| 3817 | #if TODO_REIMPLEMENT | 4130 | #if TODO_REIMPLEMENT |
| 3818 | 4131 | ||
diff --git a/src/burn/test/BurnUnitTest/RegistrationTest.cpp b/src/burn/test/BurnUnitTest/RegistrationTest.cpp index 3068eb6a..1c43c442 100644 --- a/src/burn/test/BurnUnitTest/RegistrationTest.cpp +++ b/src/burn/test/BurnUnitTest/RegistrationTest.cpp | |||
| @@ -9,11 +9,7 @@ | |||
| 9 | #define TEST_BUNDLE_UPGRADE_CODE L"{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}" | 9 | #define TEST_BUNDLE_UPGRADE_CODE L"{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}" |
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | namespace Microsoft | 12 | namespace WixToolset |
| 13 | { | ||
| 14 | namespace Tools | ||
| 15 | { | ||
| 16 | namespace WindowsInstallerXml | ||
| 17 | { | 13 | { |
| 18 | namespace Test | 14 | namespace Test |
| 19 | { | 15 | { |
| @@ -73,7 +69,7 @@ namespace Bootstrapper | |||
| 73 | L" <UX PrimaryPayloadId='ux.exe'>" | 69 | L" <UX PrimaryPayloadId='ux.exe'>" |
| 74 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" | 70 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" |
| 75 | L" </UX>" | 71 | L" </UX>" |
| 76 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 72 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Scope='peruser' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 77 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" | 73 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" |
| 78 | L" </Registration>" | 74 | L" </Registration>" |
| 79 | L"</Bundle>"; | 75 | L"</Bundle>"; |
| @@ -93,6 +89,12 @@ namespace Bootstrapper | |||
| 93 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 89 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 94 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 90 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 95 | 91 | ||
| 92 | hr = RegistrationSetPaths(®istration, &cache); | ||
| 93 | TestThrowOnFailure(hr, "Failed to set registration paths."); | ||
| 94 | |||
| 95 | hr = RegistrationPlanInitialize(®istration); | ||
| 96 | TestThrowOnFailure(hr, "Failed to initialize registration for the plan."); | ||
| 97 | |||
| 96 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; | 98 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; |
| 97 | plan.pCommand = &command; | 99 | plan.pCommand = &command; |
| 98 | plan.pInternalCommand = &internalCommand; | 100 | plan.pInternalCommand = &internalCommand; |
| @@ -173,7 +175,7 @@ namespace Bootstrapper | |||
| 173 | L" <UX PrimaryPayloadId='ux.exe'>" | 175 | L" <UX PrimaryPayloadId='ux.exe'>" |
| 174 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" | 176 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" |
| 175 | L" </UX>" | 177 | L" </UX>" |
| 176 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 178 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Scope='peruser' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 177 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='Product1' InProgressDisplayName='Product1 Installation' DisplayVersion='1.0.0.0' />" | 179 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='Product1' InProgressDisplayName='Product1 Installation' DisplayVersion='1.0.0.0' />" |
| 178 | L" </Registration>" | 180 | L" </Registration>" |
| 179 | L"</Bundle>"; | 181 | L"</Bundle>"; |
| @@ -193,6 +195,12 @@ namespace Bootstrapper | |||
| 193 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 195 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 194 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 196 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 195 | 197 | ||
| 198 | hr = RegistrationSetPaths(®istration, &cache); | ||
| 199 | TestThrowOnFailure(hr, "Failed to set registration paths."); | ||
| 200 | |||
| 201 | hr = RegistrationPlanInitialize(®istration); | ||
| 202 | TestThrowOnFailure(hr, "Failed to initialize registration for the plan."); | ||
| 203 | |||
| 196 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; | 204 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; |
| 197 | plan.pCommand = &command; | 205 | plan.pCommand = &command; |
| 198 | plan.pInternalCommand = &internalCommand; | 206 | plan.pInternalCommand = &internalCommand; |
| @@ -294,7 +302,7 @@ namespace Bootstrapper | |||
| 294 | L" <UX PrimaryPayloadId='ux.exe'>" | 302 | L" <UX PrimaryPayloadId='ux.exe'>" |
| 295 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" | 303 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" |
| 296 | L" </UX>" | 304 | L" </UX>" |
| 297 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Tag='foo' ProviderKey='bar' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 305 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Scope='peruser' Tag='foo' ProviderKey='bar' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 298 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='Product1' DisplayVersion='1.0.0.0' />" | 306 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='Product1' DisplayVersion='1.0.0.0' />" |
| 299 | L" </Registration>" | 307 | L" </Registration>" |
| 300 | L"</Bundle>"; | 308 | L"</Bundle>"; |
| @@ -314,6 +322,12 @@ namespace Bootstrapper | |||
| 314 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 322 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 315 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 323 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 316 | 324 | ||
| 325 | hr = RegistrationSetPaths(®istration, &cache); | ||
| 326 | TestThrowOnFailure(hr, "Failed to set registration paths."); | ||
| 327 | |||
| 328 | hr = RegistrationPlanInitialize(®istration); | ||
| 329 | TestThrowOnFailure(hr, "Failed to initialize registration for the plan."); | ||
| 330 | |||
| 317 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; | 331 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; |
| 318 | plan.pCommand = &command; | 332 | plan.pCommand = &command; |
| 319 | plan.pInternalCommand = &internalCommand; | 333 | plan.pInternalCommand = &internalCommand; |
| @@ -415,7 +429,7 @@ namespace Bootstrapper | |||
| 415 | L" <UX PrimaryPayloadId='ux.exe'>" | 429 | L" <UX PrimaryPayloadId='ux.exe'>" |
| 416 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" | 430 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" |
| 417 | L" </UX>" | 431 | L" </UX>" |
| 418 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 432 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Scope='peruser' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 419 | L" <Arp Register='yes' DisplayName='DisplayName1' DisplayVersion='1.2.3.4' Publisher='Publisher1' HelpLink='http://www.microsoft.com/help'" | 433 | L" <Arp Register='yes' DisplayName='DisplayName1' DisplayVersion='1.2.3.4' Publisher='Publisher1' HelpLink='http://www.microsoft.com/help'" |
| 420 | L" HelpTelephone='555-555-5555' AboutUrl='http://www.microsoft.com/about' UpdateUrl='http://www.microsoft.com/update'" | 434 | L" HelpTelephone='555-555-5555' AboutUrl='http://www.microsoft.com/about' UpdateUrl='http://www.microsoft.com/update'" |
| 421 | L" Comments='Comments1' Contact='Contact1' DisableModify='yes' DisableRemove='yes' />" | 435 | L" Comments='Comments1' Contact='Contact1' DisableModify='yes' DisableRemove='yes' />" |
| @@ -437,6 +451,12 @@ namespace Bootstrapper | |||
| 437 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 451 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 438 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 452 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 439 | 453 | ||
| 454 | hr = RegistrationSetPaths(®istration, &cache); | ||
| 455 | TestThrowOnFailure(hr, "Failed to set registration paths."); | ||
| 456 | |||
| 457 | hr = RegistrationPlanInitialize(®istration); | ||
| 458 | TestThrowOnFailure(hr, "Failed to initialize registration for the plan."); | ||
| 459 | |||
| 440 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; | 460 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; |
| 441 | plan.pCommand = &command; | 461 | plan.pCommand = &command; |
| 442 | plan.pInternalCommand = &internalCommand; | 462 | plan.pInternalCommand = &internalCommand; |
| @@ -554,7 +574,7 @@ namespace Bootstrapper | |||
| 554 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" | 574 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" |
| 555 | L" </UX>" | 575 | L" </UX>" |
| 556 | L" <RelatedBundle Code='" TEST_BUNDLE_UPGRADE_CODE L"' Action='Upgrade' />" | 576 | L" <RelatedBundle Code='" TEST_BUNDLE_UPGRADE_CODE L"' Action='Upgrade' />" |
| 557 | L" <Registration Code='" TEST_BUNDLE_ID L"' Tag='foo' ProviderKey='" TEST_BUNDLE_ID L"' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 577 | L" <Registration Code='" TEST_BUNDLE_ID L"' Scope='peruser' Tag='foo' ProviderKey='" TEST_BUNDLE_ID L"' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 558 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" | 578 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" |
| 559 | L" </Registration>" | 579 | L" </Registration>" |
| 560 | L" <Variable Id='MyBurnVariable1' Type='numeric' Value='0' Hidden='no' Persisted='yes' />" | 580 | L" <Variable Id='MyBurnVariable1' Type='numeric' Value='0' Hidden='no' Persisted='yes' />" |
| @@ -582,6 +602,12 @@ namespace Bootstrapper | |||
| 582 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 602 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 583 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 603 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 584 | 604 | ||
| 605 | hr = RegistrationSetPaths(®istration, &cache); | ||
| 606 | TestThrowOnFailure(hr, "Failed to set registration paths."); | ||
| 607 | |||
| 608 | hr = RegistrationPlanInitialize(®istration); | ||
| 609 | TestThrowOnFailure(hr, "Failed to initialize registration for the plan."); | ||
| 610 | |||
| 585 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; | 611 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; |
| 586 | plan.pCommand = &command; | 612 | plan.pCommand = &command; |
| 587 | plan.pInternalCommand = &internalCommand; | 613 | plan.pInternalCommand = &internalCommand; |
| @@ -694,7 +720,7 @@ namespace Bootstrapper | |||
| 694 | L" <UX PrimaryPayloadId='ux.exe'>" | 720 | L" <UX PrimaryPayloadId='ux.exe'>" |
| 695 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" | 721 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' Hash='000000000000' />" |
| 696 | L" </UX>" | 722 | L" </UX>" |
| 697 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 723 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' UpgradeCode='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Scope='peruser' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 698 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" | 724 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" |
| 699 | L" </Registration>" | 725 | L" </Registration>" |
| 700 | L" <Variable Id='MyBurnVariable1' Type='numeric' Value='0' Hidden='no' Persisted='yes' />" | 726 | L" <Variable Id='MyBurnVariable1' Type='numeric' Value='0' Hidden='no' Persisted='yes' />" |
| @@ -720,6 +746,12 @@ namespace Bootstrapper | |||
| 720 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 746 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 721 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 747 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 722 | 748 | ||
| 749 | hr = RegistrationSetPaths(®istration, &cache); | ||
| 750 | TestThrowOnFailure(hr, "Failed to set registration paths."); | ||
| 751 | |||
| 752 | hr = RegistrationPlanInitialize(®istration); | ||
| 753 | TestThrowOnFailure(hr, "Failed to initialize registration for the plan."); | ||
| 754 | |||
| 723 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; | 755 | plan.action = BOOTSTRAPPER_ACTION_INSTALL; |
| 724 | plan.pCommand = &command; | 756 | plan.pCommand = &command; |
| 725 | plan.pInternalCommand = &internalCommand; | 757 | plan.pInternalCommand = &internalCommand; |
| @@ -882,5 +914,3 @@ namespace Bootstrapper | |||
| 882 | } | 914 | } |
| 883 | } | 915 | } |
| 884 | } | 916 | } |
| 885 | } | ||
| 886 | } | ||
diff --git a/src/burn/test/BurnUnitTest/RelatedBundleTest.cpp b/src/burn/test/BurnUnitTest/RelatedBundleTest.cpp index 9feb85d6..dcccc589 100644 --- a/src/burn/test/BurnUnitTest/RelatedBundleTest.cpp +++ b/src/burn/test/BurnUnitTest/RelatedBundleTest.cpp | |||
| @@ -3,11 +3,7 @@ | |||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | namespace Microsoft | 6 | namespace WixToolset |
| 7 | { | ||
| 8 | namespace Tools | ||
| 9 | { | ||
| 10 | namespace WindowsInstallerXml | ||
| 11 | { | 7 | { |
| 12 | namespace Test | 8 | namespace Test |
| 13 | { | 9 | { |
| @@ -49,7 +45,7 @@ namespace Bootstrapper | |||
| 49 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' />" | 45 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' />" |
| 50 | L" </UX>" | 46 | L" </UX>" |
| 51 | L" <RelatedBundle Code='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Action='Upgrade' />" | 47 | L" <RelatedBundle Code='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Action='Upgrade' />" |
| 52 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe' PerMachine='yes'>" | 48 | L" <Registration Code='{D54F896D-1952-43E6-9C67-B5652240618C}' Tag='foo' ProviderKey='foo' Version='1.0.0.0' ExecutableName='setup.exe'>" |
| 53 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" | 49 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='1.0.0.0' />" |
| 54 | L" </Registration>" | 50 | L" </Registration>" |
| 55 | L"</Bundle>"; | 51 | L"</Bundle>"; |
| @@ -63,7 +59,7 @@ namespace Bootstrapper | |||
| 63 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); | 59 | hr = RegistrationParseFromXml(®istration, &cache, pixeBundle); |
| 64 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); | 60 | TestThrowOnFailure(hr, L"Failed to parse registration from XML."); |
| 65 | 61 | ||
| 66 | RelatedBundlesInitializeForScope(registration.fPerMachine, ®istration, &relatedBundles); | 62 | RelatedBundlesInitializeForScope(/*registration.fPlannedPerMachineScope*/TRUE, ®istration, &relatedBundles); |
| 67 | 63 | ||
| 68 | Assert::Equal(1lu, relatedBundles.cRelatedBundles); | 64 | Assert::Equal(1lu, relatedBundles.cRelatedBundles); |
| 69 | 65 | ||
| @@ -101,7 +97,7 @@ namespace Bootstrapper | |||
| 101 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' />" | 97 | L" <Payload Id='ux.exe' FilePath='ux.exe' Packaging='embedded' SourcePath='ux.exe' />" |
| 102 | L" </UX>" | 98 | L" </UX>" |
| 103 | L" <RelatedBundle Code='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Action='Upgrade' />" | 99 | L" <RelatedBundle Code='{89FDAE1F-8CC1-48B9-B930-3945E0D3E7F0}' Action='Upgrade' />" |
| 104 | L" <Registration Code='{3DB49D3D-1FB8-4147-A465-BBE8BFD0DAD0}' Tag='foo' ProviderKey='foo' Version='4.0.0.0' ExecutableName='setup.exe' PerMachine='no'>" | 100 | L" <Registration Code='{3DB49D3D-1FB8-4147-A465-BBE8BFD0DAD0}' Tag='foo' ProviderKey='foo' Version='4.0.0.0' ExecutableName='setup.exe'>" |
| 105 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='4.0.0.0' />" | 101 | L" <Arp Register='yes' Publisher='WiX Toolset' DisplayName='RegisterBasicTest' DisplayVersion='4.0.0.0' />" |
| 106 | L" </Registration>" | 102 | L" </Registration>" |
| 107 | L"</Bundle>"; | 103 | L"</Bundle>"; |
| @@ -195,5 +191,3 @@ namespace Bootstrapper | |||
| 195 | } | 191 | } |
| 196 | } | 192 | } |
| 197 | } | 193 | } |
| 198 | } | ||
| 199 | } | ||
diff --git a/src/burn/test/BurnUnitTest/SearchTest.cpp b/src/burn/test/BurnUnitTest/SearchTest.cpp index e3c714cb..ac6119de 100644 --- a/src/burn/test/BurnUnitTest/SearchTest.cpp +++ b/src/burn/test/BurnUnitTest/SearchTest.cpp | |||
| @@ -33,11 +33,7 @@ using namespace System; | |||
| 33 | using namespace Xunit; | 33 | using namespace Xunit; |
| 34 | using namespace Microsoft::Win32; | 34 | using namespace Microsoft::Win32; |
| 35 | 35 | ||
| 36 | namespace Microsoft | 36 | namespace WixToolset |
| 37 | { | ||
| 38 | namespace Tools | ||
| 39 | { | ||
| 40 | namespace WindowsInstallerXml | ||
| 41 | { | 37 | { |
| 42 | namespace Test | 38 | namespace Test |
| 43 | { | 39 | { |
| @@ -595,8 +591,6 @@ namespace Bootstrapper | |||
| 595 | } | 591 | } |
| 596 | } | 592 | } |
| 597 | } | 593 | } |
| 598 | } | ||
| 599 | } | ||
| 600 | 594 | ||
| 601 | 595 | ||
| 602 | static INSTALLSTATE WINAPI MsiComponentSearchTest_MsiGetComponentPathW( | 596 | static INSTALLSTATE WINAPI MsiComponentSearchTest_MsiGetComponentPathW( |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/AllPmouBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/AllPmouBundle_manifest.xml new file mode 100644 index 00000000..8be9f5b9 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/AllPmouBundle_manifest.xml | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="AllPmouBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{F5172FB5-DC8E-5671-A533-A6C4ED8B226A}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="65634" Hash="142E90105EC2705DA169B29ED252A7829AA9EF3CC9B55EB5CD47DFC93035B57E7C1C1E64D1D92C9B54BA4653A5D0B18CFD675E4B7A5AEA7B833D643D84DF8B96" FilePath="AllPmouBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PmouPkg1.msi" FilePath="PmouPkg1.msi" FileSize="32768" Hash="BCBB4F1C48953D23BE56CD7D5005BB38CB02C7BAC4AF30F87B7ADF7715EA721D28A3FCFC025D26FD5DC069BAB69F462577C3212C1BFE3707FCCE60FF3F3ED12C" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PmouPkg2.msi" FilePath="PmouPkg2.msi" FileSize="32768" Hash="C3BABBCCC0FDA4ACE44D28C60FAB2CA76C00655A405CF6F7A3593F9130FCF47AD18C4DAE1A32D5C0177F58DBAE00CBF7EDCA027BEE19B96E0145A3FA00811B51" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 17 | <Registration BundleId="AllPmouBundle" Code="{CA3BE971-4A75-46D1-BA74-005F9C7B8F6F}" ExecutableName="AllPmouBundle.exe" Scope="perMachineOrUser" Tag="" Version="1.0.0.0" ProviderKey="{CA3BE971-4A75-46D1-BA74-005F9C7B8F6F}"> | ||
| 18 | <Arp DisplayName="AllPmouBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 19 | </Registration> | ||
| 20 | <Chain> | ||
| 21 | <MsiPackage Id="PmouPkg1.msi" Cache="keep" CacheId="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PmouPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg1.msi" ProductCode="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}" Language="1033" Version="1.0.0.0" UpgradeCode="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}"> | ||
| 22 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 23 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 24 | <Provides Key="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg1" /> | ||
| 25 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 26 | <Language Id="1033" /> | ||
| 27 | </RelatedPackage> | ||
| 28 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 29 | <Language Id="1033" /> | ||
| 30 | </RelatedPackage> | ||
| 31 | <PayloadRef Id="PmouPkg1.msi" /> | ||
| 32 | </MsiPackage> | ||
| 33 | <MsiPackage Id="PmouPkg2.msi" Cache="keep" CacheId="{1B1D793E-4026-48CA-B088-F919E70440AC}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PmouPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg2.msi" ProductCode="{1B1D793E-4026-48CA-B088-F919E70440AC}" Language="1033" Version="1.0.0.0" UpgradeCode="{98F763B3-EA17-5AE5-AD47-21004FB34B24}"> | ||
| 34 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 35 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 36 | <Provides Key="{1B1D793E-4026-48CA-B088-F919E70440AC}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg2" /> | ||
| 37 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 38 | <Language Id="1033" /> | ||
| 39 | </RelatedPackage> | ||
| 40 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 41 | <Language Id="1033" /> | ||
| 42 | </RelatedPackage> | ||
| 43 | <PayloadRef Id="PmouPkg2.msi" /> | ||
| 44 | </MsiPackage> | ||
| 45 | </Chain> | ||
| 46 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/AllPuomBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/AllPuomBundle_manifest.xml new file mode 100644 index 00000000..a3cbd183 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/AllPuomBundle_manifest.xml | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="AllPuomBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{689DDFCE-6492-596F-92DC-341CCDF59ABB}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="65634" Hash="541AB7BED551A38137C7C965D46FF4817DE6E22C89AF98EC9461939024D6B39E7ACF9C3F526F4B567E73364289E7CE24FD84973F7B2151514F09E165FABE6234" FilePath="AllPuomBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PuomPkg1.msi" FilePath="PuomPkg1.msi" FileSize="32768" Hash="EF19E061C2647AD42E39A1721299D5D970F1E42CE6636ACA53009DC0D0D1F8B6F2FD516B7D3EEDAAF1EEDA364D54DA6C18FB929C385EC1BDDA08AEA50370B357" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PuomPkg2.msi" FilePath="PuomPkg2.msi" FileSize="32768" Hash="F927CE9CD3272AF6571E39C72A68E6BD6808D944B6893B09253887B1942E1C043EC5E1E1E758D3C261FF8B566121EE809C4CBCB931D00EBF14CC6CFE24001292" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 17 | <Registration BundleId="AllPuomBundle" Code="{37A6F602-178E-4A32-B766-EDC2CB81274B}" ExecutableName="AllPuomBundle.exe" Scope="perUserOrMachine" Tag="" Version="1.0.0.0" ProviderKey="{37A6F602-178E-4A32-B766-EDC2CB81274B}"> | ||
| 18 | <Arp DisplayName="AllPuomBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 19 | </Registration> | ||
| 20 | <Chain> | ||
| 21 | <MsiPackage Id="PuomPkg1.msi" Cache="keep" CacheId="{167C572B-D847-4BCF-9693-C8B5EB6350CD}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PuomPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg1.msi" ProductCode="{167C572B-D847-4BCF-9693-C8B5EB6350CD}" Language="1033" Version="1.0.0.0" UpgradeCode="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}"> | ||
| 22 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 23 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 24 | <Provides Key="{167C572B-D847-4BCF-9693-C8B5EB6350CD}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg1" /> | ||
| 25 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 26 | <Language Id="1033" /> | ||
| 27 | </RelatedPackage> | ||
| 28 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 29 | <Language Id="1033" /> | ||
| 30 | </RelatedPackage> | ||
| 31 | <PayloadRef Id="PuomPkg1.msi" /> | ||
| 32 | </MsiPackage> | ||
| 33 | <MsiPackage Id="PuomPkg2.msi" Cache="keep" CacheId="{07617017-CE68-4F88-981A-4629835C9BD2}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PuomPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg2.msi" ProductCode="{07617017-CE68-4F88-981A-4629835C9BD2}" Language="1033" Version="1.0.0.0" UpgradeCode="{C977A922-168B-59F0-84FD-CAB89DB314E0}"> | ||
| 34 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 35 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 36 | <Provides Key="{07617017-CE68-4F88-981A-4629835C9BD2}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg2" /> | ||
| 37 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 38 | <Language Id="1033" /> | ||
| 39 | </RelatedPackage> | ||
| 40 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 41 | <Language Id="1033" /> | ||
| 42 | </RelatedPackage> | ||
| 43 | <PayloadRef Id="PuomPkg2.msi" /> | ||
| 44 | </MsiPackage> | ||
| 45 | </Chain> | ||
| 46 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/BasicFunctionality_BundleA_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/BasicFunctionality_BundleA_manifest.xml index f3848eda..b19b911f 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/BasicFunctionality_BundleA_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/BasicFunctionality_BundleA_manifest.xml | |||
| @@ -15,11 +15,11 @@ | |||
| 15 | <Payload Id="PackageA" FilePath="PackageA.msi" FileSize="32768" Hash="89C61F8A105A81B08036401152A1FDE67CDC0158" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | 15 | <Payload Id="PackageA" FilePath="PackageA.msi" FileSize="32768" Hash="89C61F8A105A81B08036401152A1FDE67CDC0158" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> |
| 16 | <Payload Id="cab9Ins_fTP3wNwq5Gxo41ch5VUPaQ" FilePath="1a.cab" FileSize="975" Hash="11DE5863C4B2A8762D0EE23FE25B7774CA07676B" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | 16 | <Payload Id="cab9Ins_fTP3wNwq5Gxo41ch5VUPaQ" FilePath="1a.cab" FileSize="975" Hash="11DE5863C4B2A8762D0EE23FE25B7774CA07676B" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> |
| 17 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 17 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 18 | <Registration Code="{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}" ExecutableName="BundleA.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}"> | 18 | <Registration Code="{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}" ExecutableName="BundleA.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}"> |
| 19 | <Arp Register="yes" DisplayName="~BasicFunctionalityTests - BundleA" DisplayVersion="1.0.0.0" /> | 19 | <Arp Register="yes" DisplayName="~BasicFunctionalityTests - BundleA" DisplayVersion="1.0.0.0" /> |
| 20 | </Registration> | 20 | </Registration> |
| 21 | <Chain> | 21 | <Chain> |
| 22 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{64633047-D172-4BBB-B202-64337D15C952}v1.0.0.0" InstallSize="1951" Size="33743" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{64633047-D172-4BBB-B202-64337D15C952}" Language="1033" Version="1.0.0.0" UpgradeCode="{7FD50F1B-D134-4365-923C-DFA160F74738}"> | 22 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{64633047-D172-4BBB-B202-64337D15C952}v1.0.0.0" InstallSize="1951" Size="33743" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{64633047-D172-4BBB-B202-64337D15C952}" Language="1033" Version="1.0.0.0" UpgradeCode="{7FD50F1B-D134-4365-923C-DFA160F74738}"> |
| 23 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | 23 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> |
| 24 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | 24 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> |
| 25 | <Provides Key="{64633047-D172-4BBB-B202-64337D15C952}" Version="1.0.0.0" DisplayName="~BasicFunctionalityTests - PackageA" /> | 25 | <Provides Key="{64633047-D172-4BBB-B202-64337D15C952}" Version="1.0.0.0" DisplayName="~BasicFunctionalityTests - PackageA" /> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/BundlePackage_Multiple_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/BundlePackage_Multiple_manifest.xml index 988bbfe0..651b491d 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/BundlePackage_Multiple_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/BundlePackage_Multiple_manifest.xml | |||
| @@ -46,19 +46,19 @@ | |||
| 46 | <Payload Id="PackageA" FilePath="BundleA.exe" FileSize="5241635" Hash="20E1AFF76DE4693CB2876DC6BCCA0152DB16BE49AEDE2CD581C03FC39AB89DEA12BC25CB435F06E4D7D2B4443CE8A8935D5E92E2E49A4981B60A273980E4B29B" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | 46 | <Payload Id="PackageA" FilePath="BundleA.exe" FileSize="5241635" Hash="20E1AFF76DE4693CB2876DC6BCCA0152DB16BE49AEDE2CD581C03FC39AB89DEA12BC25CB435F06E4D7D2B4443CE8A8935D5E92E2E49A4981B60A273980E4B29B" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> |
| 47 | <Payload Id="PackageB" FilePath="BundleB_x64.exe" FileSize="10450821" Hash="43A58873D61D6E0FA83F6C5266F2F05FEA9BC85D11C195493B7FD9F0B4AA799C1EFCB78D76DCED32124D2EC62A4E7114B62CDE6F0B87E42A7E28CDBB0DA0FF8E" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | 47 | <Payload Id="PackageB" FilePath="BundleB_x64.exe" FileSize="10450821" Hash="43A58873D61D6E0FA83F6C5266F2F05FEA9BC85D11C195493B7FD9F0B4AA799C1EFCB78D76DCED32124D2EC62A4E7114B62CDE6F0B87E42A7E28CDBB0DA0FF8E" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> |
| 48 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 48 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 49 | <Registration Code="{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}" ExecutableName="MultipleBundlePackagesBundle.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}"> | 49 | <Registration Code="{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}" ExecutableName="MultipleBundlePackagesBundle.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}"> |
| 50 | <Arp Register="yes" DisplayName="~BundlePackageTests - MultipleBundlePackagesBundle" DisplayVersion="1.0.0.0" /> | 50 | <Arp Register="yes" DisplayName="~BundlePackageTests - MultipleBundlePackagesBundle" DisplayVersion="1.0.0.0" /> |
| 51 | </Registration> | 51 | </Registration> |
| 52 | <Chain> | 52 | <Chain> |
| 53 | <ExePackage Id="NetFx48Web" Cache="remove" CacheId="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" InstallSize="1439328" Size="1439328" PerMachine="yes" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" UninstallArguments="" Uninstallable="no" RepairArguments="" Repairable="no" Protocol="netfx4" DetectionType="condition"> | 53 | <ExePackage Id="NetFx48Web" Cache="remove" CacheId="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" InstallSize="1439328" Size="1439328" Scope="permachine" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" UninstallArguments="" Uninstallable="no" RepairArguments="" Repairable="no" Protocol="netfx4" DetectionType="condition"> |
| 54 | <PayloadRef Id="NetFx48Web" /> | 54 | <PayloadRef Id="NetFx48Web" /> |
| 55 | </ExePackage> | 55 | </ExePackage> |
| 56 | <BundlePackage Id="PackageA" Cache="keep" CacheId="{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}v1.0.0.0" InstallSize="2169" Size="5241635" Version="1.0.0.0" PerMachine="yes" Permanent="no" Vital="yes" RepairCondition="0" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" BundleCode="{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}" InstallArguments="" UninstallArguments="" RepairArguments="" SupportsBurnProtocol="yes" Win64="no"> | 56 | <BundlePackage Id="PackageA" Cache="keep" CacheId="{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}v1.0.0.0" InstallSize="2169" Size="5241635" Version="1.0.0.0" Scope="permachine" Permanent="no" Vital="yes" RepairCondition="0" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" BundleCode="{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}" InstallArguments="" UninstallArguments="" RepairArguments="" SupportsBurnProtocol="yes" Win64="no"> |
| 57 | <Provides Key="{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}" Version="1.0.0.0" DisplayName="~BasicFunctionalityTests - BundleA" Imported="yes" /> | 57 | <Provides Key="{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}" Version="1.0.0.0" DisplayName="~BasicFunctionalityTests - BundleA" Imported="yes" /> |
| 58 | <RelatedBundle Code="{8C7E2C47-1EE7-4BBE-99A2-EAB7F3693F48}" Action="Upgrade" /> | 58 | <RelatedBundle Code="{8C7E2C47-1EE7-4BBE-99A2-EAB7F3693F48}" Action="Upgrade" /> |
| 59 | <PayloadRef Id="PackageA" /> | 59 | <PayloadRef Id="PackageA" /> |
| 60 | </BundlePackage> | 60 | </BundlePackage> |
| 61 | <BundlePackage Id="PackageB" Cache="keep" CacheId="{7506235A-7C59-4750-82C7-EB460A87ED3A}v1.0.0.0" InstallSize="1441497" Size="10450821" Version="1.0.0.0" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageB" RollbackLogPathVariable="WixBundleRollbackLog_PackageB" BundleCode="{7506235A-7C59-4750-82C7-EB460A87ED3A}" InstallArguments="" UninstallArguments="" RepairArguments="" SupportsBurnProtocol="yes" Win64="yes"> | 61 | <BundlePackage Id="PackageB" Cache="keep" CacheId="{7506235A-7C59-4750-82C7-EB460A87ED3A}v1.0.0.0" InstallSize="1441497" Size="10450821" Version="1.0.0.0" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageB" RollbackLogPathVariable="WixBundleRollbackLog_PackageB" BundleCode="{7506235A-7C59-4750-82C7-EB460A87ED3A}" InstallArguments="" UninstallArguments="" RepairArguments="" SupportsBurnProtocol="yes" Win64="yes"> |
| 62 | <Provides Key="{7506235A-7C59-4750-82C7-EB460A87ED3A}" Version="1.0.0.0" DisplayName="~BasicFunctionalityTests - BundleB_x64" Imported="yes" /> | 62 | <Provides Key="{7506235A-7C59-4750-82C7-EB460A87ED3A}" Version="1.0.0.0" DisplayName="~BasicFunctionalityTests - BundleB_x64" Imported="yes" /> |
| 63 | <RelatedBundle Code="{79F45B7A-D990-46E4-819B-078D87C3321A}" Action="Upgrade" /> | 63 | <RelatedBundle Code="{79F45B7A-D990-46E4-819B-078D87C3321A}" Action="Upgrade" /> |
| 64 | <PayloadRef Id="PackageB" /> | 64 | <PayloadRef Id="PackageB" /> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/ExePackage_PerUserArpEntry_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/ExePackage_PerUserArpEntry_manifest.xml index a5dfc188..51d86d4a 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/ExePackage_PerUserArpEntry_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/ExePackage_PerUserArpEntry_manifest.xml | |||
| @@ -46,14 +46,14 @@ | |||
| 46 | <Payload Id="TestExe.exe" FilePath="TestExe.exe" FileSize="23552" Hash="8A3CAD62E7C15EE88B3B78A5F61EFA6D4C9AED67049075688A641EE65E1526589797B0C52398DEB520A7911E41F2A6F73C178D19C9FFBC03ECF964A822E6438E" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | 46 | <Payload Id="TestExe.exe" FilePath="TestExe.exe" FileSize="23552" Hash="8A3CAD62E7C15EE88B3B78A5F61EFA6D4C9AED67049075688A641EE65E1526589797B0C52398DEB520A7911E41F2A6F73C178D19C9FFBC03ECF964A822E6438E" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> |
| 47 | <Payload Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" FilePath="TestExe.exe.config" FileSize="387" Hash="8C819A9E835F3921FA80C5C783AB0C42DDAADF0C0F2BEF8630EA122ABCB9DC8EAF0B14E061C46B37C92F55114BB09A8D5B1B613947A76A648953F2C63C0ACA63" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | 47 | <Payload Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" FilePath="TestExe.exe.config" FileSize="387" Hash="8C819A9E835F3921FA80C5C783AB0C42DDAADF0C0F2BEF8630EA122ABCB9DC8EAF0B14E061C46B37C92F55114BB09A8D5B1B613947A76A648953F2C63C0ACA63" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> |
| 48 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 48 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 49 | <Registration Code="{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}" ExecutableName="PerUserArpEntryExePackage.exe" PerMachine="no" Tag="" Version="1.0.0.0" ProviderKey="{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}"> | 49 | <Registration Code="{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}" ExecutableName="PerUserArpEntryExePackage.exe" Scope="peruser" Tag="" Version="1.0.0.0" ProviderKey="{9C459DAD-0E64-40C8-8C9F-4F68E46AB223}"> |
| 50 | <Arp DisplayName="~ExePackageTests - PerUserArpEntryExePackage" DisplayVersion="1.0.0.0" /> | 50 | <Arp DisplayName="~ExePackageTests - PerUserArpEntryExePackage" DisplayVersion="1.0.0.0" /> |
| 51 | </Registration> | 51 | </Registration> |
| 52 | <Chain> | 52 | <Chain> |
| 53 | <ExePackage Id="NetFx48Web" Cache="remove" CacheId="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" InstallSize="1439328" Size="1439328" PerMachine="yes" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" RepairArguments="" Repairable="no" DetectionType="condition" DetectCondition="NETFRAMEWORK45 >= 528040" Protocol="netfx4"> | 53 | <ExePackage Id="NetFx48Web" Cache="remove" CacheId="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" InstallSize="1439328" Size="1439328" Scope="permachine" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" RepairArguments="" Repairable="no" DetectionType="condition" DetectCondition="NETFRAMEWORK45 >= 528040" Protocol="netfx4"> |
| 54 | <PayloadRef Id="NetFx48Web" /> | 54 | <PayloadRef Id="NetFx48Web" /> |
| 55 | </ExePackage> | 55 | </ExePackage> |
| 56 | <ExePackage Id="TestExe" Cache="keep" CacheId="8A3CAD62E7C15EE88B3B78A5F61EFA6D4C9AED67049075688A641EE65E1526589797B0C52398DEB520A7911E41F2A6F73C178D19C9FFBC03ECF964A822E6438E" InstallSize="23939" Size="23939" PerMachine="no" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_TestExe" RollbackLogPathVariable="WixBundleRollbackLog_TestExe" InstallArguments="/regw "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9B5300C7-9B34-4670-9614-185B02AB87EF},DisplayVersion,String,1.0.0.0" /regw "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9B5300C7-9B34-4670-9614-185B02AB87EF},QuietUninstallString,String,\"[WixBundleExecutePackageCacheFolder]testexe.exe\" /regd \"HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9B5300C7-9B34-4670-9614-185B02AB87EF}\""" RepairArguments="" Repairable="no" DetectionType="arp" ArpId="{9B5300C7-9B34-4670-9614-185B02AB87EF}" ArpDisplayVersion="1.0.0.0"> | 56 | <ExePackage Id="TestExe" Cache="keep" CacheId="8A3CAD62E7C15EE88B3B78A5F61EFA6D4C9AED67049075688A641EE65E1526589797B0C52398DEB520A7911E41F2A6F73C178D19C9FFBC03ECF964A822E6438E" InstallSize="23939" Size="23939" Scope="peruser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_TestExe" RollbackLogPathVariable="WixBundleRollbackLog_TestExe" InstallArguments="/regw "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9B5300C7-9B34-4670-9614-185B02AB87EF},DisplayVersion,String,1.0.0.0" /regw "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9B5300C7-9B34-4670-9614-185B02AB87EF},QuietUninstallString,String,\"[WixBundleExecutePackageCacheFolder]testexe.exe\" /regd \"HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9B5300C7-9B34-4670-9614-185B02AB87EF}\""" RepairArguments="" Repairable="no" DetectionType="arp" ArpId="{9B5300C7-9B34-4670-9614-185B02AB87EF}" ArpDisplayVersion="1.0.0.0"> |
| 57 | <PayloadRef Id="TestExe.exe" /> | 57 | <PayloadRef Id="TestExe.exe" /> |
| 58 | <PayloadRef Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" /> | 58 | <PayloadRef Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" /> |
| 59 | </ExePackage> | 59 | </ExePackage> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/Failure_BundleD_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/Failure_BundleD_manifest.xml index f3cfb179..84370c44 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/Failure_BundleD_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/Failure_BundleD_manifest.xml | |||
| @@ -47,14 +47,14 @@ | |||
| 47 | <Payload Id="TestExe.exe" FilePath="TestExe.exe" FileSize="23552" Hash="4344604ECBA4DFE5DE7C680CB1AA5BD6FAA29BF95CE07740F02878C2BB1EF6DE6432944A0DB79B034D1C6F68CF80842EEE442EA8A551816E52D3F68901C50AB9" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | 47 | <Payload Id="TestExe.exe" FilePath="TestExe.exe" FileSize="23552" Hash="4344604ECBA4DFE5DE7C680CB1AA5BD6FAA29BF95CE07740F02878C2BB1EF6DE6432944A0DB79B034D1C6F68CF80842EEE442EA8A551816E52D3F68901C50AB9" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> |
| 48 | <Payload Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" FilePath="TestExe.exe.config" FileSize="387" Hash="8C819A9E835F3921FA80C5C783AB0C42DDAADF0C0F2BEF8630EA122ABCB9DC8EAF0B14E061C46B37C92F55114BB09A8D5B1B613947A76A648953F2C63C0ACA63" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | 48 | <Payload Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" FilePath="TestExe.exe.config" FileSize="387" Hash="8C819A9E835F3921FA80C5C783AB0C42DDAADF0C0F2BEF8630EA122ABCB9DC8EAF0B14E061C46B37C92F55114BB09A8D5B1B613947A76A648953F2C63C0ACA63" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> |
| 49 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 49 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 50 | <Registration Code="{9C184683-04FB-49AD-9D79-65101BDC3EE3}" ExecutableName="BundleD.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{9C184683-04FB-49AD-9D79-65101BDC3EE3}"> | 50 | <Registration Code="{9C184683-04FB-49AD-9D79-65101BDC3EE3}" ExecutableName="BundleD.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{9C184683-04FB-49AD-9D79-65101BDC3EE3}"> |
| 51 | <Arp Register="yes" DisplayName="~FailureTests - BundleD" DisplayVersion="1.0.0.0" /> | 51 | <Arp Register="yes" DisplayName="~FailureTests - BundleD" DisplayVersion="1.0.0.0" /> |
| 52 | </Registration> | 52 | </Registration> |
| 53 | <Chain> | 53 | <Chain> |
| 54 | <ExePackage Id="NetFx48Web" Cache="remove" CacheId="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" InstallSize="1439328" Size="1439328" PerMachine="yes" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" UninstallArguments="" Uninstallable="no" RepairArguments="" Repairable="no" Protocol="netfx4" DetectionType="condition"> | 54 | <ExePackage Id="NetFx48Web" Cache="remove" CacheId="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" InstallSize="1439328" Size="1439328" Scope="permachine" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" UninstallArguments="" Uninstallable="no" RepairArguments="" Repairable="no" Protocol="netfx4" DetectionType="condition"> |
| 55 | <PayloadRef Id="NetFx48Web" /> | 55 | <PayloadRef Id="NetFx48Web" /> |
| 56 | </ExePackage> | 56 | </ExePackage> |
| 57 | <ExePackage Id="ExeA" Cache="remove" CacheId="4344604ECBA4DFE5DE7C680CB1AA5BD6FAA29BF95CE07740F02878C2BB1EF6DE6432944A0DB79B034D1C6F68CF80842EEE442EA8A551816E52D3F68901C50AB9" InstallSize="23939" Size="23939" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_ExeA" RollbackLogPathVariable="WixBundleRollbackLog_ExeA" DetectCondition="ExeA_Version AND ExeA_Version >= v1.0.0.0" InstallArguments="/s 5000 /regw "HKLM\Software\WiX\Tests\FailureTests\ExeA,Version,String,1.0.0.0"" UninstallArguments="/regd "HKLM\Software\WiX\Tests\FailureTests\ExeA,Version"" Uninstallable="yes" RepairArguments="/regw "HKLM\Software\WiX\Tests\FailureTests\ExeA,Version,String,1.0.0.0"" Repairable="yes" DetectionType="condition"> | 57 | <ExePackage Id="ExeA" Cache="remove" CacheId="4344604ECBA4DFE5DE7C680CB1AA5BD6FAA29BF95CE07740F02878C2BB1EF6DE6432944A0DB79B034D1C6F68CF80842EEE442EA8A551816E52D3F68901C50AB9" InstallSize="23939" Size="23939" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_ExeA" RollbackLogPathVariable="WixBundleRollbackLog_ExeA" DetectCondition="ExeA_Version AND ExeA_Version >= v1.0.0.0" InstallArguments="/s 5000 /regw "HKLM\Software\WiX\Tests\FailureTests\ExeA,Version,String,1.0.0.0"" UninstallArguments="/regd "HKLM\Software\WiX\Tests\FailureTests\ExeA,Version"" Uninstallable="yes" RepairArguments="/regw "HKLM\Software\WiX\Tests\FailureTests\ExeA,Version,String,1.0.0.0"" Repairable="yes" DetectionType="condition"> |
| 58 | <PayloadRef Id="TestExe.exe" /> | 58 | <PayloadRef Id="TestExe.exe" /> |
| 59 | <PayloadRef Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" /> | 59 | <PayloadRef Id="paygJp32KbpyjbVEQFNbl5_izmhdZw" /> |
| 60 | </ExePackage> | 60 | </ExePackage> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/MsiTransaction_BundleAv1_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/MsiTransaction_BundleAv1_manifest.xml index 2047f495..c6f7a6eb 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/MsiTransaction_BundleAv1_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/MsiTransaction_BundleAv1_manifest.xml | |||
| @@ -20,11 +20,11 @@ | |||
| 20 | <Payload Id="cab3wekki1le1R8RPDV2B8_g8jcjZc" FilePath="1cv1.cab" FileSize="975" Hash="11DE5863C4B2A8762D0EE23FE25B7774CA07676B" Packaging="embedded" SourcePath="a5" Container="WixAttachedContainer" /> | 20 | <Payload Id="cab3wekki1le1R8RPDV2B8_g8jcjZc" FilePath="1cv1.cab" FileSize="975" Hash="11DE5863C4B2A8762D0EE23FE25B7774CA07676B" Packaging="embedded" SourcePath="a5" Container="WixAttachedContainer" /> |
| 21 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 21 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 22 | <RollbackBoundary Id="rbaOCA08D8ky7uBOK71_6FWz1K3TuQ" Vital="yes" Transaction="yes" /> | 22 | <RollbackBoundary Id="rbaOCA08D8ky7uBOK71_6FWz1K3TuQ" Vital="yes" Transaction="yes" /> |
| 23 | <Registration Code="{E6469F05-BDC8-4EB8-B218-67412543EFAA}" ExecutableName="BundleAv1.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{E6469F05-BDC8-4EB8-B218-67412543EFAA}"> | 23 | <Registration Code="{E6469F05-BDC8-4EB8-B218-67412543EFAA}" ExecutableName="BundleAv1.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{E6469F05-BDC8-4EB8-B218-67412543EFAA}"> |
| 24 | <Arp Register="yes" DisplayName="~MsiTransactionTests - BundleAv1" DisplayVersion="1.0.0.0" /> | 24 | <Arp Register="yes" DisplayName="~MsiTransactionTests - BundleAv1" DisplayVersion="1.0.0.0" /> |
| 25 | </Registration> | 25 | </Registration> |
| 26 | <Chain> | 26 | <Chain> |
| 27 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{01E6B748-7B95-4BA9-976D-B6F35076CEF4}v1.0.0.0" InstallSize="1951" Size="33743" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{01E6B748-7B95-4BA9-976D-B6F35076CEF4}" Language="1033" Version="1.0.0.0" UpgradeCode="{7772FCDF-5FDB-497D-B5DF-C6D17D667976}"> | 27 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{01E6B748-7B95-4BA9-976D-B6F35076CEF4}v1.0.0.0" InstallSize="1951" Size="33743" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{01E6B748-7B95-4BA9-976D-B6F35076CEF4}" Language="1033" Version="1.0.0.0" UpgradeCode="{7772FCDF-5FDB-497D-B5DF-C6D17D667976}"> |
| 28 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | 28 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> |
| 29 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | 29 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> |
| 30 | <Provides Key="{01E6B748-7B95-4BA9-976D-B6F35076CEF4}" Version="1.0.0.0" DisplayName="~MsiTransactionTests - PackageA" /> | 30 | <Provides Key="{01E6B748-7B95-4BA9-976D-B6F35076CEF4}" Version="1.0.0.0" DisplayName="~MsiTransactionTests - PackageA" /> |
| @@ -37,7 +37,7 @@ | |||
| 37 | <PayloadRef Id="PackageA" /> | 37 | <PayloadRef Id="PackageA" /> |
| 38 | <PayloadRef Id="cab9Ins_fTP3wNwq5Gxo41ch5VUPaQ" /> | 38 | <PayloadRef Id="cab9Ins_fTP3wNwq5Gxo41ch5VUPaQ" /> |
| 39 | </MsiPackage> | 39 | </MsiPackage> |
| 40 | <MsiPackage Id="PackageB" Cache="keep" CacheId="{D1D01094-23CE-4AF0-84B6-4A1A133F21D3}v1.0.0.0" InstallSize="1951" Size="33743" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryForward="rbaOCA08D8ky7uBOK71_6FWz1K3TuQ" LogPathVariable="WixBundleLog_PackageB" RollbackLogPathVariable="WixBundleRollbackLog_PackageB" ProductCode="{D1D01094-23CE-4AF0-84B6-4A1A133F21D3}" Language="1033" Version="1.0.0.0" UpgradeCode="{EAFC0C6B-626E-415C-8132-536FBD19F49B}"> | 40 | <MsiPackage Id="PackageB" Cache="keep" CacheId="{D1D01094-23CE-4AF0-84B6-4A1A133F21D3}v1.0.0.0" InstallSize="1951" Size="33743" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryForward="rbaOCA08D8ky7uBOK71_6FWz1K3TuQ" LogPathVariable="WixBundleLog_PackageB" RollbackLogPathVariable="WixBundleRollbackLog_PackageB" ProductCode="{D1D01094-23CE-4AF0-84B6-4A1A133F21D3}" Language="1033" Version="1.0.0.0" UpgradeCode="{EAFC0C6B-626E-415C-8132-536FBD19F49B}"> |
| 41 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | 41 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> |
| 42 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | 42 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> |
| 43 | <Provides Key="{D1D01094-23CE-4AF0-84B6-4A1A133F21D3}" Version="1.0.0.0" DisplayName="~MsiTransactionTests - PackageBv1" /> | 43 | <Provides Key="{D1D01094-23CE-4AF0-84B6-4A1A133F21D3}" Version="1.0.0.0" DisplayName="~MsiTransactionTests - PackageBv1" /> |
| @@ -50,7 +50,7 @@ | |||
| 50 | <PayloadRef Id="PackageB" /> | 50 | <PayloadRef Id="PackageB" /> |
| 51 | <PayloadRef Id="cablKtJUKxAbhSMIBwQU6vJ_CDsIkE" /> | 51 | <PayloadRef Id="cablKtJUKxAbhSMIBwQU6vJ_CDsIkE" /> |
| 52 | </MsiPackage> | 52 | </MsiPackage> |
| 53 | <MsiPackage Id="PackageC" Cache="keep" CacheId="{A497C5E5-C78B-4F0B-BF72-B33E1DB1C4B8}v1.0.0.0" InstallSize="1951" Size="33743" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryBackward="rbaOCA08D8ky7uBOK71_6FWz1K3TuQ" LogPathVariable="WixBundleLog_PackageC" RollbackLogPathVariable="WixBundleRollbackLog_PackageC" ProductCode="{A497C5E5-C78B-4F0B-BF72-B33E1DB1C4B8}" Language="1033" Version="1.0.0.0" UpgradeCode="{A18BDC12-DAEC-43EE-87D1-31B2C2BC6269}"> | 53 | <MsiPackage Id="PackageC" Cache="keep" CacheId="{A497C5E5-C78B-4F0B-BF72-B33E1DB1C4B8}v1.0.0.0" InstallSize="1951" Size="33743" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="rbaOCA08D8ky7uBOK71_6FWz1K3TuQ" LogPathVariable="WixBundleLog_PackageC" RollbackLogPathVariable="WixBundleRollbackLog_PackageC" ProductCode="{A497C5E5-C78B-4F0B-BF72-B33E1DB1C4B8}" Language="1033" Version="1.0.0.0" UpgradeCode="{A18BDC12-DAEC-43EE-87D1-31B2C2BC6269}"> |
| 54 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | 54 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> |
| 55 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | 55 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> |
| 56 | <Provides Key="{A497C5E5-C78B-4F0B-BF72-B33E1DB1C4B8}" Version="1.0.0.0" DisplayName="~MsiTransactionTests - PackageCv1" /> | 56 | <Provides Key="{A497C5E5-C78B-4F0B-BF72-B33E1DB1C4B8}" Version="1.0.0.0" DisplayName="~MsiTransactionTests - PackageCv1" /> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/MsuPackageFixture_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/MsuPackageFixture_manifest.xml index 4fd1d75a..6e678d12 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/MsuPackageFixture_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/MsuPackageFixture_manifest.xml | |||
| @@ -10,11 +10,11 @@ | |||
| 10 | <Container Id="WixAttachedContainer" FileSize="119" Hash="06D28293FD57CD231E125EF9C82418A488928A98832A6937A77A3283A17A5C37F8D619C51759319A57E8F8A948FA73E8C5814185A0114130F3213AB268073555" FilePath="test.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | 10 | <Container Id="WixAttachedContainer" FileSize="119" Hash="06D28293FD57CD231E125EF9C82418A488928A98832A6937A77A3283A17A5C37F8D619C51759319A57E8F8A948FA73E8C5814185A0114130F3213AB268073555" FilePath="test.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> |
| 11 | <Payload Id="test.msu" FilePath="test.msu" FileSize="28" Hash="B040F02D2F90E04E9AFBDC91C00CEB5DF97D48E205D96DC0A44E10AF8870794DAE62CA70224F12BE9112AA730BBE470CA81FB5617AAC690E832F3F84510E92BA" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | 11 | <Payload Id="test.msu" FilePath="test.msu" FileSize="28" Hash="B040F02D2F90E04E9AFBDC91C00CEB5DF97D48E205D96DC0A44E10AF8870794DAE62CA70224F12BE9112AA730BBE470CA81FB5617AAC690E832F3F84510E92BA" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> |
| 12 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 12 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 13 | <Registration Code="{06077C60-DC46-4F4A-8D3C-05F869187191}" ExecutableName="test.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{06077C60-DC46-4F4A-8D3C-05F869187191}"> | 13 | <Registration Code="{06077C60-DC46-4F4A-8D3C-05F869187191}" ExecutableName="test.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{06077C60-DC46-4F4A-8D3C-05F869187191}"> |
| 14 | <Arp Register="yes" DisplayName="BurnBundle" DisplayVersion="1.0.0.0" Publisher="Example Corporation" /> | 14 | <Arp Register="yes" DisplayName="BurnBundle" DisplayVersion="1.0.0.0" Publisher="Example Corporation" /> |
| 15 | </Registration> | 15 | </Registration> |
| 16 | <Chain> | 16 | <Chain> |
| 17 | <MsuPackage Id="test.msu" Cache="keep" CacheId="B040F02D2F90E04E9AFBDC91C00CEB5DF97D48E205D96DC0A44E10AF8870794DAE62CA70224F12BE9112AA730BBE470CA81FB5617AAC690E832F3F84510E92BA" InstallSize="28" Size="28" PerMachine="yes" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" DetectCondition="DetectedTheMsu"> | 17 | <MsuPackage Id="test.msu" Cache="keep" CacheId="B040F02D2F90E04E9AFBDC91C00CEB5DF97D48E205D96DC0A44E10AF8870794DAE62CA70224F12BE9112AA730BBE470CA81FB5617AAC690E832F3F84510E92BA" InstallSize="28" Size="28" Scope="permachine" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" DetectCondition="DetectedTheMsu"> |
| 18 | <PayloadRef Id="test.msu" /> | 18 | <PayloadRef Id="test.msu" /> |
| 19 | </MsuPackage> | 19 | </MsuPackage> |
| 20 | </Chain> | 20 | </Chain> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PerMachineBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PerMachineBundle_manifest.xml new file mode 100644 index 00000000..66864c70 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PerMachineBundle_manifest.xml | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PerMachineBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{650EDC96-0BDF-512A-A544-4E5D7DD5D11E}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="32839" Hash="5BE3F4AAE711DB99A43B248F380EFB9F069C7D85F2C6D20D2B25033AABEDA09BCCF5203C2A99A7DB02D040168785EBB0260DC4073FEF2677F3760821B0948202" FilePath="PerMachineBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PerMachinePkg.msi" FilePath="PerMachinePkg.msi" FileSize="32768" Hash="4458C6B56290B207657AFB52DC20729FEDDA76799F21C14A7095E08CFB68CF382C5487CD53535CF24C16610066203ADFC29F25489BDE54290D1E480B7DED8FA6" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 16 | <Registration BundleId="PerMachineBundle" Code="{3B58FF9C-2B33-417F-8240-10DA7FD7A6C4}" ExecutableName="PerMachineBundle.exe" Scope="perMachine" Tag="" Version="1.0.0.0" ProviderKey="{3B58FF9C-2B33-417F-8240-10DA7FD7A6C4}"> | ||
| 17 | <Arp DisplayName="PerMachineBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 18 | </Registration> | ||
| 19 | <Chain> | ||
| 20 | <MsiPackage Id="PerMachinePkg.msi" Cache="keep" CacheId="{DD544949-52BA-432B-925E-9BF0C4DB4B83}v1.0.0.0" InstallSize="283" Size="32768" Scope="perMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerMachinePkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerMachinePkg.msi" ProductCode="{DD544949-52BA-432B-925E-9BF0C4DB4B83}" Language="1033" Version="1.0.0.0" UpgradeCode="{40B2312E-4395-5299-A08F-5B2744AA5A39}"> | ||
| 21 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 22 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 23 | <Provides Key="{DD544949-52BA-432B-925E-9BF0C4DB4B83}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerMachinePkg" /> | ||
| 24 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 25 | <Language Id="1033" /> | ||
| 26 | </RelatedPackage> | ||
| 27 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 28 | <Language Id="1033" /> | ||
| 29 | </RelatedPackage> | ||
| 30 | <PayloadRef Id="PerMachinePkg.msi" /> | ||
| 31 | </MsiPackage> | ||
| 32 | </Chain> | ||
| 33 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PerUserBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PerUserBundle_manifest.xml new file mode 100644 index 00000000..6c26f708 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PerUserBundle_manifest.xml | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PerUserBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{DEB06D62-A48E-5455-920C-DC8E2DD660F9}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="32839" Hash="CF67D7D05B0449D5221DE5FB08E93DC85A8ECB4AC8E3614DCB63B9FE9010F08FE71A29FC55D6E4383CE73ED5420A5E73628B314932F229E7E0FBBC262522F68C" FilePath="PerUserBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PerUserPkg.msi" FilePath="PerUserPkg.msi" FileSize="32768" Hash="26CA1B74EFC52FA969279450110B6A9472E629004EF5655A661D8609A7E4DDB76CA220E5DB6FC2AE554415D9A4E28567014F48EF978EFDEE0B4431E81498572F" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 16 | <Registration BundleId="PerUserBundle" Code="{7786E965-CCB4-42B2-AA90-F2652EE3B5C5}" ExecutableName="PerUserBundle.exe" Scope="perUser" Tag="" Version="1.0.0.0" ProviderKey="{7786E965-CCB4-42B2-AA90-F2652EE3B5C5}"> | ||
| 17 | <Arp DisplayName="PerUserBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 18 | </Registration> | ||
| 19 | <Chain> | ||
| 20 | <MsiPackage Id="PerUserPkg.msi" Cache="keep" CacheId="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}v1.0.0.0" InstallSize="274" Size="32768" Scope="perUser" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerUserPkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerUserPkg.msi" ProductCode="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}" Language="1033" Version="1.0.0.0" UpgradeCode="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}"> | ||
| 21 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 22 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 23 | <Provides Key="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerUserPkg" /> | ||
| 24 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 25 | <Language Id="1033" /> | ||
| 26 | </RelatedPackage> | ||
| 27 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 28 | <Language Id="1033" /> | ||
| 29 | </RelatedPackage> | ||
| 30 | <PayloadRef Id="PerUserPkg.msi" /> | ||
| 31 | </MsiPackage> | ||
| 32 | </Chain> | ||
| 33 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPmouBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPmouBundle_manifest.xml new file mode 100644 index 00000000..47ce485a --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPmouBundle_manifest.xml | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PmPmouBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{62D1B851-3DC9-58B7-B923-71A0F75703E0}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="98429" Hash="27A597EF7C5C69BDFE548E655FB4ACE548F379EBCC24EF56401BD22D3EECC0A904A68595FE5D3F448B7137A9B03A5EA2C0B422E3003DD293C7E73E2E4FE9D43B" FilePath="PmPmouBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PerMachinePkg.msi" FilePath="PerMachinePkg.msi" FileSize="32768" Hash="4458C6B56290B207657AFB52DC20729FEDDA76799F21C14A7095E08CFB68CF382C5487CD53535CF24C16610066203ADFC29F25489BDE54290D1E480B7DED8FA6" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PmouPkg1.msi" FilePath="PmouPkg1.msi" FileSize="32768" Hash="BCBB4F1C48953D23BE56CD7D5005BB38CB02C7BAC4AF30F87B7ADF7715EA721D28A3FCFC025D26FD5DC069BAB69F462577C3212C1BFE3707FCCE60FF3F3ED12C" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <Payload Id="PmouPkg2.msi" FilePath="PmouPkg2.msi" FileSize="32768" Hash="C3BABBCCC0FDA4ACE44D28C60FAB2CA76C00655A405CF6F7A3593F9130FCF47AD18C4DAE1A32D5C0177F58DBAE00CBF7EDCA027BEE19B96E0145A3FA00811B51" Packaging="embedded" SourcePath="a2" Container="WixAttachedContainer" /> | ||
| 17 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 18 | <Registration BundleId="PmPmouBundle" Code="{91B17F62-3EC0-4BDB-9094-A00B3B575E5B}" ExecutableName="PmPmouBundle.exe" Scope="perMachineOrUser" Tag="" Version="1.0.0.0" ProviderKey="{91B17F62-3EC0-4BDB-9094-A00B3B575E5B}"> | ||
| 19 | <Arp DisplayName="PmPmouBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 20 | </Registration> | ||
| 21 | <Chain> | ||
| 22 | <MsiPackage Id="PerMachinePkg.msi" Cache="keep" CacheId="{DD544949-52BA-432B-925E-9BF0C4DB4B83}v1.0.0.0" InstallSize="283" Size="32768" Scope="perMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerMachinePkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerMachinePkg.msi" ProductCode="{DD544949-52BA-432B-925E-9BF0C4DB4B83}" Language="1033" Version="1.0.0.0" UpgradeCode="{40B2312E-4395-5299-A08F-5B2744AA5A39}"> | ||
| 23 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 24 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 25 | <Provides Key="{DD544949-52BA-432B-925E-9BF0C4DB4B83}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerMachinePkg" /> | ||
| 26 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 27 | <Language Id="1033" /> | ||
| 28 | </RelatedPackage> | ||
| 29 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 30 | <Language Id="1033" /> | ||
| 31 | </RelatedPackage> | ||
| 32 | <PayloadRef Id="PerMachinePkg.msi" /> | ||
| 33 | </MsiPackage> | ||
| 34 | <MsiPackage Id="PmouPkg1.msi" Cache="keep" CacheId="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PmouPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg1.msi" ProductCode="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}" Language="1033" Version="1.0.0.0" UpgradeCode="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}"> | ||
| 35 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 36 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 37 | <Provides Key="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg1" /> | ||
| 38 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 39 | <Language Id="1033" /> | ||
| 40 | </RelatedPackage> | ||
| 41 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 42 | <Language Id="1033" /> | ||
| 43 | </RelatedPackage> | ||
| 44 | <PayloadRef Id="PmouPkg1.msi" /> | ||
| 45 | </MsiPackage> | ||
| 46 | <MsiPackage Id="PmouPkg2.msi" Cache="keep" CacheId="{1B1D793E-4026-48CA-B088-F919E70440AC}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PmouPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg2.msi" ProductCode="{1B1D793E-4026-48CA-B088-F919E70440AC}" Language="1033" Version="1.0.0.0" UpgradeCode="{98F763B3-EA17-5AE5-AD47-21004FB34B24}"> | ||
| 47 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 48 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 49 | <Provides Key="{1B1D793E-4026-48CA-B088-F919E70440AC}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg2" /> | ||
| 50 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 51 | <Language Id="1033" /> | ||
| 52 | </RelatedPackage> | ||
| 53 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 54 | <Language Id="1033" /> | ||
| 55 | </RelatedPackage> | ||
| 56 | <PayloadRef Id="PmouPkg2.msi" /> | ||
| 57 | </MsiPackage> | ||
| 58 | </Chain> | ||
| 59 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuPmouBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuPmouBundle_manifest.xml new file mode 100644 index 00000000..86c1b1b0 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuPmouBundle_manifest.xml | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PmPuPmouBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{F04C3701-1AC4-5C1D-8B26-400FB0C9F52A}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="131224" Hash="4F6D2A7D5A20E974F7708B50FF149D18B2739FC2CC9AF779D291FD1A4BFA7CC523E4D1DC2D7C372E519AE9FD1253329FE3182C172F2B43ED91E167AE2A9C5343" FilePath="PmPuPmouBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PerMachinePkg.msi" FilePath="PerMachinePkg.msi" FileSize="32768" Hash="4458C6B56290B207657AFB52DC20729FEDDA76799F21C14A7095E08CFB68CF382C5487CD53535CF24C16610066203ADFC29F25489BDE54290D1E480B7DED8FA6" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PmouPkg1.msi" FilePath="PmouPkg1.msi" FileSize="32768" Hash="BCBB4F1C48953D23BE56CD7D5005BB38CB02C7BAC4AF30F87B7ADF7715EA721D28A3FCFC025D26FD5DC069BAB69F462577C3212C1BFE3707FCCE60FF3F3ED12C" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <Payload Id="PmouPkg2.msi" FilePath="PmouPkg2.msi" FileSize="32768" Hash="C3BABBCCC0FDA4ACE44D28C60FAB2CA76C00655A405CF6F7A3593F9130FCF47AD18C4DAE1A32D5C0177F58DBAE00CBF7EDCA027BEE19B96E0145A3FA00811B51" Packaging="embedded" SourcePath="a2" Container="WixAttachedContainer" /> | ||
| 17 | <Payload Id="PerUserPkg.msi" FilePath="PerUserPkg.msi" FileSize="32768" Hash="26CA1B74EFC52FA969279450110B6A9472E629004EF5655A661D8609A7E4DDB76CA220E5DB6FC2AE554415D9A4E28567014F48EF978EFDEE0B4431E81498572F" Packaging="embedded" SourcePath="a3" Container="WixAttachedContainer" /> | ||
| 18 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 19 | <Registration BundleId="PmPuPmouBundle" Code="{6D7831C5-3A3B-481E-B048-E150DB402C74}" ExecutableName="PmPuPmouBundle.exe" Scope="perUser" Tag="" Version="1.0.0.0" ProviderKey="{6D7831C5-3A3B-481E-B048-E150DB402C74}"> | ||
| 20 | <Arp DisplayName="PmPuPmouBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 21 | </Registration> | ||
| 22 | <Chain> | ||
| 23 | <MsiPackage Id="PerMachinePkg.msi" Cache="keep" CacheId="{DD544949-52BA-432B-925E-9BF0C4DB4B83}v1.0.0.0" InstallSize="283" Size="32768" Scope="perMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerMachinePkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerMachinePkg.msi" ProductCode="{DD544949-52BA-432B-925E-9BF0C4DB4B83}" Language="1033" Version="1.0.0.0" UpgradeCode="{40B2312E-4395-5299-A08F-5B2744AA5A39}"> | ||
| 24 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 25 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 26 | <Provides Key="{DD544949-52BA-432B-925E-9BF0C4DB4B83}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerMachinePkg" /> | ||
| 27 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 28 | <Language Id="1033" /> | ||
| 29 | </RelatedPackage> | ||
| 30 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 31 | <Language Id="1033" /> | ||
| 32 | </RelatedPackage> | ||
| 33 | <PayloadRef Id="PerMachinePkg.msi" /> | ||
| 34 | </MsiPackage> | ||
| 35 | <MsiPackage Id="PmouPkg1.msi" Cache="keep" CacheId="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PmouPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg1.msi" ProductCode="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}" Language="1033" Version="1.0.0.0" UpgradeCode="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}"> | ||
| 36 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 37 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 38 | <Provides Key="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg1" /> | ||
| 39 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 40 | <Language Id="1033" /> | ||
| 41 | </RelatedPackage> | ||
| 42 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 43 | <Language Id="1033" /> | ||
| 44 | </RelatedPackage> | ||
| 45 | <PayloadRef Id="PmouPkg1.msi" /> | ||
| 46 | </MsiPackage> | ||
| 47 | <MsiPackage Id="PmouPkg2.msi" Cache="keep" CacheId="{1B1D793E-4026-48CA-B088-F919E70440AC}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PmouPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg2.msi" ProductCode="{1B1D793E-4026-48CA-B088-F919E70440AC}" Language="1033" Version="1.0.0.0" UpgradeCode="{98F763B3-EA17-5AE5-AD47-21004FB34B24}"> | ||
| 48 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 49 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 50 | <Provides Key="{1B1D793E-4026-48CA-B088-F919E70440AC}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg2" /> | ||
| 51 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 52 | <Language Id="1033" /> | ||
| 53 | </RelatedPackage> | ||
| 54 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 55 | <Language Id="1033" /> | ||
| 56 | </RelatedPackage> | ||
| 57 | <PayloadRef Id="PmouPkg2.msi" /> | ||
| 58 | </MsiPackage> | ||
| 59 | <MsiPackage Id="PerUserPkg.msi" Cache="keep" CacheId="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}v1.0.0.0" InstallSize="274" Size="32768" Scope="perUser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerUserPkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerUserPkg.msi" ProductCode="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}" Language="1033" Version="1.0.0.0" UpgradeCode="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}"> | ||
| 60 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 61 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 62 | <Provides Key="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerUserPkg" /> | ||
| 63 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 64 | <Language Id="1033" /> | ||
| 65 | </RelatedPackage> | ||
| 66 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 67 | <Language Id="1033" /> | ||
| 68 | </RelatedPackage> | ||
| 69 | <PayloadRef Id="PerUserPkg.msi" /> | ||
| 70 | </MsiPackage> | ||
| 71 | </Chain> | ||
| 72 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuPuomBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuPuomBundle_manifest.xml new file mode 100644 index 00000000..4bbd5307 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuPuomBundle_manifest.xml | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PmPuPuomBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{24F67952-8FCC-58B6-8A79-76F35525AAC4}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="131224" Hash="5A33E8012AC2E16CBD94668E8F871F023044CB37BE65C62A483C1896DC262C0F7D16C374405C28AE0F3AD000BEF8CED1858B9A7DBDEC9CDB2E01B7B67C506D1B" FilePath="PmPuPuomBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PerMachinePkg.msi" FilePath="PerMachinePkg.msi" FileSize="32768" Hash="4458C6B56290B207657AFB52DC20729FEDDA76799F21C14A7095E08CFB68CF382C5487CD53535CF24C16610066203ADFC29F25489BDE54290D1E480B7DED8FA6" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PuomPkg1.msi" FilePath="PuomPkg1.msi" FileSize="32768" Hash="EF19E061C2647AD42E39A1721299D5D970F1E42CE6636ACA53009DC0D0D1F8B6F2FD516B7D3EEDAAF1EEDA364D54DA6C18FB929C385EC1BDDA08AEA50370B357" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <Payload Id="PuomPkg2.msi" FilePath="PuomPkg2.msi" FileSize="32768" Hash="F927CE9CD3272AF6571E39C72A68E6BD6808D944B6893B09253887B1942E1C043EC5E1E1E758D3C261FF8B566121EE809C4CBCB931D00EBF14CC6CFE24001292" Packaging="embedded" SourcePath="a2" Container="WixAttachedContainer" /> | ||
| 17 | <Payload Id="PerUserPkg.msi" FilePath="PerUserPkg.msi" FileSize="32768" Hash="26CA1B74EFC52FA969279450110B6A9472E629004EF5655A661D8609A7E4DDB76CA220E5DB6FC2AE554415D9A4E28567014F48EF978EFDEE0B4431E81498572F" Packaging="embedded" SourcePath="a3" Container="WixAttachedContainer" /> | ||
| 18 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 19 | <Registration BundleId="PmPuPuomBundle" Code="{37290F81-A99C-4FBE-84F2-9A2E4742453C}" ExecutableName="PmPuPuomBundle.exe" Scope="perUser" Tag="" Version="1.0.0.0" ProviderKey="{37290F81-A99C-4FBE-84F2-9A2E4742453C}"> | ||
| 20 | <Arp DisplayName="PmPuPuomBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 21 | </Registration> | ||
| 22 | <Chain> | ||
| 23 | <MsiPackage Id="PerMachinePkg.msi" Cache="keep" CacheId="{DD544949-52BA-432B-925E-9BF0C4DB4B83}v1.0.0.0" InstallSize="283" Size="32768" Scope="perMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerMachinePkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerMachinePkg.msi" ProductCode="{DD544949-52BA-432B-925E-9BF0C4DB4B83}" Language="1033" Version="1.0.0.0" UpgradeCode="{40B2312E-4395-5299-A08F-5B2744AA5A39}"> | ||
| 24 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 25 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 26 | <Provides Key="{DD544949-52BA-432B-925E-9BF0C4DB4B83}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerMachinePkg" /> | ||
| 27 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 28 | <Language Id="1033" /> | ||
| 29 | </RelatedPackage> | ||
| 30 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 31 | <Language Id="1033" /> | ||
| 32 | </RelatedPackage> | ||
| 33 | <PayloadRef Id="PerMachinePkg.msi" /> | ||
| 34 | </MsiPackage> | ||
| 35 | <MsiPackage Id="PuomPkg1.msi" Cache="keep" CacheId="{167C572B-D847-4BCF-9693-C8B5EB6350CD}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PuomPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg1.msi" ProductCode="{167C572B-D847-4BCF-9693-C8B5EB6350CD}" Language="1033" Version="1.0.0.0" UpgradeCode="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}"> | ||
| 36 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 37 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 38 | <Provides Key="{167C572B-D847-4BCF-9693-C8B5EB6350CD}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg1" /> | ||
| 39 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 40 | <Language Id="1033" /> | ||
| 41 | </RelatedPackage> | ||
| 42 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 43 | <Language Id="1033" /> | ||
| 44 | </RelatedPackage> | ||
| 45 | <PayloadRef Id="PuomPkg1.msi" /> | ||
| 46 | </MsiPackage> | ||
| 47 | <MsiPackage Id="PuomPkg2.msi" Cache="keep" CacheId="{07617017-CE68-4F88-981A-4629835C9BD2}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PuomPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg2.msi" ProductCode="{07617017-CE68-4F88-981A-4629835C9BD2}" Language="1033" Version="1.0.0.0" UpgradeCode="{C977A922-168B-59F0-84FD-CAB89DB314E0}"> | ||
| 48 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 49 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 50 | <Provides Key="{07617017-CE68-4F88-981A-4629835C9BD2}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg2" /> | ||
| 51 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 52 | <Language Id="1033" /> | ||
| 53 | </RelatedPackage> | ||
| 54 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 55 | <Language Id="1033" /> | ||
| 56 | </RelatedPackage> | ||
| 57 | <PayloadRef Id="PuomPkg2.msi" /> | ||
| 58 | </MsiPackage> | ||
| 59 | <MsiPackage Id="PerUserPkg.msi" Cache="keep" CacheId="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}v1.0.0.0" InstallSize="274" Size="32768" Scope="perUser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerUserPkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerUserPkg.msi" ProductCode="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}" Language="1033" Version="1.0.0.0" UpgradeCode="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}"> | ||
| 60 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 61 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 62 | <Provides Key="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerUserPkg" /> | ||
| 63 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 64 | <Language Id="1033" /> | ||
| 65 | </RelatedPackage> | ||
| 66 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 67 | <Language Id="1033" /> | ||
| 68 | </RelatedPackage> | ||
| 69 | <PayloadRef Id="PerUserPkg.msi" /> | ||
| 70 | </MsiPackage> | ||
| 71 | </Chain> | ||
| 72 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuomBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuomBundle_manifest.xml new file mode 100644 index 00000000..6ea9e9bd --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PmPuomBundle_manifest.xml | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PmPuomBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{24038F27-3104-5E4E-987B-1C1F81A88D56}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="98429" Hash="5AF2416362232E3DED34FDBAA37EBA07FAA96526A87DDA64609762CC95B85DD95D4CB3F907A0D331C9A19D89121737C8A54E78DD65A4979189B040A4521F2115" FilePath="PmPuomBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PerMachinePkg.msi" FilePath="PerMachinePkg.msi" FileSize="32768" Hash="4458C6B56290B207657AFB52DC20729FEDDA76799F21C14A7095E08CFB68CF382C5487CD53535CF24C16610066203ADFC29F25489BDE54290D1E480B7DED8FA6" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PuomPkg1.msi" FilePath="PuomPkg1.msi" FileSize="32768" Hash="EF19E061C2647AD42E39A1721299D5D970F1E42CE6636ACA53009DC0D0D1F8B6F2FD516B7D3EEDAAF1EEDA364D54DA6C18FB929C385EC1BDDA08AEA50370B357" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <Payload Id="PuomPkg2.msi" FilePath="PuomPkg2.msi" FileSize="32768" Hash="F927CE9CD3272AF6571E39C72A68E6BD6808D944B6893B09253887B1942E1C043EC5E1E1E758D3C261FF8B566121EE809C4CBCB931D00EBF14CC6CFE24001292" Packaging="embedded" SourcePath="a2" Container="WixAttachedContainer" /> | ||
| 17 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 18 | <Registration BundleId="PmPuomBundle" Code="{8D5DB5A9-22B1-475E-AC99-CA7E9179B94F}" ExecutableName="PmPuomBundle.exe" Scope="perUserOrMachine" Tag="" Version="1.0.0.0" ProviderKey="{8D5DB5A9-22B1-475E-AC99-CA7E9179B94F}"> | ||
| 19 | <Arp DisplayName="PmPuomBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 20 | </Registration> | ||
| 21 | <Chain> | ||
| 22 | <MsiPackage Id="PerMachinePkg.msi" Cache="keep" CacheId="{DD544949-52BA-432B-925E-9BF0C4DB4B83}v1.0.0.0" InstallSize="283" Size="32768" Scope="perMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerMachinePkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerMachinePkg.msi" ProductCode="{DD544949-52BA-432B-925E-9BF0C4DB4B83}" Language="1033" Version="1.0.0.0" UpgradeCode="{40B2312E-4395-5299-A08F-5B2744AA5A39}"> | ||
| 23 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 24 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 25 | <Provides Key="{DD544949-52BA-432B-925E-9BF0C4DB4B83}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerMachinePkg" /> | ||
| 26 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 27 | <Language Id="1033" /> | ||
| 28 | </RelatedPackage> | ||
| 29 | <RelatedPackage Id="{40B2312E-4395-5299-A08F-5B2744AA5A39}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 30 | <Language Id="1033" /> | ||
| 31 | </RelatedPackage> | ||
| 32 | <PayloadRef Id="PerMachinePkg.msi" /> | ||
| 33 | </MsiPackage> | ||
| 34 | <MsiPackage Id="PuomPkg1.msi" Cache="keep" CacheId="{167C572B-D847-4BCF-9693-C8B5EB6350CD}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PuomPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg1.msi" ProductCode="{167C572B-D847-4BCF-9693-C8B5EB6350CD}" Language="1033" Version="1.0.0.0" UpgradeCode="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}"> | ||
| 35 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 36 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 37 | <Provides Key="{167C572B-D847-4BCF-9693-C8B5EB6350CD}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg1" /> | ||
| 38 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 39 | <Language Id="1033" /> | ||
| 40 | </RelatedPackage> | ||
| 41 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 42 | <Language Id="1033" /> | ||
| 43 | </RelatedPackage> | ||
| 44 | <PayloadRef Id="PuomPkg1.msi" /> | ||
| 45 | </MsiPackage> | ||
| 46 | <MsiPackage Id="PuomPkg2.msi" Cache="keep" CacheId="{07617017-CE68-4F88-981A-4629835C9BD2}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PuomPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg2.msi" ProductCode="{07617017-CE68-4F88-981A-4629835C9BD2}" Language="1033" Version="1.0.0.0" UpgradeCode="{C977A922-168B-59F0-84FD-CAB89DB314E0}"> | ||
| 47 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 48 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 49 | <Provides Key="{07617017-CE68-4F88-981A-4629835C9BD2}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg2" /> | ||
| 50 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 51 | <Language Id="1033" /> | ||
| 52 | </RelatedPackage> | ||
| 53 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 54 | <Language Id="1033" /> | ||
| 55 | </RelatedPackage> | ||
| 56 | <PayloadRef Id="PuomPkg2.msi" /> | ||
| 57 | </MsiPackage> | ||
| 58 | </Chain> | ||
| 59 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PuPmouBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PuPmouBundle_manifest.xml new file mode 100644 index 00000000..79bb2500 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PuPmouBundle_manifest.xml | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PuPmouBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{92C1B57B-1972-5EB7-BB59-B4D230D806C7}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="98429" Hash="787872CCF9B905BE17725AD6F4DA2C8ACE196AA7BB90B54421E5029D85FF1F70BB51A91FAD81D2F7E09A956430866E208EF2A51681822501A39B791B88703F20" FilePath="PuPmouBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PmouPkg1.msi" FilePath="PmouPkg1.msi" FileSize="32768" Hash="BCBB4F1C48953D23BE56CD7D5005BB38CB02C7BAC4AF30F87B7ADF7715EA721D28A3FCFC025D26FD5DC069BAB69F462577C3212C1BFE3707FCCE60FF3F3ED12C" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PmouPkg2.msi" FilePath="PmouPkg2.msi" FileSize="32768" Hash="C3BABBCCC0FDA4ACE44D28C60FAB2CA76C00655A405CF6F7A3593F9130FCF47AD18C4DAE1A32D5C0177F58DBAE00CBF7EDCA027BEE19B96E0145A3FA00811B51" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <Payload Id="PerUserPkg.msi" FilePath="PerUserPkg.msi" FileSize="32768" Hash="26CA1B74EFC52FA969279450110B6A9472E629004EF5655A661D8609A7E4DDB76CA220E5DB6FC2AE554415D9A4E28567014F48EF978EFDEE0B4431E81498572F" Packaging="embedded" SourcePath="a2" Container="WixAttachedContainer" /> | ||
| 17 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 18 | <Registration BundleId="PuPmouBundle" Code="{E974001C-97B1-4FF7-B1E3-B2CAACF1FF4A}" ExecutableName="PuPmouBundle.exe" Scope="perUser" Tag="" Version="1.0.0.0" ProviderKey="{E974001C-97B1-4FF7-B1E3-B2CAACF1FF4A}"> | ||
| 19 | <Arp DisplayName="PuPmouBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 20 | </Registration> | ||
| 21 | <Chain> | ||
| 22 | <MsiPackage Id="PmouPkg1.msi" Cache="keep" CacheId="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PmouPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg1.msi" ProductCode="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}" Language="1033" Version="1.0.0.0" UpgradeCode="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}"> | ||
| 23 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 24 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 25 | <Provides Key="{E46705B9-D2F9-4BE8-8270-F1A11196A9D4}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg1" /> | ||
| 26 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 27 | <Language Id="1033" /> | ||
| 28 | </RelatedPackage> | ||
| 29 | <RelatedPackage Id="{B0DA1185-5CF5-55A3-8351-01F1AD3E50CE}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 30 | <Language Id="1033" /> | ||
| 31 | </RelatedPackage> | ||
| 32 | <PayloadRef Id="PmouPkg1.msi" /> | ||
| 33 | </MsiPackage> | ||
| 34 | <MsiPackage Id="PmouPkg2.msi" Cache="keep" CacheId="{1B1D793E-4026-48CA-B088-F919E70440AC}v1.0.0.0" InstallSize="279" Size="32768" Scope="perMachineOrUser" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PmouPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PmouPkg2.msi" ProductCode="{1B1D793E-4026-48CA-B088-F919E70440AC}" Language="1033" Version="1.0.0.0" UpgradeCode="{98F763B3-EA17-5AE5-AD47-21004FB34B24}"> | ||
| 35 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 36 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 37 | <Provides Key="{1B1D793E-4026-48CA-B088-F919E70440AC}_v1.0.0.0" Version="1.0.0.0" DisplayName="PmouPkg2" /> | ||
| 38 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 39 | <Language Id="1033" /> | ||
| 40 | </RelatedPackage> | ||
| 41 | <RelatedPackage Id="{98F763B3-EA17-5AE5-AD47-21004FB34B24}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 42 | <Language Id="1033" /> | ||
| 43 | </RelatedPackage> | ||
| 44 | <PayloadRef Id="PmouPkg2.msi" /> | ||
| 45 | </MsiPackage> | ||
| 46 | <MsiPackage Id="PerUserPkg.msi" Cache="keep" CacheId="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}v1.0.0.0" InstallSize="274" Size="32768" Scope="perUser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerUserPkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerUserPkg.msi" ProductCode="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}" Language="1033" Version="1.0.0.0" UpgradeCode="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}"> | ||
| 47 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 48 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 49 | <Provides Key="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerUserPkg" /> | ||
| 50 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 51 | <Language Id="1033" /> | ||
| 52 | </RelatedPackage> | ||
| 53 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 54 | <Language Id="1033" /> | ||
| 55 | </RelatedPackage> | ||
| 56 | <PayloadRef Id="PerUserPkg.msi" /> | ||
| 57 | </MsiPackage> | ||
| 58 | </Chain> | ||
| 59 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PuPuomBundle_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PuPuomBundle_manifest.xml new file mode 100644 index 00000000..20dc0102 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PuPuomBundle_manifest.xml | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="PuPuomBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{B0E91543-B4AC-5229-A871-3310CC2C32DF}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="98429" Hash="29DF486489C9075258FB216672D76A4BB5BEC498157964F641EA360DB2C80EE37B737654A54B6F1FBB2E96E727A80B2B708AD69534EE9CE0E29ACEF09704896D" FilePath="PuPuomBundle.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="PuomPkg1.msi" FilePath="PuomPkg1.msi" FileSize="32768" Hash="EF19E061C2647AD42E39A1721299D5D970F1E42CE6636ACA53009DC0D0D1F8B6F2FD516B7D3EEDAAF1EEDA364D54DA6C18FB929C385EC1BDDA08AEA50370B357" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <Payload Id="PuomPkg2.msi" FilePath="PuomPkg2.msi" FileSize="32768" Hash="F927CE9CD3272AF6571E39C72A68E6BD6808D944B6893B09253887B1942E1C043EC5E1E1E758D3C261FF8B566121EE809C4CBCB931D00EBF14CC6CFE24001292" Packaging="embedded" SourcePath="a1" Container="WixAttachedContainer" /> | ||
| 16 | <Payload Id="PerUserPkg.msi" FilePath="PerUserPkg.msi" FileSize="32768" Hash="26CA1B74EFC52FA969279450110B6A9472E629004EF5655A661D8609A7E4DDB76CA220E5DB6FC2AE554415D9A4E28567014F48EF978EFDEE0B4431E81498572F" Packaging="embedded" SourcePath="a2" Container="WixAttachedContainer" /> | ||
| 17 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 18 | <Registration BundleId="PuPuomBundle" Code="{6440CE0F-C219-4559-A051-97A655C4230A}" ExecutableName="PuPuomBundle.exe" Scope="perUser" Tag="" Version="1.0.0.0" ProviderKey="{6440CE0F-C219-4559-A051-97A655C4230A}"> | ||
| 19 | <Arp DisplayName="PuPuomBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 20 | </Registration> | ||
| 21 | <Chain> | ||
| 22 | <MsiPackage Id="PuomPkg1.msi" Cache="keep" CacheId="{167C572B-D847-4BCF-9693-C8B5EB6350CD}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PuomPkg1.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg1.msi" ProductCode="{167C572B-D847-4BCF-9693-C8B5EB6350CD}" Language="1033" Version="1.0.0.0" UpgradeCode="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}"> | ||
| 23 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 24 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 25 | <Provides Key="{167C572B-D847-4BCF-9693-C8B5EB6350CD}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg1" /> | ||
| 26 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 27 | <Language Id="1033" /> | ||
| 28 | </RelatedPackage> | ||
| 29 | <RelatedPackage Id="{AC3A2D0C-CB37-5F8B-8CE1-9233B963E5BB}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 30 | <Language Id="1033" /> | ||
| 31 | </RelatedPackage> | ||
| 32 | <PayloadRef Id="PuomPkg1.msi" /> | ||
| 33 | </MsiPackage> | ||
| 34 | <MsiPackage Id="PuomPkg2.msi" Cache="keep" CacheId="{07617017-CE68-4F88-981A-4629835C9BD2}v1.0.0.0" InstallSize="279" Size="32768" Scope="perUserOrMachine" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PuomPkg2.msi" RollbackLogPathVariable="WixBundleRollbackLog_PuomPkg2.msi" ProductCode="{07617017-CE68-4F88-981A-4629835C9BD2}" Language="1033" Version="1.0.0.0" UpgradeCode="{C977A922-168B-59F0-84FD-CAB89DB314E0}"> | ||
| 35 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 36 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 37 | <Provides Key="{07617017-CE68-4F88-981A-4629835C9BD2}_v1.0.0.0" Version="1.0.0.0" DisplayName="PuomPkg2" /> | ||
| 38 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 39 | <Language Id="1033" /> | ||
| 40 | </RelatedPackage> | ||
| 41 | <RelatedPackage Id="{C977A922-168B-59F0-84FD-CAB89DB314E0}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 42 | <Language Id="1033" /> | ||
| 43 | </RelatedPackage> | ||
| 44 | <PayloadRef Id="PuomPkg2.msi" /> | ||
| 45 | </MsiPackage> | ||
| 46 | <MsiPackage Id="PerUserPkg.msi" Cache="keep" CacheId="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}v1.0.0.0" InstallSize="274" Size="32768" Scope="perUser" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PerUserPkg.msi" RollbackLogPathVariable="WixBundleRollbackLog_PerUserPkg.msi" ProductCode="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}" Language="1033" Version="1.0.0.0" UpgradeCode="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}"> | ||
| 47 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | ||
| 48 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | ||
| 49 | <Provides Key="{7DA760D5-30A8-4A32-A2E0-1563E0C99CEB}_v1.0.0.0" Version="1.0.0.0" DisplayName="PerUserPkg" /> | ||
| 50 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MaxVersion="1.0.0.0" MaxInclusive="no" OnlyDetect="no" LangInclusive="yes"> | ||
| 51 | <Language Id="1033" /> | ||
| 52 | </RelatedPackage> | ||
| 53 | <RelatedPackage Id="{0D1FCBA3-488C-5309-B67C-E00C8B3FCADD}" MinVersion="1.0.0.0" MinInclusive="no" OnlyDetect="yes" LangInclusive="yes"> | ||
| 54 | <Language Id="1033" /> | ||
| 55 | </RelatedPackage> | ||
| 56 | <PayloadRef Id="PerUserPkg.msi" /> | ||
| 57 | </MsiPackage> | ||
| 58 | </Chain> | ||
| 59 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/PuomBundlePackage_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/PuomBundlePackage_manifest.xml new file mode 100644 index 00000000..60123409 --- /dev/null +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/PuomBundlePackage_manifest.xml | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <BurnManifest EngineVersion="7.0.0.54" ProtocolVersion="1" Win64="no" xmlns="http://wixtoolset.org/schemas/v4/2008/Burn"> | ||
| 3 | <Log PathVariable="WixBundleLog" Prefix="AllPuomBundle" Extension="log" /> | ||
| 4 | <RelatedBundle Code="{689DDFCE-6492-596F-92DC-341CCDF59ABB}" Action="Upgrade" /> | ||
| 5 | <UX PrimaryPayloadId="WixStandardBootstrapperApplication_X86"> | ||
| 6 | <Payload Id="payberKyKpNVb0s10isnONgjD92jYc" FilePath="thm.xml" SourcePath="u0" /> | ||
| 7 | <Payload Id="payXE.1bvyKgymWAWeJwB8BL4ifPGo" FilePath="thm.wxl" SourcePath="u1" /> | ||
| 8 | <Payload Id="pay8cUoxSucOqsVErqhu1LEW8wSG1s" FilePath="logo.png" SourcePath="u2" /> | ||
| 9 | <Payload Id="WixStandardBootstrapperApplication_X86" FilePath="wixstdba.exe" SourcePath="u3" /> | ||
| 10 | <Payload Id="uxTxMXPVMXwQrPTMIGa5WGt93w0Ns" FilePath="BootstrapperApplicationData.xml" SourcePath="u4" /> | ||
| 11 | <Payload Id="uxmKgAFS4cS31ZH_Myfqo5J4kHixQ" FilePath="BootstrapperExtensionData.xml" SourcePath="u5" /> | ||
| 12 | </UX> | ||
| 13 | <Container Id="WixAttachedContainer" FileSize="6212364" Hash="62B3BCE91659C71B4382EBE5699FDB0D9A903D5293EB6EC9211D401590C72F9A0C755F28F88D0A70BB7716710457B5480A8EBC9FEC6E103A30F2A03A301AFD10" FilePath="PuomBundlePackage.exe" AttachedIndex="1" Attached="yes" Primary="yes" /> | ||
| 14 | <Payload Id="AllPuomBundle.exe" FilePath="AllPuomBundle.exe" FileSize="6210781" Hash="99C28419B07FDFC7C89AAB483FE7B2BB35102556959E9F2169CAB8A25FCFF2583F7B1079A69CB902ACDD3EE390E890AC9C9D54A108D70BFBB4AF26EC61AB4929" Packaging="embedded" SourcePath="a0" Container="WixAttachedContainer" /> | ||
| 15 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | ||
| 16 | <Registration BundleId="AllPuomBundle" Code="{AF0B0375-34C0-4BEF-9411-ACD15D2084CB}" ExecutableName="PuomBundlePackage.exe" Scope="perUserOrMachine" Tag="" Version="1.0.0.0" ProviderKey="{AF0B0375-34C0-4BEF-9411-ACD15D2084CB}"> | ||
| 17 | <Arp DisplayName="AllPuomBundle" DisplayVersion="1.0.0.0" Publisher="Acme" /> | ||
| 18 | </Registration> | ||
| 19 | <Chain> | ||
| 20 | <BundlePackage Id="AllPuomBundle.exe" Cache="keep" CacheId="{37A6F602-178E-4A32-B766-EDC2CB81274B}v1.0.0.0" InstallSize="558" Size="6210781" Scope="perUserOrMachine" Permanent="no" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_AllPuomBundle.exe" RollbackLogPathVariable="WixBundleRollbackLog_AllPuomBundle.exe" BundleCode="{37A6F602-178E-4A32-B766-EDC2CB81274B}" Version="1.0.0.0" InstallArguments="" UninstallArguments="" RepairArguments="" SupportsBurnProtocol="yes" Win64="no" HideARP="yes"> | ||
| 21 | <Provides Key="{37A6F602-178E-4A32-B766-EDC2CB81274B}" Version="1.0.0.0" DisplayName="AllPuomBundle" Imported="yes" /> | ||
| 22 | <RelatedBundle Code="{689DDFCE-6492-596F-92DC-341CCDF59ABB}" Action="Upgrade" /> | ||
| 23 | <PayloadRef Id="AllPuomBundle.exe" /> | ||
| 24 | </BundlePackage> | ||
| 25 | </Chain> | ||
| 26 | </BurnManifest> \ No newline at end of file | ||
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_manifest.xml index 495bbf05..e4075796 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_manifest.xml | |||
| @@ -45,14 +45,14 @@ | |||
| 45 | <Payload Id="PackageA" FilePath="PackageAv1.msi" FileSize="32768" Hash="2369B16B7219B3C834DFBC5D2AF8B2EF8803D43D" Packaging="external" SourcePath="PackageAv1.msi" /> | 45 | <Payload Id="PackageA" FilePath="PackageAv1.msi" FileSize="32768" Hash="2369B16B7219B3C834DFBC5D2AF8B2EF8803D43D" Packaging="external" SourcePath="PackageAv1.msi" /> |
| 46 | <Payload Id="PatchA" FilePath="PatchA.msp" FileSize="20480" Hash="FABC6C18E4A778E127E84CDF67F93A291CAEC8BB" Packaging="external" SourcePath="PatchA.msp" /> | 46 | <Payload Id="PatchA" FilePath="PatchA.msp" FileSize="20480" Hash="FABC6C18E4A778E127E84CDF67F93A291CAEC8BB" Packaging="external" SourcePath="PatchA.msp" /> |
| 47 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 47 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 48 | <Registration Code="{22D1DDBA-284D-40A7-BD14-95EA07906F21}" ExecutableName="BundleA.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{22D1DDBA-284D-40A7-BD14-95EA07906F21}"> | 48 | <Registration Code="{22D1DDBA-284D-40A7-BD14-95EA07906F21}" ExecutableName="BundleA.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{22D1DDBA-284D-40A7-BD14-95EA07906F21}"> |
| 49 | <Arp Register="yes" DisplayName="~SlipstreamTests - BundleA" DisplayVersion="1.0.0.0" /> | 49 | <Arp Register="yes" DisplayName="~SlipstreamTests - BundleA" DisplayVersion="1.0.0.0" /> |
| 50 | </Registration> | 50 | </Registration> |
| 51 | <Chain> | 51 | <Chain> |
| 52 | <ExePackage Id="NetFx48Web" Cache="keep" CacheId="5A84A8E612E270E27D0061D58DB6B470153BE1F9" InstallSize="1479400" Size="1479400" PerMachine="yes" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" UninstallArguments="/uninstall /q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" RepairArguments="/q /norestart /repair /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" Repairable="yes" Uninstallable="yes" Protocol="netfx4" DetectionType="condition"> | 52 | <ExePackage Id="NetFx48Web" Cache="keep" CacheId="5A84A8E612E270E27D0061D58DB6B470153BE1F9" InstallSize="1479400" Size="1479400" Scope="permachine" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" UninstallArguments="/uninstall /q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" RepairArguments="/q /norestart /repair /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" Repairable="yes" Uninstallable="yes" Protocol="netfx4" DetectionType="condition"> |
| 53 | <PayloadRef Id="NetFx48Web" /> | 53 | <PayloadRef Id="NetFx48Web" /> |
| 54 | </ExePackage> | 54 | </ExePackage> |
| 55 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}v1.0.0.0" InstallSize="2103" Size="32768" PerMachine="yes" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}" Language="1033" Version="1.0.0.0" UpgradeCode="{DB87BB66-FE5D-4293-81AC-EE313D3F864B}"> | 55 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}v1.0.0.0" InstallSize="2103" Size="32768" Scope="permachine" Permanent="no" Vital="yes" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}" Language="1033" Version="1.0.0.0" UpgradeCode="{DB87BB66-FE5D-4293-81AC-EE313D3F864B}"> |
| 56 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | 56 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> |
| 57 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | 57 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> |
| 58 | <SlipstreamMsp Id="PatchA" /> | 58 | <SlipstreamMsp Id="PatchA" /> |
| @@ -65,7 +65,7 @@ | |||
| 65 | </RelatedPackage> | 65 | </RelatedPackage> |
| 66 | <PayloadRef Id="PackageA" /> | 66 | <PayloadRef Id="PackageA" /> |
| 67 | </MsiPackage> | 67 | </MsiPackage> |
| 68 | <MspPackage Id="PatchA" Cache="keep" CacheId="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" InstallSize="20480" Size="20480" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PatchA" RollbackLogPathVariable="WixBundleRollbackLog_PatchA" PatchCode="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" PatchXml="<?xml version="1.0" encoding="utf-16"?><MsiPatch xmlns="http://www.microsoft.com/msi/patch_applicability.xsd" SchemaVersion="1.0.0.0" PatchGUID="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" MinMsiVersion="5" TargetsRTM="true"><TargetProduct MinMsiVersion="500"><TargetProductCode Validate="true">{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}</TargetProductCode><TargetVersion Validate="true" ComparisonType="Equal" ComparisonFilter="MajorMinorUpdate">1.0.0.0</TargetVersion><UpdatedVersion>1.0.1.0</UpdatedVersion><TargetLanguage Validate="false">1033</TargetLanguage><UpdatedLanguages>1033</UpdatedLanguages><UpgradeCode Validate="true">{DB87BB66-FE5D-4293-81AC-EE313D3F864B}</UpgradeCode></TargetProduct><TargetProductCode>{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}</TargetProductCode></MsiPatch>"> | 68 | <MspPackage Id="PatchA" Cache="keep" CacheId="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" InstallSize="20480" Size="20480" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PatchA" RollbackLogPathVariable="WixBundleRollbackLog_PatchA" PatchCode="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" PatchXml="<?xml version="1.0" encoding="utf-16"?><MsiPatch xmlns="http://www.microsoft.com/msi/patch_applicability.xsd" SchemaVersion="1.0.0.0" PatchGUID="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" MinMsiVersion="5" TargetsRTM="true"><TargetProduct MinMsiVersion="500"><TargetProductCode Validate="true">{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}</TargetProductCode><TargetVersion Validate="true" ComparisonType="Equal" ComparisonFilter="MajorMinorUpdate">1.0.0.0</TargetVersion><UpdatedVersion>1.0.1.0</UpdatedVersion><TargetLanguage Validate="false">1033</TargetLanguage><UpdatedLanguages>1033</UpdatedLanguages><UpgradeCode Validate="true">{DB87BB66-FE5D-4293-81AC-EE313D3F864B}</UpgradeCode></TargetProduct><TargetProductCode>{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}</TargetProductCode></MsiPatch>"> |
| 69 | <Provides Key="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" DisplayName="SlipstreamTests - Patch A" /> | 69 | <Provides Key="{0A5113E3-06A5-4CE0-8E83-9EB42F6764A6}" DisplayName="SlipstreamTests - Patch A" /> |
| 70 | <PayloadRef Id="PatchA" /> | 70 | <PayloadRef Id="PatchA" /> |
| 71 | </MspPackage> | 71 | </MspPackage> |
diff --git a/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_modified_manifest.xml b/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_modified_manifest.xml index de73c66f..1d9fcbee 100644 --- a/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_modified_manifest.xml +++ b/src/burn/test/BurnUnitTest/TestData/PlanTest/Slipstream_BundleA_modified_manifest.xml | |||
| @@ -44,14 +44,14 @@ | |||
| 44 | <Payload Id="NetFx48Web" FilePath="redist\ndp48-web.exe" FileSize="1479400" Hash="5A84A8E612E270E27D0061D58DB6B470153BE1F9" DownloadUrl="https://go.microsoft.com/fwlink/?LinkId=2085155" Packaging="external" SourcePath="redist\ndp48-web.exe" /> | 44 | <Payload Id="NetFx48Web" FilePath="redist\ndp48-web.exe" FileSize="1479400" Hash="5A84A8E612E270E27D0061D58DB6B470153BE1F9" DownloadUrl="https://go.microsoft.com/fwlink/?LinkId=2085155" Packaging="external" SourcePath="redist\ndp48-web.exe" /> |
| 45 | <Payload Id="PackageA" FilePath="PackageAv1.msi" FileSize="32768" Hash="2369B16B7219B3C834DFBC5D2AF8B2EF8803D43D" Packaging="external" SourcePath="PackageAv1.msi" /> | 45 | <Payload Id="PackageA" FilePath="PackageAv1.msi" FileSize="32768" Hash="2369B16B7219B3C834DFBC5D2AF8B2EF8803D43D" Packaging="external" SourcePath="PackageAv1.msi" /> |
| 46 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> | 46 | <RollbackBoundary Id="WixDefaultBoundary" Vital="yes" Transaction="no" /> |
| 47 | <Registration Code="{22D1DDBA-284D-40A7-BD14-95EA07906F21}" ExecutableName="BundleA.exe" PerMachine="yes" Tag="" Version="1.0.0.0" ProviderKey="{DC94A8E0-4BF4-4026-B80B-2755DAFC05D3}"> | 47 | <Registration Code="{22D1DDBA-284D-40A7-BD14-95EA07906F21}" ExecutableName="BundleA.exe" Scope="permachine" Tag="" Version="1.0.0.0" ProviderKey="{DC94A8E0-4BF4-4026-B80B-2755DAFC05D3}"> |
| 48 | <Arp Register="yes" DisplayName="~SlipstreamTests - BundleA" DisplayVersion="1.0.0.0" /> | 48 | <Arp Register="yes" DisplayName="~SlipstreamTests - BundleA" DisplayVersion="1.0.0.0" /> |
| 49 | </Registration> | 49 | </Registration> |
| 50 | <Chain> | 50 | <Chain> |
| 51 | <ExePackage Id="NetFx48Web" Cache="keep" CacheId="5A84A8E612E270E27D0061D58DB6B470153BE1F9" InstallSize="1479400" Size="1479400" PerMachine="yes" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" UninstallArguments="" RepairArguments="/q /norestart /repair /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" Repairable="yes" Uninstallable="no" Protocol="netfx4" DetectionType="condition"> | 51 | <ExePackage Id="NetFx48Web" Cache="keep" CacheId="5A84A8E612E270E27D0061D58DB6B470153BE1F9" InstallSize="1479400" Size="1479400" Scope="permachine" Permanent="yes" Vital="yes" RollbackBoundaryForward="WixDefaultBoundary" LogPathVariable="NetFx48WebLog" RollbackLogPathVariable="WixBundleRollbackLog_NetFx48Web" DetectCondition="NETFRAMEWORK45 >= 528040" InstallArguments="/q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" UninstallArguments="" RepairArguments="/q /norestart /repair /ChainingPackage "[WixBundleName]" /log "[NetFx48WebLog].html"" Repairable="yes" Uninstallable="no" Protocol="netfx4" DetectionType="condition"> |
| 52 | <PayloadRef Id="NetFx48Web" /> | 52 | <PayloadRef Id="NetFx48Web" /> |
| 53 | </ExePackage> | 53 | </ExePackage> |
| 54 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}v1.0.0.0" InstallSize="2103" Size="32768" PerMachine="yes" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}" Language="1033" Version="1.0.0.0" UpgradeCode="{DB87BB66-FE5D-4293-81AC-EE313D3F864B}"> | 54 | <MsiPackage Id="PackageA" Cache="keep" CacheId="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}v1.0.0.0" InstallSize="2103" Size="32768" Scope="permachine" Permanent="no" Vital="yes" RollbackBoundaryBackward="WixDefaultBoundary" LogPathVariable="WixBundleLog_PackageA" RollbackLogPathVariable="WixBundleRollbackLog_PackageA" ProductCode="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}" Language="1033" Version="1.0.0.0" UpgradeCode="{DB87BB66-FE5D-4293-81AC-EE313D3F864B}"> |
| 55 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> | 55 | <MsiProperty Id="ARPSYSTEMCOMPONENT" Value="1" /> |
| 56 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> | 56 | <MsiProperty Id="MSIFASTINSTALL" Value="7" /> |
| 57 | <Provides Key="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}" Version="1.0.0.0" DisplayName="~SlipstreamTests - PackageA" /> | 57 | <Provides Key="{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}" Version="1.0.0.0" DisplayName="~SlipstreamTests - PackageA" /> |
diff --git a/src/burn/test/BurnUnitTest/VariableHelpers.cpp b/src/burn/test/BurnUnitTest/VariableHelpers.cpp index 40f958f8..b1106492 100644 --- a/src/burn/test/BurnUnitTest/VariableHelpers.cpp +++ b/src/burn/test/BurnUnitTest/VariableHelpers.cpp | |||
| @@ -7,11 +7,7 @@ using namespace System; | |||
| 7 | using namespace Xunit; | 7 | using namespace Xunit; |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | namespace Microsoft | 10 | namespace WixToolset |
| 11 | { | ||
| 12 | namespace Tools | ||
| 13 | { | ||
| 14 | namespace WindowsInstallerXml | ||
| 15 | { | 11 | { |
| 16 | namespace Test | 12 | namespace Test |
| 17 | { | 13 | { |
| @@ -213,5 +209,3 @@ namespace Bootstrapper | |||
| 213 | } | 209 | } |
| 214 | } | 210 | } |
| 215 | } | 211 | } |
| 216 | } | ||
| 217 | } | ||
diff --git a/src/burn/test/BurnUnitTest/VariableHelpers.h b/src/burn/test/BurnUnitTest/VariableHelpers.h index d460c60f..4783c48c 100644 --- a/src/burn/test/BurnUnitTest/VariableHelpers.h +++ b/src/burn/test/BurnUnitTest/VariableHelpers.h | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -32,5 +28,3 @@ int VariableGetTypeHelper(BURN_VARIABLES* pVariables, LPCWSTR wzVariable); | |||
| 32 | } | 28 | } |
| 33 | } | 29 | } |
| 34 | } | 30 | } |
| 35 | } | ||
| 36 | } | ||
diff --git a/src/burn/test/BurnUnitTest/VariableTest.cpp b/src/burn/test/BurnUnitTest/VariableTest.cpp index 2e2c36c9..7bd6f20a 100644 --- a/src/burn/test/BurnUnitTest/VariableTest.cpp +++ b/src/burn/test/BurnUnitTest/VariableTest.cpp | |||
| @@ -4,11 +4,7 @@ | |||
| 4 | #undef GetTempPath | 4 | #undef GetTempPath |
| 5 | #undef GetEnvironmentVariable | 5 | #undef GetEnvironmentVariable |
| 6 | 6 | ||
| 7 | namespace Microsoft | 7 | namespace WixToolset |
| 8 | { | ||
| 9 | namespace Tools | ||
| 10 | { | ||
| 11 | namespace WindowsInstallerXml | ||
| 12 | { | 8 | { |
| 13 | namespace Test | 9 | namespace Test |
| 14 | { | 10 | { |
| @@ -618,5 +614,3 @@ namespace Bootstrapper | |||
| 618 | } | 614 | } |
| 619 | } | 615 | } |
| 620 | } | 616 | } |
| 621 | } | ||
| 622 | } | ||
diff --git a/src/burn/test/BurnUnitTest/VariantTest.cpp b/src/burn/test/BurnUnitTest/VariantTest.cpp index 035864cf..8dd44a5d 100644 --- a/src/burn/test/BurnUnitTest/VariantTest.cpp +++ b/src/burn/test/BurnUnitTest/VariantTest.cpp | |||
| @@ -2,11 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | #include "precomp.h" | 3 | #include "precomp.h" |
| 4 | 4 | ||
| 5 | namespace Microsoft | 5 | namespace WixToolset |
| 6 | { | ||
| 7 | namespace Tools | ||
| 8 | { | ||
| 9 | namespace WindowsInstallerXml | ||
| 10 | { | 6 | { |
| 11 | namespace Test | 7 | namespace Test |
| 12 | { | 8 | { |
| @@ -215,5 +211,3 @@ namespace Bootstrapper | |||
| 215 | } | 211 | } |
| 216 | } | 212 | } |
| 217 | } | 213 | } |
| 218 | } | ||
| 219 | } | ||
