Squirrel.Windows
Squirrel.Windows copied to clipboard
Product version not updated after application update
Squirrel 1.5.2 is working. Squirrel 1.7.8 is not working.
Application initial install sets product version properly in registry (or Control Panel -> Uninstall Program), but the version is not updated while updating the application.
So, if you open RegEdit and check the key "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall<appname>\DisplayVersion" before and after application update, you can see that it doesn't change at all.
@janih78 Are you still experiencing this issue with the latest version of Squirrel?
Yes, I still have that problem. Any fix for this?
Updates on this? This is causing issues in Winget, where it reads the outdated version from the product version:
- https://github.com/microsoft/winget-pkgs/issues/15661
I think that WinGet should probably not rely on this registry setting and instead should special-case Squirrel apps. I know that sounds Dum but even if we fixed this today, many many many apps are still gonna use old versions of Squirrel.
The canonical way to determine the latest version for a Squirrel app is:
- Find the root installation directory (i.e.
%LocalAppData%\TheAppName
) - List all directories that start with
app-
- Strip the
app-
prefix, and take the highest-by-Semver v1 number you find
Also, why would WinGet need to manage updates for an auto-updating application? afaik all it needs to do is manage install/uninstall
Also, why would WinGet need to manage updates for an auto-updating application? afaik all it needs to do is manage install/uninstall
Package pinning has just been implemented in Winget, so you can now ignore updates for specific applications. But I don't think Squirrel apps should be special-cased just because of a "bug." Other auto-updating apps work well with Winget; that should be the case with Squirrel too.
but even if we fixed this today, many many many apps are still gonna use old versions of Squirrel.
Idealistically, taking the issue upstream with the publisher would be the best course of action.
Package pinning has just been implemented in Winget, so you can now ignore updates for specific applications
This won't actually work though, because Squirrel will update the app anyways
WinGet has some extra work to do for squirrel installers:
- microsoft/winget-cli/issues/372
- microsoft/winget-cli/issues/418
- microsoft/winget-cli/issues/1748
The comment on pinning is intended to essentially ignore pinned packages in the winget upgrade --all
flow. We're aware applications will upgrade themselves regardless of the pinning status in WinGet.
The version should be updated to match the version installed by Squirrel.
WinGet uses the "displayVersion" in the registry which also drives the version displayed in Windows Apps & Features to do the version comparison to evaluate if a new version is available. It's the only reliable mechanism for us to keep things in sync and not cause user confusion.
We do support marketing versions for products via the "packageVersion" attribute, but we would still require the "displayVersion" in the "appsAndFeatures" key so the upgrade logic functions properly and will allow the publisher to determine what is displayed to the user.
In order not to have a broken experience when using the marketing version, all versions of manifests should have the correct "displayVersion".
@denelon Sure, but again, please note https://github.com/Squirrel/Squirrel.Windows/issues/1187#issuecomment-1423869334 - many many many people use older Squirrel.Windows versions
I completely understand. It's going to take years to clean up the experiences in cases where installers need to be fixed/modified/upgraded.
I'm not sure how we would be able to implement reliable behaviors customized to Squirrel without a reliable way to detect an installer was built with it. Even if we can specify in the manifest that an installer is Squirrel, we need to be able to verify that programmatically so we can safely change the behaviors. That would also likely depend on a new version of Squirrel.
Apps will always "use old versions of Squirrel", it'll only get worse if this is not fixed soon. It displays the incorrect version number in "Installed apps" as well, it's not limited to WinGet.