Cockatrice/cmake
sentry[bot] a83d82b5e8
[Installer] Recover leftover payload files when previous uninstaller leaves them behind (#7676)
* [Installer] Recover leftover payload files when previous uninstaller leaves them behind

* [Installer] Fix leftover recovery on the 64-bit auto-uninstall path

- Record the 64-bit uninstaller exit code after ExecWait returns. It was
  captured before the call (always empty), so WaitForOldPayloadToDisappear
  always aborted before RemoveOldPayloadLeftovers could run.
- Restore the pre-uninstall user-data backup before aborting out of the wait,
  including the guard's cancel and probe-failure prompts, so the only copy
  cannot be stranded in %TEMP% for the next run to wipe.
- Report the leftover removal as done only when every payload executable is
  gone and RetryDllPurge reports no stale DLLs, instead of checking
  cockatrice.exe alone.
- Return directly after a successful recovery instead of reusing the poll
  counter, so the log stops claiming the directory "was already clear" and
  the normal settle delay is kept.

* [Installer] Delete the old uninstaller only after recovery succeeds

RemoveOldPayloadLeftovers cleared the attribute and deleted
$INSTDIR\uninstall.exe on every attempt, before the attempt was known to
work. On failure the installer aborts telling the user to run it again, but
UninstallString then points at a missing uninstaller: ExecWait leaves the
exit code empty, WaitForOldPayloadToDisappear takes the "cancelled or
failed" branch, and RemoveOldPayloadLeftovers is gated on exit code 0, so
no later run can ever get past it - a half-removed old install the previous
revision never produced.

Delete it in rop_done instead, after $OldPayloadRemoved is set.
WriteUninstaller recreates it on success anyway, and nothing in the
success verdict depends on it being gone.

---------

Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com>
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-10-28 09:08:54 +01:00
..
pch [Build] Extend PCH to libraries and grow IWYU-driven header sets (#7456) 2026-10-11 15:07:30 +02:00
CMakeDMGSetup.script [Deprecation] Remove DBConverter from sources. (#6431) 2025-12-20 15:25:13 +01:00
Coverage.cmake [CI] Publish a gcovr line-coverage report from the test run (#7404) 2026-10-11 15:05:28 +02:00
CrashReporting.cmake [CrashReporting] Offer to send the installer log on abort (#7524) 2026-10-19 14:57:04 +02:00
createversionfile.cmake Add cmake format (#4618) 2022-05-08 21:22:43 +02:00
dmgBackground.tif CPack DMG Installer with Background Image (#4787) 2023-04-29 23:13:01 -04:00
FindLibexecinfo.cmake Add cmake format (#4618) 2022-05-08 21:22:43 +02:00
FindQtRuntime.cmake [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
FindVCredistRuntime.cmake CI: Use windows-2022 image with Visual Studio 17 2022 (#4999) 2024-05-13 17:41:50 -04:00
getversion.cmake Use dash instead of underscore 2026-05-08 10:13:40 -04:00
gtest-CMakeLists.txt.in Bump minimum required cmake to 3.10 in gtest (#6851) 2026-05-09 00:05:10 +02:00
headerimage.bmp svg+png updates 2015-04-28 16:06:36 +02:00
Info.plist Define Cockatrice as an editor/handler for .cod files and cockatrice:// protocol on all platforms (#6775) 2026-08-08 19:02:19 +02:00
launch-c.in Travis: enable ccache usage under macOS; halves compilation time (#3052) 2018-01-27 13:43:48 -05:00
launch-cxx.in Travis: enable ccache usage under macOS; halves compilation time (#3052) 2018-01-27 13:43:48 -05:00
leftimage.bmp svg+png updates 2015-04-28 16:06:36 +02:00
NSIS.definitions.nsh.in NSIS: misc fixes [wip] (#3300) 2018-06-25 18:34:58 +02:00
NSIS.template.in [Installer] Recover leftover payload files when previous uninstaller leaves them behind (#7676) 2026-10-28 09:08:54 +01:00
Sanitizers.cmake [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
SendInstallerLog.ps1.in [CrashReporting] Offer to send the installer log on abort (#7524) 2026-10-19 14:57:04 +02:00
SignMacApplications.cmake [Deprecation] Remove DBConverter from sources. (#6431) 2025-12-20 15:25:13 +01:00
SplitDebugSymbols.cmake.in [CrashReporting] Breakpad capture, session detection and symbol upload (#7523) 2026-10-19 14:57:04 +02:00