feat: update instructions and scripts for QQMusic Mac v10.7 and v8.8.0

This commit is contained in:
鲁树人
2025-10-15 02:08:32 +09:00
parent fb52b0197c
commit 7b2558c585
5 changed files with 50 additions and 12 deletions
@@ -39,10 +39,16 @@ export function InstructionsMacV10() {
,打开得到 <code>{DUMP_COMMAND_NAME}</code>。 ,打开得到 <code>{DUMP_COMMAND_NAME}</code>。
</li> </li>
<li> <li>
双击运行 <code>{DUMP_COMMAND_NAME}</code>,如果提示访问目录,请允许其访问。 <p>
双击 <code>{DUMP_COMMAND_NAME}</code> 执行。
</p>
<p>
※ 若是提示文件来自未知开发者,请右键点击该文件,选择菜单第一项
<VQuote>打开</VQuote>,在警告窗口再次选择<VQuote>打开</VQuote>。
</p>
</li> </li>
<li> <li>
运行后会在当前目录生成 <code>qqmusic-mac-*.mmkv</code> 文件,其中 <code>*</code> 是一串随机字符。 运行后会在脚本当前目录生成 <code>qqmusic-mac-*.mmkv</code> 文件,其中 <code>*</code> 是一串随机字符。
</li> </li>
{inSecretImportModal ? ( {inSecretImportModal ? (
<li> <li>
@@ -6,7 +6,11 @@ import { MacCommandKey } from '~/components/Key/MacCommandKey';
import { ShiftKey } from '~/components/Key/ShiftKey'; import { ShiftKey } from '~/components/Key/ShiftKey';
import { copyToClipboard } from '~/util/clipboard'; 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 { DownloadBase64 } from '~/components/DownloadBase64';
import { useContext } from 'react'; import { useContext } from 'react';
import { InSecretImportModalContext } from '~/context/InSecretImportModal'; import { InSecretImportModalContext } from '~/context/InSecretImportModal';
@@ -38,10 +42,14 @@ export function InstructionsMacV8() {
<p className="mt-4"> <p className="mt-4">
部分用户可能会被强制要求更新。你可以下载 部分用户可能会被强制要求更新。你可以下载
<DownloadBase64 filename="QQ 音乐 Mac v8.8.0 屏蔽升级.tar.gz" data={BlockUpdateScript}></DownloadBase64> <DownloadBase64 filename={BLOCK_UPDATE_TAR_NAME} data={BLOCK_UPDATE_BASE64}></DownloadBase64>
并执行 <code>QQ 音乐 Mac 屏蔽升级.command</code>。 并执行 <code>{BLOCK_UPDATE_COMAND}</code>。
<span>其原理是修改 QQ 音乐的版本号,让其认为自己是最新版本,从而达到屏蔽更新的效果。</span> <span>其原理是修改 QQ 音乐的版本号,让其认为自己是最新版本,从而达到屏蔽更新的效果。</span>
</p> </p>
<p>
※ 若是提示文件来自未知开发者,请右键点击该文件,选择菜单第一项
<VQuote>打开</VQuote>,在警告窗口再次选择<VQuote>打开</VQuote>。
</p>
<p className="mt-4">密钥文件通常存储在下述路径:</p> <p className="mt-4">密钥文件通常存储在下述路径:</p>
<FilePathBlock>{DB_PATH}</FilePathBlock> <FilePathBlock>{DB_PATH}</FilePathBlock>
@@ -8,6 +8,7 @@ import sys
from argparse import ArgumentParser from argparse import ArgumentParser
from dataclasses import dataclass from dataclasses import dataclass
from os import PathLike from os import PathLike
from os.path import dirname
from pathlib import Path from pathlib import Path
from struct import pack, unpack from struct import pack, unpack
@@ -154,13 +155,12 @@ def main():
"-o", "-o",
"--output", "--output",
type=str, type=str,
help="Output directory for decrypted MMKV files (default: current directory)", help="Output directory for decrypted MMKV files (default: script directory)",
default=".", default=dirname(__file__),
) )
parser.add_argument( parser.add_argument(
"-v", "--verbose", action="store_true", help="Enable verbose output" "-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() args = parser.parse_args()
home_dir = Path.home() home_dir = Path.home()
@@ -182,7 +182,6 @@ def main():
force = args.force force = args.force
verbose = args.verbose verbose = args.verbose
no_pause = args.no_pause
for plist_file in plists: for plist_file in plists:
if plist_file.exists() and plist_file.is_file(): 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) print(f"Error writing decrypted mmkv: {e}", file=sys.stderr)
continue continue
if not no_pause:
input("Press Enter to exit...")
if __name__ == "__main__": if __name__ == "__main__":
main() main()
@@ -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#<string>8.8.0</string>#<string>88.8.0</string>#' \
"$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 音乐安装"