本脚本开源,无任何加密混淆 对 Intel 和 Arm 芯片都进行了适配
如何使用?
下载下方文件https://www.mhatp.cn/upload/2023/05/macupdate48tool-d5596053f33147e6b582e35c361712b1.sh
打开终端 App 输入命令运行
1 sh ~/Downloads/macupdate48tool-d5596053f33147e6b582e35c361712b1.sh
脚本会自动检测版本号以判断是否需要更新: 若无需更新,自动退出。 若需要更新,脚本会自动下载对应系统的最新版本发行压缩包并解压到临时目录,再移动软件包到系统目录下,再解除隔离标签,最后删除掉临时文件。 由于脚本为您进行了解除隔离标签这一步,所以脚本运行中需要用到您账户的密码(您手动更新时也需要使用到)。
代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 #!/bin/bash # 关闭 48tools.app echo "正在关闭 48tools.app" osascript -e 'quit app "48tools"' # 获取当前安装的应用程序版本号 CURRENT_VERSION=$(defaults read /Applications/48tools.app/Contents/Info.plist CFBundleShortVersionString) echo "当前版本:v$CURRENT_VERSION" # 检测当前系统版本是arm还是intel,分配不同的下载链接 if [ "$(uname -m)" = "arm64" ]; then echo "当前系统:arm64" # 获取最新版本的下载链接 DOWNLOAD_URL=$(curl -s https://api.github.com/repos/duan602728596/48tools/releases/latest \ | grep -o "https://github.com/duan602728596/48tools/releases/download/.*/48tools-.*-mac-arm64.zip") else echo "当前系统:intel" # 获取最新版本的下载链接 DOWNLOAD_URL=$(curl -s https://api.github.com/repos/duan602728596/48tools/releases/latest \ | grep -o "https://github.com/duan602728596/48tools/releases/download/.*/48tools-.*-mac.zip") fi echo "正在检查更新..." # LATEST_VERSION LATEST_VERSION=$(curl -s https://api.github.com/repos/duan602728596/48tools/releases/latest \ | grep -o '"tag_name": ".*"' \ | sed 's/"//g' \ | sed 's/tag_name: //g') echo "最新版本:$LATEST_VERSION" # 检查是否获取到最新版本号 if [ -z "$LATEST_VERSION" ]; then echo "获取最新版本号失败" echo "请检查网络连接" exit 1 fi # 检查当前版本是否与最新版本相同 if [ "v$CURRENT_VERSION" = "$LATEST_VERSION" ]; then echo "当前版本已经是最新版本,不需要更新" # 打开 48tools.app open /Applications/48tools.app exit 0 fi # 设置安装变量 APP_NAME="48tools.app" DOWNLOAD_PATH="./48toolstmp/48tools.zip" INSTALL_PATH="/Applications/$APP_NAME" # 创建临时文件夹 mkdir -p ./48toolstmp # 下载文件并检查错误 echo "下载链接:$DOWNLOAD_URL" curl -L "$DOWNLOAD_URL" -o "$DOWNLOAD_PATH" if [ $? -ne 0 ]; then echo "下载文件失败" exit 1 fi # 解压文件并检查错误 unzip -o "$DOWNLOAD_PATH" -d "./48toolstmp" if [ $? -ne 0 ]; then echo "解压文件失败" exit 1 fi # mv ./48toolstmp/48tools-*/48tools.app ./48toolstmp/48tools.app cp -rf ./48toolstmp/48tools-*/48tools.app ./48toolstmp/48tools.app # 检查应用程序文件是否存在 if [ ! -d "./48toolstmp/$APP_NAME" ]; then echo "找不到应用程序" exit 1 fi # 将应用移到应用程序文件夹 echo "正在移动应用程序..." # 判断是否存在文件夹,不存在则创建 if [ ! -d "$INSTALL_PATH" ]; then mkdir -p "$INSTALL_PATH" fi # 替换应用程序 rm -rf "$INSTALL_PATH" mv "./48toolstmp/$APP_NAME" "$INSTALL_PATH" if [ $? -ne 0 ]; then echo "移动应用程序失败" exit 1 fi # 移除应用程序的隔离标签并检查错误 echo "正在移除隔离标签..." echo "请在输入密码,以便移除隔离标签,输入完成后按回车键(密码不会显示)" sudo xattr -r -d com.apple.quarantine "$INSTALL_PATH" if [ $? -ne 0 ]; then echo "移除隔离标签失败" exit 1 fi echo "正在清理文件..." # 清理文件 rm -rf ./48toolstmp if [ $? -ne 0 ]; then echo "清理文件失败" exit 1 fi # 输出更新完成消息 VERSION=$(defaults read "$INSTALL_PATH/Contents/Info.plist" CFBundleShortVersionString) echo "48tools 已更新到版本 $VERSION" echo "更新完成,正在重新打开应用程序" open /Applications/48tools.app exit 0 # 脚本发布地址 https://www.mhatp.cn/archives/update48tools
License: WTFPL
Todo List