Как обновить приложение App Store из командной строки?


18

Я хотел бы принудительно обновить приложения App Store из командной строки.

Как я могу это сделать?


2
Похоже, что нет помощника командной строки, как в общем обновлении программного обеспечения, поэтому вы можете ограничиться запуском скрипта, который будет автоматизировать команды GUI. Отредактируете ли вы вопрос, чтобы уточнить, ожидаете ли вы, что «работающее» решение будет только терминалом или если вам нужен скрипт Automator, который будет вводить ваш пароль при запросе.
bmike

Я ищу что-то без присмотра, но все же, если для этого требуется идентификатор / пароль AppleID, я считаю правильным включить его в сценарий.
сорин

1
Также см. Apple.stackexchange.com/questions/42353/… для решения, которое вызывает стороннее приложение
bmike

Ответы:


6

Apple не предоставляет помощника для командной строки или каких-либо классов какао, которые можно использовать для автоматизации. В отличие от общего обновления программного обеспечения, которое позволяет обновлять и устанавливать прямо из коробки, вы можете запрограммировать процесс нажатия кнопок мышью с помощью Automator.

Тем не менее, магазин приложений был перепроектирован и выпущен с открытым исходным кодом, а также в виде двоичной формы :

Установка быстрая, и она выглядит достаточно надежной в текущей версии OS X 10.11:

brew install argon/mas/mas 

С выпуском исходного кода, я ожидаю, что появятся некоторые другие реализации этого инструмента, возможно, даже одна, написанная на python.

Если кто-то вошел в Mac (оконный менеджер запущен), вы можете использовать Automator и функцию «watch me do» для автоматизации обновлений и довольно небезопасного хранения вашего пароля хранилища в скрипте.

Вот два урока, которые помогут вам начать, если это соответствует вашим потребностям.

http://www.tuaw.com/2009/01/19/mac-automation-creating-watch-me-do-workflows/

http://automator.us/leopard/features/virtual-user.html

Если у вас есть рабочий скрипт, вы можете использовать команду командной строки, openчтобы запустить его.

Если приложение App Store когда-либо предоставляет эту функцию для сценариев, у вас будет больше опций из командной строки. Было бы легко использовать sdef, sdpи gen_bridge_metadataчтобы сбросить все скрипты словаря и скриптовые вещи , используя рубин из командной строки, но в настоящее время лучшего вариантом будет использовать masинструмент командной строки.


1
Вау, это действительно раздражает. Обычные обновления программного обеспечения легко пишутся с помощью программного обеспечения update (8).
Арне

2
Я просто хотел заявить об этом - ясно, что Apple сознательно решила усложнить / не предоставить какой-либо инструмент, хук или помощь для автоматизации установки и обновления App Store. В основной системе все еще есть softwareupdateпроцесс, и он даже подключается к App Store на Mountain Lion - но это только для приложений, не принадлежащих App Store.
bmike

4

App Store просто не подходит для администрирования. Это всего лишь квазипакетный менеджер, он не так полезен и надежен, как настоящие менеджеры пакетов, такие как pkgsrc, порты FreeBSD, aptitude, RPM, macports или даже программное обновление. По моему опыту, коммерческие разработчики непредсказуемы и борются за свои товары. Таким образом, у компетентного администратора есть только один рациональный и ответственный способ работы с App Store:

 sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.store_helper.plist

 sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.storeagent.plist

 sudo mkdir /System/Library/LaunchAgents\ \(disabled\)/

 sudo mv /System/Library/LaunchAgents/com.apple.store* /System/Library/LaunchAgents\ \(disabled\)/

И просто выбросьте это из головы, это больше не будет вас беспокоить. ;-)


Вместо этого используйте ARD, хотя и не менеджер пакетов, он управляет пакетами, установками, обновлениями и обновлениями, он будет делать то, что вы хотите, сэкономит ваше время и не подведет:

Для Apple Remote Desktop 3, для 10.9:

Сначала просмотрите руководство администратора, чтобы убедиться, что это именно тот путь:

curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf

    open ARD3_AdminGuide.pdf

Затем установите:

curl -Ok http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/031-2845.20140313.rerft/RemoteDesktopAdmin372.dmg

hdiutil attach -quiet -noverify -nobrowse -noautoopen RemoteDesktopAdmin372.dmg

sudo installer -pkg /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg -target /

но это может привести к смешной ошибке, если не работает 10.9, или если не установлена ​​предыдущая версия ARD, и если это так, попробуйте:

pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg ARDexpanded/

или с равным эффектом (или / или здесь, не нужно использовать оба pkgutil и xar ... Я просто тщательно):

mkdir ARDexpanded

cd ARDexpanded

xar -xf /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg

И нам больше не нужен прикрепленный образ диска, поэтому извлеките его:

hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/

А теперь, что вы увидите, если вы

cd ARDexpanded/RemoteDesktopAdmin372.pkg/

ls

является

    Bom         PackageInfo Payload     Scripts

Вам нужен файл Payload, представляющий собой архив cpio, сжатый с помощью gzip. Итак, с помощью нескольких команд по конвейеру мы можем попасть в комплект приложений:

cat Payload | gzip -d - | cpio -id

ls

возвращает:

    Applications Bom          Library      PackageInfo  Payload      Scripts

И ты почти закончил.

cp -R Applications/Remote\ Desktop.app /Applications/

Теперь вы установили Apple Remote Desktop Admin 3.7.2

Так что все, что осталось сделать, это купить вашу лицензию:

open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat

Запустите / Applications / Remote \ Desktop.app и выполните сериализацию. И сделать некоторую работу.


Для 10.6 Snow Leopard вам понадобится немного более ранняя версия ARD:

curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf

curl -Ok http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/041-6789.20120917.xD6TR/RemoteDesktopAdmin353.dmg

hdiutil attach -quiet -noverify -nobrowse -noautoopen RemoteDesktopAdmin353.dmg

sudo installer -pkg /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update/RemoteDesktopAdmin353.pkg -target /

и если это отбрасывает на вас это:

    installer: Cannot install on volume / because it is disabled.
    installer: This update could not find Remote Desktop on this volume.

тогда попробуйте:

pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update/RemoteDesktopAdmin353.pkg ARD353

hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update

развернуть до полезной нагрузки:

    cd ARD353/RemoteDesktopAdmin353.pkg/

    ls

возвращает:

    Bom         PackageInfo Payload     Scripts

Итак, бегите:

cat Payload | gzip -d - | cpio -id

ls

возвращает:

Applications Bom          Library      PackageInfo  Payload      Scripts

И вы почти закончили

cp -R Applications/Remote\ Desktop.app /Applications/

приобрести вашу лицензию:

open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat

Запустите / Applications / Remote \ Desktop.app и выполните сериализацию. И сделай что-нибудь.


1
Отличный ответ, я узнал много нового, что я могу сделать в Терминале. +1
shrx

1

Вы можете использовать softwareupdateинструмент.

sudo softwareupdate -l

Перечисляет все доступные обновления.

sudo softwareupdate -ia

Устанавливает все доступные обновления.


Это не работает для приложений Appstore, только для пакетов Apple.
Брайс

попробуйте также: man softwareupdate
Билли Макклоски
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.