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或每台机器都使用唯一的ID
Joseph Holsten 2012年

假设MacWorld是正确的,Mountain Lion弃用了软件更新服务,并且一切都通过Mac App Store进行,管理此工作对于工作组和企业将是一个挑战。我不知道Apple Configurator是否可以扩展以帮助管理帐户,并且在重新启动应用更新之前,远程桌面是否能够启动更新而不会打扰用户。
bmike

Answers:


13

大多数人都可以打开自动更新,并让Apple管理所有更新。如果有某种原因您不能或不会这样做,则可以使用命令行工具来自动执行App Store的安装和更新。

一个值得注意的开源工具,通过命令行复制了Mac App Store是MAS

安装:

brew install mas 

进入后,您可以使用以下方法更新所有可用的应用程序:

mas upgrade

如果您不希望使用Apple ID信任第三方软件,则还可以自动执行UI并使用钥匙串存储帐户名和密码。

Apple针对非App Store安全补丁和更新的解决方案是从命令行运行该softwareupdate工具,以更新Apple打算安装的所有软件,而无需用户干预或通过App Store UI。

当前在Lion和Mountain Lion上运行-这意味着Mac将运行在本地OS X服务器上,该服务器正在缓存用于下载系统更新和App Store外部安装的软件的下载。如果您没有本地软件更新服务器,那么它当然会直接从Apple下载文件。

对于Mountain Lion 10.8.2及更低版本,-一切仍通过App Store进行-因此,使用此工具可完全编写脚本来编写OS X更新之类的Apple软件,仅适用于更新和非App Store更新。

无法编写脚本的脚本(例如,也许曾经)是从App Store安装的应用程序,例如Xcode和Pages以及第三方应用程序。这意味着您不能只用一种工具来更新所有软件,而无需打开App Store应用程序并在用户界面屏幕上输入密码。

您可以做的是一次下载应用程序,然后将应用程序复制到多个Mac,只要用于下载该应用程序的第一份副本的Apple ID也将在将运行该应用程序的所有Macs上使用。

我知道有几家机构为20台计算机的实验室购买每个应用程序的一份副本以获得每个席位的许可证,然后将一个文件部署到所有Mac,以便一旦完成一次更新下载,便会使用Apple Remote Desktop这样的工具或Caspar或自制工具(例如scprsync),用于将应用程序的更新版本移至实验室中的所有Mac。

如果您为每台计算机使用单独的Apple ID,则将无法编写应用程序更新的脚本,因为每个更新都将请求每个帐户的密码,除非您熟悉所有密码并执行AppleScript可以执行的UI脚本以编程方式输入正确的用户名和密码,然后单击按钮以开始下载每台计算机的更新。应用商店应用程序经过代码签名的方式使得很难仅在不使软件包无效的情况下进行更新,或者以某种方式进行逆向工程/越狱,破坏了整个应用商店的过程,并避开了让应用安装程序正常工作的正常流程。


6

使用开源mas命令行实用程序可以做到这一点:

mas-cli

Mac App Store的简单命令行界面。专为脚本和自动化而设计。

披露:我是 mas


非常感谢您提供该工具并将其发布在此处。到现在已经很长一段时间了,我希望苹果公司保持API / SDK稳定,以使该工具能够随着时间的推移而继续工作。
bmike

3

您可能想看看萌芽包装独奏家。您可以使用dmg_package提供程序从uri安装OSX软件包。查看一些新芽中的食谱以获取一些示例。

要自动更新安全更新,请使用ivotal_workstation :: osx_updates配方。(请注意,这使用softwareupdate

对于Homebrew应用程序,brew提供者可以upgrade采取措施。

据我所知,没有提供者可以自动更新App Store应用程序。但是,您也许可以使用executebash提供者块中某些应用程序的内置自动更新功能。您还可以在厨师食谱中使用AppleScript来自动化App Store应用程序。有关使用内联AppleScript的一些示例,请看一下budd-osx-settings :: function_keys配方。(其他一些示例:psf-osx-settings :: remove_expose_keyboard_shortcutspsf-osx-settings :: set_finder_show_user_home_in_sidebar


1

我不确定AppleScript类型的解决方案,但是有用于管理大量OS X系统的工具。

我最熟悉的一个是radmind(它始于UMich,用于管理他们的实验室(旧站点))。

radmind确实适合将标准OS模板部署到一堆机器上并保持最新状态,因此对于小型站点而言,这可能会花费太多工作。基本工作流程是:

  • 制作干净的“构建机器”,然后安装radmind和所有标准软件。
  • 为该构建机器创建radmind脚本。
  • 在客户端计算机上安装radmind并提取/应用脚本以进行安装。
  • 要进行更新,请更新构建服务器并进行更新/补丁记录,然后将其应用于客户端。

…因此,从最严格的意义上讲,它不是自动化安装,而是您只需要做一次交互式操作,然后将更新的OS分发给客户端。

显然,如果您可以在任何地方安装一套标准软件,这将是最好的方法-如果您的客户都是特殊和独特的,那么这可能不是一个很好的解决方案。


1
我正在尝试在Chef中自动化此过程,chef是一个类似于radmind的系统自动化工具。问题是这些工具无法从Mac App Store安装应用程序。
约瑟夫·霍尔斯滕2012年

1
@JosephHolsten的过程radmind为“在模板计算机上安装应用程序并更新记录”。(仍然是手动安装,但是一次手动安装,而不是1000。)
voretaq7 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.