0

Ever since OS X El Capitan came out, I've been having troubles updating third-party applications (non-App Store) using any provided in-app updating functions. Usually, these will auto-download the update and ask you to restart the application to apply the update. Sometimes this is handled in the application menu bar, and sometimes there will be an in-app pop-up asking you to restart the application.

enter image description here

However, no matter how many times I restart the application, the update will never be applied, so it starts to download the update anew and ask again to restart the application.

Some examples of applications I'm having problems with are: Atom Editor, Slack (Web DL version), and a few others.

I read somewhere that this might be related to SIP protection that was introduced with El Capitan, and that only root users can use that particular flavour of auto-update now. Is this correct?

My main user is not an admin user. Instead I need to invoke my admin user's authorization when admin privileges are required. I don't know if that has anything to do with the issue – the in-app updates never asks for admin privileges.

With that in mind, I'd like to avoid disabling SIP protection if possible.

Edit: system.log example

Unfortunately, I was quicker than the first comment below, and against that advice I installed cask. So now the problematic applications like Atom and Slack, are currently at their latest version. However, I appear to have a similar problem with a new app called RealTime Board. Where Atom and Slack auto-updates via the file menu and then asks for a restart, RealTime Board downloads the update and asks for a restart via a pop-up. So I suspect it works much in the same way as those other applications I've been having problems with. Again, the app update refuses to apply upon restart, and will continuously ask me to update & restart via a pop-up on app launch. I will have to wait and see how Atom and Slack behaves once new versions are available. Here is the attempted update of RealTime Board from system.log:

May 17 22:56:49 myuser ShipIt[2803]: Beginning installation
May 17 22:56:49 myuser ShipIt[2803]: Couldn't abort install and restore owned bundle to previous location file:///Applications/RealtimeBoard.app, error NSError { domain: NSPOSIXErrorDomain, code: 2, description: "No such file or directory" }
May 17 22:56:52 myuser ShipIt[2803]: Installation error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo={NSLocalizedDescription=Permission denied}
May 17 22:56:52 myuser com.apple.xpc.launchd[1] (com.electron.realtimeboard.ShipIt[2803]): Service exited with abnormal code: 1
May 17 22:56:52 myuser ShipIt[2848]: Resuming installation attempt 2
May 17 22:56:52 myuser ShipIt[2848]: Couldn't abort install and restore owned bundle to previous location file:///Applications/RealtimeBoard.app, error NSError { domain: NSPOSIXErrorDomain, code: 2, description: "No such file or directory" }
May 17 22:56:54 myuser ShipIt[2848]: Installation error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo={NSLocalizedDescription=Permission denied}
May 17 22:56:54 myuser com.apple.xpc.launchd[1] (com.electron.realtimeboard.ShipIt[2848]): Service exited with abnormal code: 1
May 17 22:56:54 myuser ShipIt[2857]: Resuming installation attempt 3
May 17 22:56:54 myuser ShipIt[2857]: Couldn't abort install and restore owned bundle to previous location file:///Applications/RealtimeBoard.app, error NSError { domain: NSPOSIXErrorDomain, code: 2, description: "No such file or directory" }
May 17 22:56:56 myuser com.apple.usbmuxd[114]: notice    USBMuxBonjourDeviceListenerCreate: LOCKDOWN_V2_BONJOUR_SERVICE_NAME is _apple-mobdev2._tcp,8d1f07bd
May 17 22:56:57 myuser ShipIt[2857]: Installation error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo={NSLocalizedDescription=Permission denied}
May 17 22:56:57 myuser syslogd[60]: ASL Sender Statistics
May 17 22:56:57 myuser com.apple.xpc.launchd[1] (com.electron.realtimeboard.ShipIt[2857]): Service exited with abnormal code: 1
May 17 22:56:57 myuser ShipIt[2877]: Too many attempts to install, aborting update
May 17 22:56:57 myuser ShipIt[2877]: Error aborting installation: Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo={NSLocalizedDescription=No such file or directory}
May 17 22:56:57 myuser ShipIt[2877]: Application launched at file:///Applications/RealtimeBoard.app

I suspect the problem may have to do with ShipIt, which I think is the same system Atom uses for updates.

There is a thread here suggesting (disputedly) that the problem may have to do with the admin user not being the "owner" of the app. Listing chown on the application reveals this:

drwxr-xr-x@   3 myuser  admin     102 Mar 22 13:34 RealtimeBoard.app

I'm assuming this means that I am the application owner.


Using cask?

NB: I read something about Homebrew-Cask as an alternative to not having to do all of the manual work of updating non-App Store applications. I've never heard about cask before, but I use Homebrew. Could it be an advisable solution?

  • 1
    I doubt this has anything to do with SIP. And I'd recommend against trying Cask to install Atom or anything else right now. I'd recommend fixing this problem first. Open Console.app from the Utilities folder, select "system.log" in the list on the left-hand side and enter "atom" into the search box in the top-right corner. If you've tried to update Atom recently there should be a handful of entries there. Please add them to your question. – Alistair McMillan May 17 '17 at 20:42
  • @AlistairMcMillan Thanks – Unfortunately I beat you to it, and already installed cask with the latest versions of some applications. I added an example from system.log for the application RealTime Board which I think is experiencing the same issue. It appears to have something to do with ShipIt. – Winterflags May 17 '17 at 21:17
  • 2
    I think this is just failing because you are using a non-admin account. That account won't be able to write to the /Applications folder so the updater should be prompting for elevation but it doesn't seem to. There are numerous posts online with people saying the same thing. github.com/atom/atom/issues/2860 discuss.atom.io/t/self-updates-with-non-admin-os-x-account/3155/… – Alistair McMillan May 17 '17 at 21:28
1

You need admin permissions to write to /Applications – that's why the update is failing. Try running the app through Terminal:

sudo path/to/app/Contents/MacOS/appname.

Or just use an administrator account.

  • 1
    You're probably right about needing to be an admin user. Unfortunately running the app through sudo didn't change anything. I think the problem is that when the application restarts by itself, after requesting to apply update, it no longer starts in an "sudo/admin" instance. The strange thing is that the updates never seem to install in-between the restart, even though I can see in logs that it has been downloaded. – Winterflags May 18 '17 at 8:19
  • @Winterflags I think that a better and faster way to do this would be to download a new version from the website and replace it manually. The user data won't be deleted because it's stored in ~/Library/Application Support/. – wateroverflow9102 May 18 '17 at 9:03
  • 1
    @Winterflags Also, cask is a very useful tool. You can install it using brew tap caskroom/cask, and then you can use brew cask install <appname> to install and after installing an app that way you can use brew update + brew upgrade to update all apps installed with cask that need to be updated. If you want to register an app as if it would have been installed with cask, try brew cask reinstall <appname>. This will reinstall that app (only the binary) but this time it will be update-able using homebrew/cask. – wateroverflow9102 May 18 '17 at 9:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .