microsoft / microsoft/winget-cli

Support special behavior for upgrading Squirrel applications

Open
#1,748 5 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue-Feature
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.