Skip to content

fix: Escape no longer ends an app update, an install or a component store cleanup part-way - #2949

Merged
laurentiu021 merged 1 commit into
mainfrom
fix/escape-never-ends-an-install-or-cleanup
Oct 22, 2026
Merged

laurentiu021 merged 1 commit into
mainfrom
fix/escape-never-ends-an-install-or-cleanup

Conversation

@laurentiu021

Copy link
Copy Markdown
Owner

Escape runs a tab's Cancel command while the tab is busy, and on these three tabs that command's token reached the
process applying the change, so a bare keypress ended it part-way.

What changed

  • App Updates and Bulk Installer: the running winget gets a token of its own, which only closing SysManager
    cancels, as Uninstaller's has since 1.130.52. Cancel and Escape stop the batch before its next app. While an app
    is updating or installing, the status line says the batch stops after it, and the summary says where it stopped:
    "Stopped after 1 of 3. Updated 1." on App Updates, "Installation cancelled after 1/3. Installed: 1, Failed: 0." on
    Bulk Installer, which said only "Installation cancelled." before.
  • Quick Cleanup: EscapeCancel returns null while /StartComponentCleanup runs, so Escape leaves the cleanup
    alone, and still stops the temporary-file clean-up, the Recycle Bin and /AnalyzeComponentStore. The Cancel button
    still stops the cleanup, as the confirmation before it says. The view's Cancel button is always on screen, so
    EveryCancellableTab_LetsEscapeReachItsOwnCancelCommand still finds IsAnyRunning, CancelCommand and the
    : null it asks for.
  • README (the keyboard paragraph and the three tabs), ARCHITECTURE (the three view models, and the count of tabs
    that override EscapeCancel, which is 25 without System Fixes), CHANGELOG 1.130.56.

Tests

  • App Updates and Bulk Installer: with the first of two apps held, Escape leaves the token winget got alone, the
    status line names the app it waits for, and the second app never starts; closing SysManager still cancels the
    running one.
  • Quick Cleanup: during a held cleanup EscapeCancel is null and the Cancel button still cancels DISM's token;
    during a held analysis Escape cancels it; and after a cleanup has ended, Escape stops the other runs again.

Each test failed against the defect it pins: with winget given the token Cancel cancels, with closing SysManager no
longer cancelling it, with no status line while waiting, with the old summaries, with Escape reaching the cleanup,
with the cleanup never marked, and with the mark left after it.

Closes #2942.

…tore cleanup part-way

- App Updates and Bulk Installer gave the running winget the token Cancel cancels, and Escape runs Cancel, so a
  keypress ended winget and the installer it had started. The running winget now gets a token of its own, which
  only Dispose cancels, as Uninstaller's has since 1.130.52. Cancel and Escape stop the batch before its next app,
  the status line says it waits for the one running, and the batch's summary says where it stopped.
- Quick Cleanup's Escape ran Cancel during /StartComponentCleanup, which leaves Windows to finish the servicing
  transaction on its own. EscapeCancel now returns null while the cleanup runs, and still stops the temporary-file
  clean-up, the Recycle Bin and the analysis. The Cancel button still stops the cleanup, as its confirmation says.
- ARCHITECTURE's count of the tabs that override EscapeCancel is 25, without System Fixes since 1.130.52.
@laurentiu021
laurentiu021 merged commit be4730c into main Oct 22, 2026
6 checks passed
@laurentiu021
laurentiu021 deleted the fix/escape-never-ends-an-install-or-cleanup branch October 22, 2026 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: App Updates, Bulk Installer, Quick Cleanup — Escape ends winget or DISM in the middle of a change

1 participant