mirror of
https://github.com/storytold/craft-launcher.git
synced 2026-11-09 11:52:29 +00:00
* feat(install): one permission prompt for an Update all of all-users apps Updates of apps installed for all users wait until each has downloaded and checked its package, then run in one elevated PowerShell session: one UAC prompt for the batch. A batch of one keeps the direct msiexec route. If PowerShell cannot start, each package runs with its own prompt. * fix(review): keep each checked package unchangeable until its batch runs; fall back when the batch is too long The batch's permission prompt names PowerShell, not the package's publisher, so a package swapped in the download folder between its check and the elevated msiexec would go unnoticed (CWE-367). Each all-users package is now opened sharing only reading, checked again through that handle against the checksum it was downloaded against, and held until its call ends. A batch whose script is too long for one command line now updates each app with its own prompt instead of failing every job. * fix(review): a shared-run failure says "in one go", not "together" The fallback runs each package by itself but still gives the run one result, so "handling 3 apps together" was wrong there. The marker the backend uses to check what landed is unchanged in role; only its wording. * fix(review): a failed launch of the elevated session falls back instead of cancelling The outer script read every Start-Process failure as a declined prompt, so a session that could not start cancelled the whole batch. A declined prompt carries the Windows error 1223 in its exception chain; only that is a cancel. Anything else exits with a code no msiexec run returns, and the launcher then updates each app with its own prompt.