如何从命令行更新App Store应用程序?


18

我想从命令行强制更新App Store应用程序。

我怎样才能做到这一点?


2
似乎没有像整个软件更新那样的命令行帮助程序,因此您可能仅限于启动可自动执行GUI命令的脚本。您是否会编辑问题以澄清您是否希望“工作”解决方案仅是终端设备,还是希望在询问时键入密码的Automator脚本是否在寻找。
bmike

我正在寻找无人值守的东西,即使这需要AppleID id /密码,我也可以将其包括在脚本中。
索林2012年

1
另请参阅apple.stackexchange.com/questions/42353/…,以获取调用第三方应用程序的解决方案
bmike

Answers:


6

Apple没有提供命令行帮助程序或您可以闩锁以实现自动化的任何可编写脚本的可可类。与允许立即进行更新和安装的整体软件更新不同,您可以使用Automator编写使用鼠标单击按钮的过程的脚本。

但是,应用程序商店已经过反向工程并以开源形式和二进制形式发布

安装速度很快,并且在最新版本的OS X 10.11上似乎非常可靠:

brew install argon/mas/mas 

在发布源代码之后,我希望会弹出此工具的其他一些实现,甚至可能是使用python编写的脚本。

如果有人登录到macOS(windowmanager正在运行),则可以使用Automator和“监视我”功能来自动执行更新,并将存储密码存储在脚本中相当不安全。

如果满足您的需求,这里有两个教程可帮助您入门。

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应用程序曾经将该功能公开给脚本,您将在命令行中有更多选择。它很容易使用sdefsdp并且gen_bridge_metadata可以从命令行使用ruby转储整个可脚本化的字典和脚本内容,但是目前最好的选择是使用mas命令行工具。


1
哇,真烦人。通常的软件更新可以使用softwareupdate(8)轻松编写脚本。
Arne

2
我只是想声明一下-很明显,苹果公司已经有意识地决定使其变得困难/不提供任何工具或挂钩或协助来自动完成App Store的安装和更新。核心系统仍然具有该softwareupdate过程,甚至可以挂接到Mountain Lion上的App Store中-但仅适用于非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

您所追求的是有效载荷文件中的内容,该文件是使用gzip压缩的cpio归档文件。因此,通过一些管道命令,我们可以转到应用程序捆绑包:

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
Billy McCloskey
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.