macOS 应用检查更新命令行工具

2023-04-12 14:26:37 +08:00
 ChengLuffy

说明:

当然所有软件都不必第一时间更新到最新的,当然有更好用工具,当然即使更新到最新版本的软件也总是想退回到旧版本,当然使用这个工具并没有什么必要性...

去年疫情期间想着了解一下很火的 Rust ,那时升级了系统版本导致一直在用 MacUpdater 无法继续使用:他的 2.0 版本重新开始收费,1.0 版本不支持 macOS 13 。所以考虑自己做一个,当然由于自己学习能力有限,我代码写的很差

如果有谁感觉我写得太差能给我发一个更好的 Rust 中文学习指南的话,或者发个 pr 直接教我怎么写就更好了

隐私声明

appcu 不提供应用的版本信息数据库,appcu 仅通过 iTunes API 、应用官方的 Sparkle 链接信息、Homebrew-Cask API 进行查询,这意味着 appcu 的开发者无法获取到您的电脑上安装了哪些应用,同时 appcu 也不会收集您的任何信息

关于检查更新的原理:查询方式说明,经过我踩过的这些坑,我感觉写一个 GUI 的版本也不是不可行,但是 APPKit 我没用过、SwiftUI 不想写,所以只能抛砖引玉,静待大佬

由于检查方式的限制,所以一定有应用无法检查更新,可以通过配置忽略检查这些应用,或者设置 Homebrew-Api 查询别名

使用方式

对所有 /Applications 路径下应用检查更新:

appcu

对特定路径应用检查更新:

appcu /Applications/xx.app /Applications/yy.app

使用 terminal-notifier 发送检查更新结果,点击通知下载更新的安装包或打开商店

appcu -n

使用 terminal-notifier 发送检查更新结果,点击通知打开应用或商店

appcu -no

定时检查更新(我现在的使用方式,一定要是绝对路径,一定要加参数 -n 或者 -no,否则会输出到 mail 命令内)

0 10 * * * /path/to/appcu -n

当然,涉及到 terminal-notifier 的使用方法需要先安装 terminal-notifier 并在配置文件设置路径

其他命令参数和配置文件说明参考项目地址 ChengLuffy/application_check_update

安装

由于项目 0 Stars (竟然是 0 欸!)没有满足发布 Homebrew 的最低要求,而由于自己学习能力差,自己的 HomeBrew 仓库仅编译了 Intel monterey 版本,所以推荐使用脚本安装,脚本由 ChatGPT 编写

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/chengluffy/application_check_update/master/appcu-install.sh)"

由于需要将 appcu 移动到 /usr/local/bin/ 文件夹下,所以需要 sudo 运行,您也可以通过 Releases 页面自行下载解压移动到 $PATH 路径下,注意如果您的机器是 Apple Silicon ,一定要下载 aarch64 版本,如果通过 Rosetta ,appcu 会输出 x86-64 版本的应用更新安装包的下载链接

2411 次点击
所在节点    macOS
23 条回复
windirt
2023-04-12 16:13:27 +08:00
没有应用信息库,没有 sparkle 和非 store 的 app 就无法刷新更新信息了..

macupdater 之所以贵,就是因为它维护了一个应用信息库...
ChengLuffy
2023-04-12 16:18:45 +08:00
@windirt 还有 Homebrew-Cask-Api ,也算一个比较完备的数据库

我感觉升级系统后 MacUpdater 1.0 就自己退出不让用就有点不合理
duxiansen
2023-04-12 16:21:10 +08:00
一直用 MacUpdater 免费版,够我用了
ChengLuffy
2023-04-12 16:25:46 +08:00
@duxiansen 我之前也用免费版,后来发现他的数据库有时候有些应用也不如 Homebrew-Cask 内的信息,于是自己写了一个
justNoBody
2023-04-12 17:28:21 +08:00
和直接执行 brew upgrade 有什么差别呢?
wupher
2023-04-12 17:34:54 +08:00
28Sv0ngQfIE7Yloe
2023-04-12 17:37:34 +08:00
JimmyLX
2023-04-12 17:57:51 +08:00
如果你有 MacUpdater 3.0 的 Beta 测试版本好像能一直用下去,前提是找得到安装包
我是一开始一直在用测试版,后来入正了
ChengLuffy
2023-04-12 19:15:41 +08:00
@Morii
brew cu -a -f 在本机维护了一个已安装的版本号,但是如果你有通过应用内升级的情况,brew cu 会给出错误的结果,还有一个就是 brew cask 升级的会在我的 Mac 打乱启动台的布局

@justNoBody
brew upgrade 不会检查没有通过 Homebrew-Cask 安装的软件
ChengLuffy
2023-04-12 19:24:10 +08:00
@wupher
可能找到了 topgrade 我就不会想着做一个了,但是刚试了下 top 自动升级的太多了,而且他在我电脑上检查 npm 更新时崩了
ChengLuffy
2023-04-12 19:26:12 +08:00
太多只他升级的东西,我为了避免一些 bug 把 flutter 停留在了 2.x 版本,差点就被他 升级
Silently
2023-04-12 19:42:03 +08:00
@JimmyLX 我也是这个 入正了
kiritoyui
2023-04-12 21:21:18 +08:00
ChengLuffy
2023-04-12 21:35:59 +08:00
@kiritoyui 哇,感谢推荐,如果我提前找到这些的话我肯定不会自己写的
JimmyLX
2023-04-12 21:41:29 +08:00
@kiritoyui
@ChengLuffy
我对比过这个,MacUpdater 数据还是更全面的
Lastest 能检测我电脑上 60 多个软件,Updater 是 140 个
kiritoyui
2023-04-12 21:42:49 +08:00
@ChengLuffy 自己写一个也很了不起,就放练手了
ChengLuffy
2023-04-12 23:10:13 +08:00
@JimmyLX MacUpdater 收费策略太恶心了,新系统我肯定要每年升级的,要不有些开发测试不好做,而按他的收费策略,我要一直买下去…
wupher
2023-04-12 23:43:18 +08:00
@ChengLuffy 你准确的说出了它的优点和缺点:啥都能升,默认啥都给升。 :-)

包括 vim-plugins, tmux-plugins, conda, pipx 这些小众冷僻的全给升了。

我出现过几次跑了这玩意,工程挂掉了的情况。

所以开发机都通过 .config 控制哪些让它碰。
vitaminx
2023-04-13 00:41:26 +08:00
op 的这个工具非常有用,brew cu -a -f 升级软件有有些软件会丢失数据,比如登陆信息等。我碰到过一次,由于安装的应用比较多,丢失信息很蛋痛,后来再也不敢这样粗暴处理了。

如果有一个 GUI 界面可以勾选哪些升级哪些不升级就比较完美了!
ChengLuffy
2023-04-13 09:16:38 +08:00
@vitaminx 由于我没学过 AppKit ,GUI 暂时做不出来,现在可以通过 `ignore` 命令忽略应用查询,忽略的应用记录在配置文件中

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/931919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX