sparkle-project / Sparkle

A software update framework for macOS
https://sparkle-project.org
Other
7.49k stars 1.05k forks source link

Issue with Auto-update pop-up #1633

Closed pericles-jdh closed 1 year ago

pericles-jdh commented 4 years ago
Screen Shot 2020-07-28 at 12 22 09 PM

Hi All,

As many people have mentioned previously, there is an issue with auto-update pop-up from Sparkle that happens when you clean apps that are integrated with Sparkle. After trying to follow several threads, I was unable to resolve the issue. I am hoping someone can provide more insight into this issue.

kornelski commented 4 years ago

Please don't use any "cleaner" apps. They are often scams and malware.

The ones that aren't total scams, are still clumsy and damage applications. Sparkle has detected that one of your applications has been damaged (the app has been stripped from its original author's code signing identity). Sparkle is complaining, because it has no way of knowing whether it was "cleaned" or infected by a virus, and without code signing identity it can't safely install any updates.

You will have this problem every time you allow apps to "clean" applications in a way that injects foreign code into them or damages their integrity.

mateolan commented 4 years ago

I have a similar message, not usure if it is separate from this and closed Issue 1149--but they seem similar enough, and the messaging from Sparkle seems to be the problem in helping users track down the problem. I am on Mac Catalina 10.15.5 I have not used any 3rd party tools to clean any apps. All of the apps listed under "find /Applications -name Sparkle.framework" appear to be working fine. I checked my processes while the pop-up was visible, and there were no instances of update or updater running. Please advise for a fix, so that I can get a meaningful error message that guides me toward a solution. image

kornelski commented 4 years ago

This alert can be shown only by an application that is currently running. You can use Activity Monitor to see what apps are running.

Stop that app, delete it, and download a fresh copy that isn't damaged.

Maybe this will help finding the app:

https://apple.stackexchange.com/a/311448/9481

or this

https://github.com/sjitech/mac_list_windows_pids

mjgardner commented 4 years ago

Also having the same problem as @mateolan (https://github.com/sparkle-project/Sparkle/issues/1633#issuecomment-673056573). How can I tell which app is sending the error? Accessiblity Inspector (@kornelski's first suggestion) is no help, as it can't target that dialog. And it's nigh-impossible to use that Python script (his second suggestion) as it lists so many applications with various coordinates and I can't tell which is the dialog.

kornelski commented 4 years ago

Sparkle has been showing the name of the broken app in this dialog for a while now:

https://github.com/sparkle-project/Sparkle/blob/989589524b9d855dc8e7687fec07099980a2e388/Sparkle/SUUpdater.m#L160

If the name isn't showing for you, it means the broken app has a much older version of Sparkle, from before the fix.

I realize it's a Catch 22: since the app broke updates, it can't get the fixed version of this dialog. And you can't know which app to manually update or delete, because it hasn't updated itself to the fixed version. I have no solution to this.

mjgardner commented 4 years ago

@kornelski Is there any way to tell which apps have which version of Sparkle.framework installed? This might help narrow things down.

Listing which apps have it here:

➜  ~ find /Applications -name Sparkle.framework -print
/Applications/RescueTime.app/Contents/Frameworks/Sparkle.framework
/Applications/AirBuddy.app/Contents/Frameworks/Sparkle.framework
/Applications/Dash.app/Contents/Frameworks/Sparkle.framework
/Applications/DaisyDisk.app/Contents/Frameworks/Sparkle.framework
/Applications/Docker.app/Contents/Frameworks/Sparkle.framework
/Applications/Last.fm.app/Contents/Frameworks/Sparkle.framework
/Applications/AltServer.app/Contents/Frameworks/Sparkle.framework
/Applications/iTerm.app/Contents/Frameworks/Sparkle.framework
/Applications/Default Folder X.app/Contents/Frameworks/Sparkle.framework
/Applications/Fetch.app/Contents/Frameworks/Sparkle.framework
kornelski commented 4 years ago
#!/bin/bash
set -o pipefail
IFS=$'\n'

printsparkleversion() {
    local APPPATH=$1
    local SPARKLEPLIST="$APPPATH/Contents/Frameworks/Sparkle.framework/Resources/Info.plist"
    if [ -f "$SPARKLEPLIST" ]; then
        local PLIST="$APPPATH/Contents/Info.plist"
        local VER=$(defaults read "$PLIST" CFBundleShortVersionString 2>/dev/null || defaults read "$PLIST" CFBundleVersion 2>/dev/null)
        local APP="$(basename -s .app "$APPPATH") v$VER"
        local SPARKLEVER=$(defaults read "$SPARKLEPLIST" CFBundleVersion 2>/dev/null)
        echo "$APP uses Sparkle v$SPARKLEVER"
    fi
}

for i in $({ mdfind kind:application; find /Applications -maxdepth 2 -name '*.app'; } | sort -u ); do
    printsparkleversion "$i"
done
mjgardner commented 4 years ago
AirBuddy v2.0.1 uses Sparkle v1.24.0
AltServer v1.4.1 uses Sparkle v1.21.3
Bartender 3 v3.1.25 uses Sparkle v1.18.0
DaisyDisk v4.11 uses Sparkle v1.15.0
Dash v5.4.1 uses Sparkle v1.23.0
Default Folder X v5.5.1 uses Sparkle v1.24.0
Docker v2.5.0.1 uses Sparkle v1.23.0
Fetch v5.8.1 uses Sparkle v1.21.3
Last.fm v2.1.39 uses Sparkle v1.14.0
RescueTime v2.16.4.2 uses Sparkle v1.15.1
Sourcetree v4.0.2 uses Sparkle v1.23.0
iTerm v3.3.12 uses Sparkle v1.22.0
XScreenSaverUpdater v5.44.1 uses Sparkle v1.21.2

Looks like Last.fm is the oldest, and it wouldn't surprise me if it's having problems; it's been on life-support for years. Any others look suspect?