microsoft / microsoft/winget-cli
Support special behavior for upgrading Squirrel applications
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 26.4k
- Forks
- 1.8k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 15
Description
Description of the new feature / enhancement
While investigating #1747 I found out that the Squirrel installer has a special way to do upgrades. Namely, it uses a Update.exe file inside the application's install directory (usually User\AppData\Local\$AppName) with some different arguments to execute it (silent upgrade appears to be supported). WinGet should support running this executable with the correct options to upgrade in lieu of running the installer over again, which can in certain cases (again, #1747) cause unexpected behavior.
It's worth noting that Teams is one of the applications that uses the Squirrel installer[^1], so this may be part of the answer to that problem.
[^1]: If you want to know where the madness with the machine wide installer came from, check it out here
Proposed technical implementation details
A new InstallerType (squirrel) that has defaults for silent install arguments (/s) and for upgrading using the Update.exe file instead of the installer. (This will require winget having some way of figuring out the install directory for the app. Squirrel applications seem to be good about setting the InstallLocation key in the ARP Table, and the Update.exe file is in that directory).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing installer-type handling and how the ARP Table InstallLocation is obtained. Use the Squirrel Update.exe behavior and its silent /s argument described here as the requirements; done means Squirrel applications upgrade through Update.exe with the appropriate options instead of rerunning the installer.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100