Обновление приложений MacOS в приложении не работает (ShipIt)

0

С момента выхода OS X El Capitan у меня возникали проблемы с обновлением сторонних приложений (не в App Store) с использованием каких-либо функций обновления, встроенных в приложение. Обычно они автоматически загружают обновление и предлагают перезапустить приложение, чтобы применить обновление. Иногда это обрабатывается в строке меню приложения, а иногда в приложении появляется всплывающее окно с просьбой перезапустить приложение.

enter image description here

Однако, независимо от того, сколько раз я перезапускаю приложение, обновление никогда не будет применено, поэтому оно начинает загружать обновление заново и снова просит перезапустить приложение.

Вот некоторые примеры приложений, с которыми у меня проблемы: Редактор Atom , слабина (Web DL версия) и несколько других.

Я где-то читал, что это может быть быть связанным с защитой SIP, которая была введена с El Capitan, и что только пользователи root могут использовать этот конкретный вариант автообновления сейчас. Это правильно?

Мой основной пользователь не является администратором. Вместо этого мне нужно вызвать авторизацию пользователя с правами администратора, когда требуются права администратора. Я не знаю, имеет ли это какое-либо отношение к проблеме - обновления в приложении никогда не запрашивают привилегии администратора.

Имея это в виду, я бы хотел по возможности избежать отключения защиты SIP.

Изменить: пример system.log

К сожалению, я был быстрее, чем первый комментарий ниже, и против этого совета я установил cask, Так что теперь проблемные приложения, такие как Atom и Slack, в настоящее время находятся в их последней версии. Однако, похоже, у меня похожая проблема с новым приложением под названием RealTime Board. Когда Atom и Slack автоматически обновляются через меню файлов и затем запрашивают перезапуск, RealTime Board загружает обновление и запрашивает перезапуск через всплывающее окно. Поэтому я подозреваю, что он работает так же, как и другие приложения, с которыми у меня были проблемы. Опять же, обновление приложения отказывается применяться после перезапуска и будет постоянно просить меня обновить & amp; перезапустите через всплывающее окно при запуске приложения. Мне придется подождать и посмотреть, как ведут себя Atom и Slack, когда появятся новые версии. Вот попытка обновления платы RealTime от 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

Я подозреваю, что проблема может быть связана с Отправим его Я думаю, это та же система, которую использует Atom для обновлений.

Eсть нить здесь предполагая (disputedly), что проблема может быть связана с пользователем администратора не является «владельцем» приложения. список chown В заявлении раскрывается это:

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

Я предполагаю, что это означает, что я владелец приложения.


Используя бочку?

NB: Я читал кое-что о Homebrew-Бочка в качестве альтернативы тому, что вам не нужно выполнять всю ручную работу по обновлению приложений, не принадлежащих App Store. Я никогда не слышал о cask раньше, но я использую Homebrew. Может ли это быть рекомендуемым решением?

Winterflags
источник
1
Я сомневаюсь, что это как-то связано с SIP. И я бы рекомендовал не пытаться Cask установить Atom или что-то еще прямо сейчас. Я бы порекомендовал исправить эту проблему в первую очередь. Откройте Console.app из папки Utilities, выберите «system.log» в списке слева и введите «atom» в поле поиска в верхнем правом углу. Если вы недавно пытались обновить Atom, там должно быть несколько записей. Пожалуйста, добавьте их в свой вопрос.
Alistair McMillan
@AlistairMcMillan Спасибо - К сожалению, я победил вас, и уже установлен cask с последними версиями некоторых приложений. Я добавил пример из system.log для приложения RealTime Board, который, как мне кажется, испытывает ту же проблему. Похоже, что-то связано с ShipIt,
Winterflags
2
Я думаю, что это просто сбой, потому что вы используете учетную запись без прав администратора. Эта учетная запись не сможет записывать в папку / Applications, поэтому программа обновления должна запрашивать повышение прав, но, похоже, это не так. Есть много сообщений в Интернете с людьми, которые говорят то же самое. github.com/atom/atom/issues/2860 discuss.atom.io/t/self-updates-with-non-admin-os-x-account/3155/...
Alistair McMillan

Ответы:

1

Вам нужно разрешение администратора, чтобы написать /Applications - Вот почему обновление не удается. Попробуйте запустить приложение через терминал:

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

Или просто используйте учетную запись администратора.

wateroverflow9102
источник
1
Вы, вероятно, правы о необходимости быть администратором. К сожалению, запуск приложения через sudo ничего не изменилось Я думаю, проблема в том, что когда приложение перезапускается само по себе, после запроса на обновление, оно больше не запускается в экземпляре "sudo / admin". Странно то, что обновления никогда не устанавливаются между перезапусками, хотя я вижу в журналах, что они были загружены.
Winterflags
@Winterflags Я думаю, что лучший и быстрый способ сделать это - загрузить новую версию с веб-сайта и заменить ее вручную. Пользовательские данные не будут удалены, поскольку они хранятся в ~ / Library / Application Support /.
wateroverflow9102
1
@Winterflags Также, cask это очень полезный инструмент. Вы можете установить его используя brew tap caskroom/cask, а затем вы можете использовать brew cask install <appname> установить и после установки приложения таким образом, вы можете использовать brew update + brew upgrade обновить все приложения, установленные с бочкой, которые должны быть обновлены. Если вы хотите зарегистрировать приложение, как если бы оно было установлено с помощью cask, попробуйте brew cask reinstall <appname>, Это переустановит это приложение (только двоичное), но на этот раз оно будет доступно для обновления с помощью homebrew / cask.
wateroverflow9102