Можно ли автоматически устанавливать и обновлять Mac App Store?

28

Как я могу написать скрипт установки или обновления приложений из Mac App Store? Я бы предпочел инструменты командной строки, но AppleScript или какой-то другой API-интерфейс будет достаточно.

Соответствующие кусочки головоломки:

  • installer: особенно обратите внимание на -storeфлаг, который используется для имитации установки App Store для разработчиков пакетов.
  • systemupdate: способен обрабатывать обновления приложений Apple, помечает -iустановки и -aуказывает установить все доступные обновления
Джозеф Холстен
источник
Ваши приложения куплены с одним Apple ID или вы отслеживаете отдельный Apple ID для каждого компьютера.
bmike
@bmike: Мне было бы удобно использовать общий Apple ID или уникальный для каждой машины
Джозеф Холстен,
Предполагая, что MacWorld прав, что Mountain Lion не поддерживает службу обновления программного обеспечения, и все это происходит через Mac App Store, управление этим будет проблемой для рабочих групп и предприятий. Интересно, расширится ли Apple Configurator для управления учетными записями, а удаленный рабочий стол сможет запускать обновления, не мешая пользователям, пока обновления не будут применены к перезагрузке.
bmike

Ответы:

13

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

Один известный инструмент с открытым исходным кодом для репликации Mac App Store из командной строки - это mas :

Установить:

brew install mas 

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

mas upgrade

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

Решение Apple для исправлений и обновлений безопасности, не связанных с App Store, состоит в том, чтобы запустить softwareupdateинструмент из командной строки, чтобы обновить все программное обеспечение, которое Apple намеревается установить без вмешательства пользователя или через пользовательский интерфейс App Store.

В настоящее время на Lion и Mountain Lion - это означает, что Mac подключится к локальному серверу OS X, который кэширует загрузки для обновлений системы и программного обеспечения, установленного за пределами магазина приложений. Если у вас нет локального сервера обновления программного обеспечения, он, конечно, будет загружать файлы напрямую из Apple.

Для Mountain Lion 10.8.2 и ниже - все по-прежнему идет через App Store - поэтому программное обеспечение Apple, такое как обновления OS X, полностью поддерживает сценарии с помощью этого инструмента только для обновлений и обновлений не из App Store.

Что не может быть написано в сценарии (пока или возможно) - это приложения, которые устанавливаются из App Store, такие как Xcode и Pages и сторонние приложения. Это означает, что у вас не может быть только одного инструмента для обновления всего программного обеспечения, не открывая приложение App Store и не вводя пароль на экране интерфейса пользователя.

Что вы можете сделать, это загрузить приложения один раз, а затем скопировать приложение на несколько компьютеров Mac, если Apple ID, использованный для загрузки первой копии приложения, также используется на всех компьютерах Mac, на которых будет запущено приложение.

Я знаю несколько учреждений, которые покупают по одной копии каждого приложения для лаборатории из 20 компьютеров, чтобы получить лицензию на каждое рабочее место, но затем развернуть один файл на всех компьютерах Mac, чтобы после завершения загрузки одного обновления использовать такой инструмент, как Apple Remote Desktop или Caspar или самодельный инструмент, подобный scpили rsyncиспользуемый для перемещения обновленной версии приложения на все компьютеры Mac в лаборатории.

Если вы выберете маршрут для каждого идентификатора Apple ID для каждого компьютера, вы не сможете написать сценарий установки обновлений приложения, поскольку каждый будет запрашивать пароль для каждой учетной записи, если вы не знакомы со всеми паролями и не выполняете сценарии пользовательского интерфейса, где AppleScript может это сделать. введите правильное имя пользователя и пароль программно, а затем нажмите кнопку, чтобы начать процесс загрузки обновлений каждого компьютера. То, как приложения магазина приложений имеют кодовую подпись, затрудняет просто вставить обновление без аннулирования пакета или какой-либо обратной разработки / джейлбрейка всего процесса магазина приложений и обходя нормальный поток, позволяющий установщику приложения выполнять свою работу.

bmike
источник
6

Это возможно с помощью masутилиты командной строки с открытым исходным кодом :

MAS-кли

Простой интерфейс командной строки для Mac App Store. Предназначен для написания сценариев и автоматизации.

Раскрытие: я создатель mas

аргон
источник
Большое спасибо за этот инструмент и размещение его здесь. Прошло много времени, и я надеюсь, что Apple сохранит стабильность API / SDK, чтобы инструмент продолжал работать в течение долгого времени.
bmike
3

Возможно, вы захотите проверить ростки и солиста . Вы можете установить пакеты OSX из URI, используя dmg_packageпоставщика. Проверьте некоторые из рецептов в ростке для некоторых примеров.

Для автоматического обновления обновлений безопасности используйте рецепт pivotal_workstation :: osx_updates . ( Обратите внимание, что это используетsoftwareupdate )

Для приложений Homebrew у brewпровайдера есть upgradeдействие.

Насколько я знаю, нет поставщика для автоматического обновления приложений App Store. Тем не менее, вы можете использовать встроенную функцию автоматического обновления некоторых приложений в блоке executeили bashпоставщике. Вы также можете использовать AppleScript в рецепте шеф-повара для автоматизации приложения App Store. Для некоторых примеров использования встроенного AppleScript взгляните на рецепт sprout-osx-settings :: function_keys . (Некоторые другие примеры: sprout-osx-settings :: remove_expose_keyboard_shortcuts , sprout-osx-settings :: set_finder_show_user_home_in_sidebar )

TrinitronX
источник
1

Я не уверен насчет решения типа AppleScript, но есть инструменты для управления большим количеством систем OS X.

Тот, с кем я больше всего знаком, - это Radmind (который начал в UMich для управления их лабораториями (старый сайт) ).

Radmind действительно ориентирован на развертывание стандартного шаблона ОС на кучу машин и поддержание его в актуальном состоянии, поэтому для небольшого сайта это может быть слишком много работы. Основной рабочий процесс:

  • Сделайте чистую «сборочную машину» и установите radmind и все ваше стандартное программное обеспечение.
  • Создайте расшифровку стенограмм для этой машины.
  • Установите Radmind на своих клиентских компьютерах и установите / примените стенограммы для их установки.
  • Для обновлений обновите сервер сборки и сделайте расшифровку / исправление расшифровки, затем примените это к клиентам.

… Таким образом, в самом строгом смысле это не автоматизирует установку, но вам нужно сделать интерактивный бит только один раз, а затем распространить обновленную ОС своим клиентам.

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

voretaq7
источник
1
Я пытаюсь автоматизировать этот процесс для шеф-повара, который является инструментом автоматизации системы, как Radmind. Проблема в том, что эти инструменты не могут устанавливать приложения из магазина приложений Mac.
Джозеф Холстен
1
@JosephHolsten Процедура с radmindбудет такой: «Установите приложение на свой компьютер шаблона и обновите стенограмму». (Все еще ручная установка, но одна ручная установка вместо 1000.)
voretaq7