aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/elevation.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-01-31 15:44:00 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-02-01 23:36:23 -0600
commit56c980318e7167be591f7807c2fc34cea7d5cb42 (patch)
treee074b3548d8dfe51f420b6d0278a6fe17191b6ec /src/burn/engine/elevation.cpp
parentbfe5ab76b5ecc1a21078534e6fba90d12cfd3c00 (diff)
downloadwix-56c980318e7167be591f7807c2fc34cea7d5cb42.tar.gz
wix-56c980318e7167be591f7807c2fc34cea7d5cb42.tar.bz2
wix-56c980318e7167be591f7807c2fc34cea7d5cb42.zip
The bundle provider's presence needs to follow ARP registration.
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r--src/burn/engine/elevation.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp
index 9ebba7c5..eafc08ee 100644
--- a/src/burn/engine/elevation.cpp
+++ b/src/burn/engine/elevation.cpp
@@ -525,7 +525,7 @@ extern "C" HRESULT ElevationSessionBegin(
525 __in BOOL fDisableResume, 525 __in BOOL fDisableResume,
526 __in BURN_VARIABLES* pVariables, 526 __in BURN_VARIABLES* pVariables,
527 __in DWORD dwRegistrationOperations, 527 __in DWORD dwRegistrationOperations,
528 __in BURN_DEPENDENCY_REGISTRATION_ACTION dependencyRegistrationAction, 528 __in BOOL fDetectedForeignProviderKeyBundleId,
529 __in DWORD64 qwEstimatedSize, 529 __in DWORD64 qwEstimatedSize,
530 __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType 530 __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType
531 ) 531 )
@@ -548,7 +548,7 @@ extern "C" HRESULT ElevationSessionBegin(
548 hr = BuffWriteNumber(&pbData, &cbData, dwRegistrationOperations); 548 hr = BuffWriteNumber(&pbData, &cbData, dwRegistrationOperations);
549 ExitOnFailure(hr, "Failed to write registration operations to message buffer."); 549 ExitOnFailure(hr, "Failed to write registration operations to message buffer.");
550 550
551 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)dependencyRegistrationAction); 551 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)fDetectedForeignProviderKeyBundleId);
552 ExitOnFailure(hr, "Failed to write dependency registration action to message buffer."); 552 ExitOnFailure(hr, "Failed to write dependency registration action to message buffer.");
553 553
554 hr = BuffWriteNumber64(&pbData, &cbData, qwEstimatedSize); 554 hr = BuffWriteNumber64(&pbData, &cbData, qwEstimatedSize);
@@ -622,7 +622,7 @@ extern "C" HRESULT ElevationSessionEnd(
622 __in HANDLE hPipe, 622 __in HANDLE hPipe,
623 __in BURN_RESUME_MODE resumeMode, 623 __in BURN_RESUME_MODE resumeMode,
624 __in BOOTSTRAPPER_APPLY_RESTART restart, 624 __in BOOTSTRAPPER_APPLY_RESTART restart,
625 __in BURN_DEPENDENCY_REGISTRATION_ACTION dependencyRegistrationAction, 625 __in BOOL fDetectedForeignProviderKeyBundleId,
626 __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType 626 __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType
627 ) 627 )
628{ 628{
@@ -638,7 +638,7 @@ extern "C" HRESULT ElevationSessionEnd(
638 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)restart); 638 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)restart);
639 ExitOnFailure(hr, "Failed to write restart enum to message buffer."); 639 ExitOnFailure(hr, "Failed to write restart enum to message buffer.");
640 640
641 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)dependencyRegistrationAction); 641 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)fDetectedForeignProviderKeyBundleId);
642 ExitOnFailure(hr, "Failed to write dependency registration action to message buffer."); 642 ExitOnFailure(hr, "Failed to write dependency registration action to message buffer.");
643 643
644 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)registrationType); 644 hr = BuffWriteNumber(&pbData, &cbData, (DWORD)registrationType);
@@ -2359,7 +2359,6 @@ static HRESULT OnSessionBegin(
2359 SIZE_T iData = 0; 2359 SIZE_T iData = 0;
2360 LPWSTR sczEngineWorkingPath = NULL; 2360 LPWSTR sczEngineWorkingPath = NULL;
2361 DWORD dwRegistrationOperations = 0; 2361 DWORD dwRegistrationOperations = 0;
2362 DWORD dwDependencyRegistrationAction = 0;
2363 DWORD64 qwEstimatedSize = 0; 2362 DWORD64 qwEstimatedSize = 0;
2364 DWORD dwRegistrationType = 0; 2363 DWORD dwRegistrationType = 0;
2365 2364
@@ -2376,7 +2375,7 @@ static HRESULT OnSessionBegin(
2376 hr = BuffReadNumber(pbData, cbData, &iData, &dwRegistrationOperations); 2375 hr = BuffReadNumber(pbData, cbData, &iData, &dwRegistrationOperations);
2377 ExitOnFailure(hr, "Failed to read registration operations."); 2376 ExitOnFailure(hr, "Failed to read registration operations.");
2378 2377
2379 hr = BuffReadNumber(pbData, cbData, &iData, &dwDependencyRegistrationAction); 2378 hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&pRegistration->fDetectedForeignProviderKeyBundleId);
2380 ExitOnFailure(hr, "Failed to read dependency registration action."); 2379 ExitOnFailure(hr, "Failed to read dependency registration action.");
2381 2380
2382 hr = BuffReadNumber64(pbData, cbData, &iData, &qwEstimatedSize); 2381 hr = BuffReadNumber64(pbData, cbData, &iData, &qwEstimatedSize);
@@ -2389,7 +2388,7 @@ static HRESULT OnSessionBegin(
2389 ExitOnFailure(hr, "Failed to read variables."); 2388 ExitOnFailure(hr, "Failed to read variables.");
2390 2389
2391 // Begin session in per-machine process. 2390 // Begin session in per-machine process.
2392 hr = RegistrationSessionBegin(sczEngineWorkingPath, pRegistration, pCache, pVariables, dwRegistrationOperations, (BURN_DEPENDENCY_REGISTRATION_ACTION)dwDependencyRegistrationAction, qwEstimatedSize, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); 2391 hr = RegistrationSessionBegin(sczEngineWorkingPath, pRegistration, pCache, pVariables, dwRegistrationOperations, qwEstimatedSize, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType);
2393 ExitOnFailure(hr, "Failed to begin registration session."); 2392 ExitOnFailure(hr, "Failed to begin registration session.");
2394 2393
2395LExit: 2394LExit:
@@ -2443,7 +2442,6 @@ static HRESULT OnSessionEnd(
2443 SIZE_T iData = 0; 2442 SIZE_T iData = 0;
2444 DWORD dwResumeMode = 0; 2443 DWORD dwResumeMode = 0;
2445 DWORD dwRestart = 0; 2444 DWORD dwRestart = 0;
2446 DWORD dwDependencyRegistrationAction = 0;
2447 DWORD dwRegistrationType = 0; 2445 DWORD dwRegistrationType = 0;
2448 2446
2449 // Deserialize message data. 2447 // Deserialize message data.
@@ -2453,14 +2451,14 @@ static HRESULT OnSessionEnd(
2453 hr = BuffReadNumber(pbData, cbData, &iData, &dwRestart); 2451 hr = BuffReadNumber(pbData, cbData, &iData, &dwRestart);
2454 ExitOnFailure(hr, "Failed to read restart enum."); 2452 ExitOnFailure(hr, "Failed to read restart enum.");
2455 2453
2456 hr = BuffReadNumber(pbData, cbData, &iData, &dwDependencyRegistrationAction); 2454 hr = BuffReadNumber(pbData, cbData, &iData, (DWORD*)&pRegistration->fDetectedForeignProviderKeyBundleId);
2457 ExitOnFailure(hr, "Failed to read dependency registration action."); 2455 ExitOnFailure(hr, "Failed to read dependency registration action.");
2458 2456
2459 hr = BuffReadNumber(pbData, cbData, &iData, &dwRegistrationType); 2457 hr = BuffReadNumber(pbData, cbData, &iData, &dwRegistrationType);
2460 ExitOnFailure(hr, "Failed to read dependency registration action."); 2458 ExitOnFailure(hr, "Failed to read dependency registration action.");
2461 2459
2462 // suspend session in per-machine process 2460 // suspend session in per-machine process
2463 hr = RegistrationSessionEnd(pRegistration, pCache, pVariables, pPackages, (BURN_RESUME_MODE)dwResumeMode, (BOOTSTRAPPER_APPLY_RESTART)dwRestart, (BURN_DEPENDENCY_REGISTRATION_ACTION)dwDependencyRegistrationAction, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType); 2461 hr = RegistrationSessionEnd(pRegistration, pCache, pVariables, pPackages, (BURN_RESUME_MODE)dwResumeMode, (BOOTSTRAPPER_APPLY_RESTART)dwRestart, (BOOTSTRAPPER_REGISTRATION_TYPE)dwRegistrationType);
2464 ExitOnFailure(hr, "Failed to suspend registration session."); 2462 ExitOnFailure(hr, "Failed to suspend registration session.");
2465 2463
2466LExit: 2464LExit: