From 7b2558c585908bef0f14e704ad626d4e8df49b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B2=81=E6=A0=91=E4=BA=BA?= Date: Wed, 15 Oct 2025 02:08:32 +0900 Subject: [PATCH] feat: update instructions and scripts for QQMusic Mac v10.7 and v8.8.0 --- .../panels/QMCv2/InstructionsMacV10.tsx | 10 +++++-- .../panels/QMCv2/InstructionsMacV8.tsx | 14 +++++++-- .../QMCv2/assets/QQ 音乐 Mac 屏蔽升级.tar.gz | Bin 372 -> 0 bytes .../QMCv2/assets/qqmusic_v10.7_dump.command | 10 ++----- .../qqmusic_v8.8.0_patch_update.command | 28 ++++++++++++++++++ 5 files changed, 50 insertions(+), 12 deletions(-) delete mode 100644 src/features/settings/panels/QMCv2/assets/QQ 音乐 Mac 屏蔽升级.tar.gz create mode 100755 src/features/settings/panels/QMCv2/assets/qqmusic_v8.8.0_patch_update.command diff --git a/src/features/settings/panels/QMCv2/InstructionsMacV10.tsx b/src/features/settings/panels/QMCv2/InstructionsMacV10.tsx index 30ab96b..4cf4035 100644 --- a/src/features/settings/panels/QMCv2/InstructionsMacV10.tsx +++ b/src/features/settings/panels/QMCv2/InstructionsMacV10.tsx @@ -39,10 +39,16 @@ export function InstructionsMacV10() { ,打开得到 {DUMP_COMMAND_NAME}
  • - 双击运行 {DUMP_COMMAND_NAME},如果提示访问目录,请允许其访问。 +

    + 双击 {DUMP_COMMAND_NAME} 执行。 +

    +

    + ※ 若是提示文件来自未知开发者,请右键点击该文件,选择菜单第一项 + 打开,在警告窗口再次选择打开。 +

  • - 运行后会在当前目录生成 qqmusic-mac-*.mmkv 文件,其中 * 是一串随机字符。 + 运行后会在脚本当前目录生成 qqmusic-mac-*.mmkv 文件,其中 * 是一串随机字符。
  • {inSecretImportModal ? (
  • diff --git a/src/features/settings/panels/QMCv2/InstructionsMacV8.tsx b/src/features/settings/panels/QMCv2/InstructionsMacV8.tsx index 4bce9ec..9b743aa 100644 --- a/src/features/settings/panels/QMCv2/InstructionsMacV8.tsx +++ b/src/features/settings/panels/QMCv2/InstructionsMacV8.tsx @@ -6,7 +6,11 @@ import { MacCommandKey } from '~/components/Key/MacCommandKey'; import { ShiftKey } from '~/components/Key/ShiftKey'; import { copyToClipboard } from '~/util/clipboard'; -import BlockUpdateScript from './assets/QQ 音乐 Mac 屏蔽升级.tar.gz?base64'; +import { + commandName as BLOCK_UPDATE_COMAND, + tarName as BLOCK_UPDATE_TAR_NAME, + tarball as BLOCK_UPDATE_BASE64, +} from './assets/qqmusic_v8.8.0_patch_update.command?&name=QQ 音乐 Mac v8.8.0 屏蔽更新.command&mac-command'; import { DownloadBase64 } from '~/components/DownloadBase64'; import { useContext } from 'react'; import { InSecretImportModalContext } from '~/context/InSecretImportModal'; @@ -38,10 +42,14 @@ export function InstructionsMacV8() {

    部分用户可能会被强制要求更新。你可以下载 - - 并执行 QQ 音乐 Mac 屏蔽升级.command。 + + 并执行 {BLOCK_UPDATE_COMAND}其原理是修改 QQ 音乐的版本号,让其认为自己是最新版本,从而达到屏蔽更新的效果。

    +

    + ※ 若是提示文件来自未知开发者,请右键点击该文件,选择菜单第一项 + 打开,在警告窗口再次选择打开。 +

    密钥文件通常存储在下述路径:

    {DB_PATH} diff --git a/src/features/settings/panels/QMCv2/assets/QQ 音乐 Mac 屏蔽升级.tar.gz b/src/features/settings/panels/QMCv2/assets/QQ 音乐 Mac 屏蔽升级.tar.gz deleted file mode 100644 index 55a632887eb98dad39982e84ed332e82f2646ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL`0iwFP!000001MSs6Pr^VL25{zniZcwI`Ulzy1DY5Y9Z2LOob3S@;aYn~ z!l;uD8X4S;gF0zqT+qZXV?gm+*eVHu1dSx1#^<-Z?VI-AHto}z))sAVFdDE}T9pcU zJ-h4OcSxD~qx0a%=(2~heTA>SH6Dq+D~69%)y)@KPC-z!Skl(-^~@q^Pel&c_%{_lF5Ib z|Ll^r&4nfFn#TNkNc6$^MX$Tx>s~+YUFw=9SwIYKZqps2%WO%in2XwK(JY#F$r|pB z+7o@9SZh(#;67D66zTt^+>+ckX%t!Op-@aHX>E#XXeI|qrTJmNB(Di#7}YTLSyBVW zqNIFur!S|qsZud90+PJ7X`{i+-4>0hP+YK2&Kur!|K{lVu%qJ}2LJ#70000000000 S00000f6p6CwMQ}lC;$MY1h9Jm diff --git a/src/features/settings/panels/QMCv2/assets/qqmusic_v10.7_dump.command b/src/features/settings/panels/QMCv2/assets/qqmusic_v10.7_dump.command index 516e8b3..50f6a4c 100755 --- a/src/features/settings/panels/QMCv2/assets/qqmusic_v10.7_dump.command +++ b/src/features/settings/panels/QMCv2/assets/qqmusic_v10.7_dump.command @@ -8,6 +8,7 @@ import sys from argparse import ArgumentParser from dataclasses import dataclass from os import PathLike +from os.path import dirname from pathlib import Path from struct import pack, unpack @@ -154,13 +155,12 @@ def main(): "-o", "--output", type=str, - help="Output directory for decrypted MMKV files (default: current directory)", - default=".", + help="Output directory for decrypted MMKV files (default: script directory)", + default=dirname(__file__), ) parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose output" ) - parser.add_argument("--no-pause", action="store_true", help="Do not pause on exit") args = parser.parse_args() home_dir = Path.home() @@ -182,7 +182,6 @@ def main(): force = args.force verbose = args.verbose - no_pause = args.no_pause for plist_file in plists: if plist_file.exists() and plist_file.is_file(): @@ -209,9 +208,6 @@ def main(): print(f"Error writing decrypted mmkv: {e}", file=sys.stderr) continue - if not no_pause: - input("Press Enter to exit...") - if __name__ == "__main__": main() diff --git a/src/features/settings/panels/QMCv2/assets/qqmusic_v8.8.0_patch_update.command b/src/features/settings/panels/QMCv2/assets/qqmusic_v8.8.0_patch_update.command new file mode 100755 index 0000000..a86a7f4 --- /dev/null +++ b/src/features/settings/panels/QMCv2/assets/qqmusic_v8.8.0_patch_update.command @@ -0,0 +1,28 @@ +#!/bin/sh + +echo '补丁中…' + +patch_count=0 + +patch_qqmusic() { + SUDO="$1" + APP="$2" + + if [ ! -d "$APP" ]; then + echo "路径不存在,跳过 $APP..." + return + fi + + echo "修补 $APP..." + $SUDO sed -i.bak 's#8.8.0#88.8.0#' \ + "$APP/Contents/Info.plist" + $SUDO codesign --force --deep --sign - "$APP" + $SUDO xattr -d com.apple.quarantine "$APP" + + patch_count=$((patch_count + 1)) +} + +patch_qqmusic sudo "/Applications/QQMusic.app" +patch_qqmusic "" "$HOME/Applications/QQMusic.app" + +echo "完成,已修补 $patch_count 个 QQ 音乐安装"