mas-cli
Mac App Store的简单命令行界面。为脚本编写和自动化而设计。
📲 安装
🍺 Homebrew
Homebrew 是首选的安装方式:
brew install mas
MacPorts
MacPorts 也可以使用:
sudo port install mas
⚠️ 请注意,从 MacPorts 或核心 Homebrew 公式安装 mas 需要 macOS 10.15 (Catalina) 或更高版本。
☎️ 较旧的 macOS 版本
我们提供了一个自定义 Homebrew tap,其中包含自 10.11 以来所有 macOS 版本的预构建软件包。
要从我们的 tap 安装 mas:
brew install mas-cli/tap/mas
Swift 5 运行时支持
mas 需要 Swift 5 运行时支持。macOS 10.14.4 及更高版本包含了它,但早期版本没有。
如果没有它,运行 mas
可能会报告类似这样的错误:
dyld: Symbol not found: _$s11SubSequenceSlTl
要获得 Swift 5 支持,你有几个选择:
- 安装 Swift 5 Runtime Support for Command Line Tools。
- 更新到 macOS 10.14.4 或更高版本。
- 将 Xcode 10.2 或更高版本安装到
/Applications/Xcode.app
。
🐙 GitHub 发布
另外,二进制文件可在 GitHub Releases 中获取。
🤳🏻 使用方法
Mac App Store 中的每个应用程序都有一个产品标识符,这也用于 mas-cli 命令。使用 mas list
将显示所有已安装的应用程序及其产品标识符。
$ mas list
446107677 Screens
407963104 Pixelmator
497799835 Xcode
可以使用 mas search
按名称搜索应用程序,它将搜索 Mac App Store 并返回匹配的标识符。
包含 --price
标志可在结果中显示价格。
$ mas search Xcode
497799835 Xcode
688199928 Docs for Xcode
449589707 Dash 3 - API Docs & Snippets. Integrates with Xcode, Alfred, TextWrangler and many more.
[...]
找到应用程序标识符的另一种方法是:
- 在 Mac App Store 中找到应用程序
- 选择
共享
>复制链接
- 从字符串中获取标识符,例如对于 Xcode,
https://apps.apple.com/us/app/xcode/id497799835?mt=12
的标识符为
497799835
要安装或更新应用程序,只需使用应用程序标识符运行 mas install
:
$ mas install 808809998
==> 正在下载 PaintCode 2
==> 已安装 PaintCode 2
如果你想安装 search
命令返回的第一个结果,请使用 lucky
命令。
$ mas lucky twitter
==> 正在下载 Twitter
==> 已安装 Twitter
请注意,此命令不允许你首次安装(甚至购买)应用程序:在这种情况下请使用
purchase
命令。 ⛔ 从 macOS 10.15 Catalina 开始不支持purchase
命令。请参阅已知问题。
$ mas purchase 768053424
==> 正在下载 Gapplin
==> 已安装 Gapplin
请注意,你可能需要在 App Store 中重新验证身份才能完成购买。 如果应用程序不是免费的,或者你配置了账户不记住免费购买的凭据,就会出现这种情况。
使用 mas outdated
列出所有有待更新的应用程序。
$ mas outdated
497799835 Xcode (7.0)
446107677 Screens VNC - Access Your Computer From Anywhere (3.6.7)
mas
只能安装/更新 Mac App Store 中列出的应用程序。 使用softwareupdate(8)
实用程序下载系统更新(例如 Xcode 命令行工具)
要安装所有待更新的应用程序,请运行 mas upgrade
。
$ mas upgrade
正在升级 2 个过时的应用程序:
Xcode (7.0), Screens VNC - Access Your Computer From Anywhere (3.6.7)
==> 正在下载 Xcode
==> 已安装 Xcode
==> 正在下载 iFlicks
==> 已安装 iFlicks
可以通过向 mas upgrade
提供应用程序标识符来选择性地执行更新
$ mas upgrade 715768417
正在升级 1 个过时的应用程序:
Xcode (8.0)
==> 正在下载 Xcode
==> 已安装 Xcode
🚏📥 登录
⛔ 从 macOS 10.13 High Sierra 开始不支持
signin
命令。请参阅已知问题。
要首次登录 Mac App Store,请运行 mas signin
。
$ mas signin mas@example.com
==> 正在登录 Apple ID:mas@example.com
密码:
如果你在以这种方式登录时遇到问题,可以要求使用图形对话框登录 (由 Mac App Store 应用程序提供):
$ mas signin --dialog mas@example.com
==> 正在登录 Apple ID:mas@example.com
你还可以在命令中嵌入密码。
$ mas signin mas@example.com 'ZdkM4f$gzF;gX3ABXNLf8KcCt.x.np'
==> 正在登录 Apple ID:mas@example.com
使用 mas signout
从 Mac App Store 注销。
🍺 Homebrew 集成
mas
已与 homebrew-bundle 集成。如果安装了 mas
,并运行 brew bundle dump
,那么您的 Mac App Store 应用将包含在创建的 Brewfile 中。有关更多详细信息,请参阅 homebrew-bundle 文档。
⚠️ 已知问题
随着时间推移,Apple 改变了 mas
用于管理 App Store 应用的 API,限制了其功能。请使用 App Store 应用进行登录或购买应用。后续可以使用 mas install
重新下载。
- ⛔️ 从 macOS 10.13 High Sierra 开始,不支持
signin
命令。#164 - ⛔️ 从 macOS 10.15 Catalina 开始,不支持
purchase
命令。#289 - ⛔️ 从 macOS 12 Monterey 开始,不支持
account
命令。#417
mas
从 Mac 上的应用包中看到的版本并不总是与 App Store 报告的相同应用包版本匹配。这导致 outdated
和 upgrade
命令的行为与 App Store 应用中显示的过时情况不同,造成一些混淆。更令人困惑的是,由于 CDN 传播和缓存,新应用版本发布到 App Store 到在 App Store 应用或通过 mas
命令显示可用之间往往有一些延迟。这些问题导致了类似 #384 和 #387 的症状。
搭载 Apple 芯片的 Mac 可以从 App Store 安装和运行 iOS 和 iPadOS 应用。mas
目前还无法识别这些应用,也无法安装或更新它们。#321
💥 当出现问题时
如果您看到这个错误,可能是因为您还没有通过 App Store 安装应用。 参见 #46。
此 Apple ID 无法重新下载此项目,原因可能是由其他用户购买或项目已退款或取消。
如果 mas
未按预期工作(例如,无法更新/下载应用),请运行 mas reset
并重试。
如果问题仍然存在,请提交错误报告。
非常感谢您的所有反馈!✨
📺 使用 tmux
mas
通过与 Mac App Store 相同的系统服务运行。这些服务作为独立进程存在,通过 XPC 进行通信。因此,mas
在 tmux
中运行时会遇到类似剪贴板的问题。有一个包装工具可以修复剪贴板行为,同时也适用于 mas
。
您应考虑配置 tmux
使用该包装工具,但如果不想这样做,也可以一次性使用如下方法:
brew install reattach-to-user-namespace
reattach-to-user-namespace mas install
ℹ️ 从源代码构建
您可以通过打开根 mas
目录在 Xcode 中构建,或在终端中:
script/bootstrap
script/build
构建输出可以在项目内的 .build/
目录中找到。
✅ 测试
本项目中的测试是最近正在进行的工作。 由于 Xcode 不官方支持命令行工具目标的测试, 所有逻辑都是 MasKit 目标的一部分,测试在 MasKitTests 中。 测试使用 Quick 编写。
script/test