Skip to content

Conversation

@rgoldberg
Copy link
Member

@rgoldberg rgoldberg commented Oct 5, 2025

Refactor outdated & upgrade to try to install each installed app, then cancel the installation when appropriate.

Resolve #80
Resolve #331
Resolve #387
Resolve #447
Resolve #458
Resolve #485
Resolve #566
Resolve #668
Resolve #722

… then cancel the installation when appropriate.

Signed-off-by: Ross Goldberg <[email protected]>
@rgoldberg rgoldberg added this to the 3.0.0 milestone Oct 5, 2025
@rgoldberg rgoldberg self-assigned this Oct 5, 2025
@sonarqubecloud
Copy link

sonarqubecloud bot commented Oct 5, 2025

@rgoldberg rgoldberg merged commit f868929 into mas-cli:main Oct 5, 2025
7 checks passed
@rgoldberg rgoldberg deleted the outdated-upgrade branch October 5, 2025 16:11
@StefanLobbenmeier
Copy link

Just to confirm, when appropriate means when running outdated, upgrade will just install everything right?

@rgoldberg
Copy link
Member Author

@StefanLobbenmeier outdated will cancel all "upgrades" that it starts.

upgrade will cancel all "upgrades" that it starts whose downloading version is the same as the already installed version.

upgrade will not cancel any upgrades that it starts whose downloading version is different than the already installed version.

@rgoldberg
Copy link
Member Author

@StefanLobbenmeier Note that there might be delays from Apple's end for an app's rollout amongst different App Store regions, individual users, etc., but mas now will solely use the App Store private frameworks for outdated & upgrade, so the consistency issues between them & the iTunes Search web API won't affect them anymore. It could affect differences between them & info & search, but I figured it's best to close existing issues that should be solved by this PR, and discuss any other consistency or delay issues in new issues.

Also note that, unfortunately, outdated & upgrade are slower if many MAS apps are installed. I will parallelize outdated to speed it up, but parallelizing upgrade would intermingle multiple progress bars & status lines; I might figure that out in the future and therefore be able to parallelize it at that time, but, for now, people will need to suffer reduced upgrade performance. I will also investigate newer Apple private frameworks to replace the existing ones, which should be faster, but they might not be available to code that isn't signed with Apple certificates, in which case mas won't be able to use them.

@rgoldberg rgoldberg linked an issue Jan 6, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment