[macOS] Stage updates that need elevation instead of applying them in place
Categories
(Toolkit :: Application Update, enhancement)
Tracking
()
People
(Reporter: spohl, Assigned: spohl)
References
Details
When a macOS update needs elevation, Firefox doesn't stage it. gCanStageUpdatesSession in UpdateService.sys.mjs returns false as soon as elevation is required, so the update is applied in place when Firefox restarts. Staged updates succeed more often. Applying in place also writes temporary files into the installed bundle, which breaks its code signature until the update has finished, and leaves it broken if the update is interrupted.
We should stage these updates too. The staged update would be prepared without elevation, as it is for everyone else, and at restart the privileged helper would check the staged result before installing it, then swap it into place without breaking the signature of the installed bundle. An update that was staged while the installation was writable, and that needs elevation by the time it's applied, should keep falling back to applying the MAR directly.
This builds on the privileged helper work in bug 2054404.
Description
•