aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/elevation.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-08-19 13:47:50 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-08-19 17:02:27 -0500
commit1c4dc6b1cd2aa3ecd05fdb22f9889ed87e61cc68 (patch)
tree1018e1fded2b24a7adf98cdd31ff19a071a1edd0 /src/burn/engine/elevation.cpp
parent4a53029a94f706de48c6750481377f808724fe47 (diff)
downloadwix-1c4dc6b1cd2aa3ecd05fdb22f9889ed87e61cc68.tar.gz
wix-1c4dc6b1cd2aa3ecd05fdb22f9889ed87e61cc68.tar.bz2
wix-1c4dc6b1cd2aa3ecd05fdb22f9889ed87e61cc68.zip
Resume automatic updates as part of ApplyUninitialize.
Fixes first half of 6870
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r--src/burn/engine/elevation.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp
index ef9c6e97..e30a05bb 100644
--- a/src/burn/engine/elevation.cpp
+++ b/src/burn/engine/elevation.cpp
@@ -189,7 +189,8 @@ static HRESULT ElevatedProcessDetect(
189 ); 189 );
190static HRESULT OnApplyUninitialize( 190static HRESULT OnApplyUninitialize(
191 __in HANDLE* phLock, 191 __in HANDLE* phLock,
192 __in BOOL* pfApplying 192 __in BOOL* pfApplying,
193 __in BOOL* pfDisabledAutomaticUpdates
193 ); 194 );
194static HRESULT OnSessionBegin( 195static HRESULT OnSessionBegin(
195 __in BURN_CACHE* pCache, 196 __in BURN_CACHE* pCache,
@@ -1543,7 +1544,6 @@ extern "C" HRESULT ElevationChildPumpMessages(
1543 __in BURN_REGISTRATION* pRegistration, 1544 __in BURN_REGISTRATION* pRegistration,
1544 __in BURN_USER_EXPERIENCE* pUserExperience, 1545 __in BURN_USER_EXPERIENCE* pUserExperience,
1545 __out HANDLE* phLock, 1546 __out HANDLE* phLock,
1546 __out BOOL* pfDisabledAutomaticUpdates,
1547 __out DWORD* pdwChildExitCode, 1547 __out DWORD* pdwChildExitCode,
1548 __out BOOL* pfRestart, 1548 __out BOOL* pfRestart,
1549 __out BOOL* pfApplying 1549 __out BOOL* pfApplying
@@ -1554,6 +1554,7 @@ extern "C" HRESULT ElevationChildPumpMessages(
1554 BURN_ELEVATION_CHILD_MESSAGE_CONTEXT context = { }; 1554 BURN_ELEVATION_CHILD_MESSAGE_CONTEXT context = { };
1555 HANDLE hCacheThread = NULL; 1555 HANDLE hCacheThread = NULL;
1556 BURN_PIPE_RESULT result = { }; 1556 BURN_PIPE_RESULT result = { };
1557 BOOL fDisabledAutomaticUpdates = FALSE;
1557 1558
1558 cacheContext.dwLoggingTlsId = dwLoggingTlsId; 1559 cacheContext.dwLoggingTlsId = dwLoggingTlsId;
1559 cacheContext.hPipe = hCachePipe; 1560 cacheContext.hPipe = hCachePipe;
@@ -1568,7 +1569,7 @@ extern "C" HRESULT ElevationChildPumpMessages(
1568 context.dwLoggingTlsId = dwLoggingTlsId; 1569 context.dwLoggingTlsId = dwLoggingTlsId;
1569 context.hPipe = hPipe; 1570 context.hPipe = hPipe;
1570 context.phLock = phLock; 1571 context.phLock = phLock;
1571 context.pfDisabledAutomaticUpdates = pfDisabledAutomaticUpdates; 1572 context.pfDisabledAutomaticUpdates = &fDisabledAutomaticUpdates;
1572 context.pfApplying = pfApplying; 1573 context.pfApplying = pfApplying;
1573 context.pApprovedExes = pApprovedExes; 1574 context.pApprovedExes = pApprovedExes;
1574 context.pCache = pCache; 1575 context.pCache = pCache;
@@ -1595,6 +1596,11 @@ extern "C" HRESULT ElevationChildPumpMessages(
1595LExit: 1596LExit:
1596 ReleaseHandle(hCacheThread); 1597 ReleaseHandle(hCacheThread);
1597 1598
1599 if (fDisabledAutomaticUpdates)
1600 {
1601 ElevationChildResumeAutomaticUpdates();
1602 }
1603
1598 return hr; 1604 return hr;
1599} 1605}
1600 1606
@@ -2128,7 +2134,7 @@ static HRESULT ProcessElevatedChildMessage(
2128 break; 2134 break;
2129 2135
2130 case BURN_ELEVATION_MESSAGE_TYPE_APPLY_UNINITIALIZE: 2136 case BURN_ELEVATION_MESSAGE_TYPE_APPLY_UNINITIALIZE:
2131 hrResult = OnApplyUninitialize(pContext->phLock, pContext->pfApplying); 2137 hrResult = OnApplyUninitialize(pContext->phLock, pContext->pfApplying, pContext->pfDisabledAutomaticUpdates);
2132 break; 2138 break;
2133 2139
2134 case BURN_ELEVATION_MESSAGE_TYPE_SESSION_BEGIN: 2140 case BURN_ELEVATION_MESSAGE_TYPE_SESSION_BEGIN:
@@ -2433,7 +2439,8 @@ LExit:
2433 2439
2434static HRESULT OnApplyUninitialize( 2440static HRESULT OnApplyUninitialize(
2435 __in HANDLE* phLock, 2441 __in HANDLE* phLock,
2436 __in BOOL* pfApplying 2442 __in BOOL* pfApplying,
2443 __in BOOL* pfDisabledAutomaticUpdates
2437 ) 2444 )
2438{ 2445{
2439 Assert(phLock); 2446 Assert(phLock);
@@ -2442,6 +2449,13 @@ static HRESULT OnApplyUninitialize(
2442 2449
2443 *pfApplying = FALSE; 2450 *pfApplying = FALSE;
2444 2451
2452 if (*pfDisabledAutomaticUpdates)
2453 {
2454 *pfDisabledAutomaticUpdates = FALSE;
2455
2456 ElevationChildResumeAutomaticUpdates();
2457 }
2458
2445 if (*phLock) 2459 if (*phLock)
2446 { 2460 {
2447 ::ReleaseMutex(*phLock); 2461 ::ReleaseMutex(*phLock);