From 8e8f724d90c6835febb8b5865009746aea73a334 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Tue, 22 Feb 2022 20:23:43 -0600 Subject: Add UnsafeUninstall action. Fixes #6721 --- src/burn/engine/elevation.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/burn/engine/elevation.cpp') diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp index 86b65cf9..d12a151a 100644 --- a/src/burn/engine/elevation.cpp +++ b/src/burn/engine/elevation.cpp @@ -2289,8 +2289,21 @@ static HRESULT OnApplyInitialize( LogId(REPORT_STANDARD, MSG_SYSTEM_RESTORE_POINT_STARTING); - BOOTSTRAPPER_ACTION action = static_cast(dwAction); - SRP_ACTION restoreAction = (BOOTSTRAPPER_ACTION_INSTALL == action) ? SRP_ACTION_INSTALL : (BOOTSTRAPPER_ACTION_UNINSTALL == action) ? SRP_ACTION_UNINSTALL : SRP_ACTION_MODIFY; + SRP_ACTION restoreAction = SRP_ACTION_UNKNOWN; + switch (static_cast(dwAction)) + { + case BOOTSTRAPPER_ACTION_INSTALL: + restoreAction = SRP_ACTION_INSTALL; + break; + case BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL: __fallthrough; + case BOOTSTRAPPER_ACTION_UNINSTALL: + restoreAction = SRP_ACTION_UNINSTALL; + break; + default: + restoreAction = SRP_ACTION_MODIFY; + break; + } + hrStatus = hr = SrpCreateRestorePoint(sczBundleName, restoreAction); if (SUCCEEDED(hr)) { -- cgit v1.2.3-55-g6feb