Sparkle deleting/replacing the wrong executable when it unpacks #133

danwood opened this Issue Jan 16, 2012 · 3 comments


None yet

3 participants

danwood commented Jan 16, 2012

We have Sparkle's HEAD from 11/11 (f20c12) compiled into Sandvox 2.2.4, which you can download from ....

Check out these steps. Very disturbing. Not quite sure how to diagnose. I don't see any checkins that I think would have fixed this...

  1. Download a copy of Sandvox 2.2.4 and place it in a folder with write permissions
  2. Make a copy of it named "Sandvox beta" -- now there are two applications in the folder.
  3. Launch "Sandvox Beta"
  4. Go to the preferences menu to check for beta versions, check for updates, and install the beta.

Result: the Sandvox Beta is deleted, and Sandvox is replaced with the new download.

What should happen is that is left alone, and Sandvox Beta is replaced/relaunched.



Alarming! I can indeed reproduce this issue.


Interesting. This is the consequence of a feature Uli added in his branch: check out NORMALIZE_INSTALLED_APP_NAME in SUConstants.h. Because users will sometimes rename their apps explicitly with a version number (i.e. "Sandvox"), this feature will cause updates to be installed instead to "," deleting the old version you were running. It'll end up installing to

I agree that some folks (especially writing IT-y apps) would want this behavior, but I don't think it should be on by default.

And, even once it is on, it should fall back to the normal behavior if already exists.

Hugner commented Jul 30, 2012

If I use the Sparkle version: (i.e the code signing branch) and set NORMALIZE_INSTALLED_APP_NAME to 1 and compile on 10.7, the feature does not work as it should: If I rename the app (e.g appending a version number), then run it and let it download, install and relaunch a new version, it will not relaunch. Consol says:
mdimport[4266:707] could not find path 'path-to-the-app-I-was-running'. Usage: -o path Write the imported attributes to a file, instead of sending them to the server.
and additionally:
finish_installation[4264:707] LSOpenFromURLSpec() returned -43 for application (null) path <path-to-the-app-I-was-running'>.

@andymatuschak andymatuschak added a commit that referenced this issue Aug 16, 2012
@andymatuschak andymatuschak Fixes #133: Sparkle deleting/replacing the wrong executable when it u…

-[SUHost installationPath] can return different values before and after
the installation is performed, because it may attempt to normalize the
installation path--but only if the normalized version of the path isn't
already present. Which it would be after the installation had completed.

Now we only compute the installation path once for the whole installation
@lksoft lksoft added a commit to lksoft/Sparkle that referenced this issue Jul 3, 2013
@lksoft lksoft Merge remote-tracking branch 'matuschak/master'
* matuschak/master: (46 commits)
  Fixing issue with update as non admin user where the quarantine flag did not get correctly removed from new application
  Release notes referenced by URL in updates item description field can be delivered via https://
  Fix stuffing unsigned int into int variable, causing build warning
  Update Project file/Scheme to recommended Xcode settings
  Fix "corrupted" turkish strings file
  update .gitignore
  Fixed warnings in xibs, switched to lldb and fixed occasional copy phase error from incorrect text encoding
  Add explicit method return types in header to supress warnings when including framework in projects with more exacting warnings such as -Wextra.
  Fall back on DSA-only installation checks for .pkg installations
  Fixes #222: Long version ids (12 digits based on reverse date) cause update to work no longer
  Fixed unit tests for 10.8
  Fixes #221: char *oldDestinationString
  Updates to Turkish localization courtesy Emir Sarı
  Update remaining english straight single ' quotes to curly ’ quotes
  Update strings files to standardize ellipsis character (…) instead of three dots (…) Also change don't to curly quote don’t in dialog.
  Adding Arabic localization, courtesy Muhammad Azmi Al-Hashemi
  Disable row selection in the system profile table by implementing the table delegate and turning off "Avoid Empty Selection", "Preserve Selection" and "Select Inserted Objects" on the array controller in the nib.
  Fixes #198: Problem with 10.5
  Fixes #133: Sparkle deleting/replacing the wrong executable when it unpacks
  Adding Thai localizations to the project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment