macOS 微信双开/多开实战指南
在 macOS 环境下,通过修改应用包标识符和重新签名,可以实现微信的多实例运行。下面分享一套基于 Shell 脚本的自动化方案,支持一键克隆、多开及更新后重建。
准备工作
确保系统已安装官方微信(路径通常为 /Applications/WeChat.app),并确认终端拥有 sudo 权限。我们需要用到以下工具:
dittocodesignxattr/usr/libexec/PlistBuddy
风险提示:本方法仅供学习研究使用。操作涉及系统底层修改,请自行评估风险。若因操作导致账号异常或系统问题,后果自负。
创建并配置脚本
我们不需要手动执行复杂的命令,只需编写一个管理脚本即可。
1. 新建文件
在终端进入用户主目录并创建脚本文件:
cd ~
touch wechat-2.sh
2. 编辑脚本
你可以用任何编辑器打开它。推荐 VS Code 或系统自带的文本编辑器:
open -e wechat-2.sh
# 或者使用 nano
nano wechat-2.sh
将下方的完整脚本内容粘贴进去保存。
3. 赋予执行权限
chmod +x wechat-2.sh
此时脚本已就绪,接下来就可以通过参数控制多开了。
脚本功能说明
脚本封装了核心逻辑,常用指令如下:
- 自动双开:复制一份微信并重命名,同时启动两个窗口。
sudo ./wechat-2.sh auto --force - 多开指定数量:例如生成 3 个副本。
sudo ./wechat-2.sh multi 3 --force - 更新后重建:微信升级后原副本会失效,此命令会自动检测并重新克隆。
sudo ./wechat-2.sh rebuild --force - 停止进程:关闭所有微信相关进程。
sudo ./wechat-2.sh kill
完整脚本代码
以下是经过格式化的完整脚本,包含 Bundle ID 修改、去隔离属性及重新签名逻辑:
#!/bin/bash
# macOS WeChat Multi Instance Script
# Usage:
-euo pipefail
RED=
GREEN=
YELLOW=
BLUE=
NC=
WECHAT_APP=
DEST_DIR=
BASE_APP_NAME=
FORCE=0
() {
-v > /dev/null 2>&1 || {
-e
1
}
}
cmd ditto codesign xattr /usr/libexec/PlistBuddy;
require_cmd
() {
[ ! -d ];
-e
1
-e
}
() {
dest=
[ -d ];
[ -eq 1 ];
-rf
-p yn
[[ =~ ^[Yy]$ ]] && -rf
}
() {
app_name=
ditto
}
() {
app_name=
info_plist=
new_id=
/usr/libexec/PlistBuddy -c
/usr/libexec/PlistBuddy -c ||
}
() {
app_name=
dest=
-rf ||
xattr -dr com.apple.quarantine ||
codesign --force --deep --sign - --timestamp=none
}
() {
app_name ;
open -n
1
}
() {
pkill -f ||
}
() {
| grep ||
}
() {
setup)
check_wechat
remove_app
copy_wechat
modify_bundle_id
resign_app
;;
start)
start_apps
;;
auto)
check_wechat
remove_app
copy_wechat
modify_bundle_id
resign_app
start_apps
;;
multi)
count=
check_wechat
i $( 1 );
app_name=
remove_app
copy_wechat
modify_bundle_id
resign_app
start_apps $( i $( 1 ); ; )
;;
rebuild)
check_wechat
-e
apps=$(list_existing_apps)
app_name ;
-e
remove_app
copy_wechat
modify_bundle_id
resign_app
-e
;;
-k|)
kill_wechat
;;
-h|--|)
;;
*)
-e
1
;;
}
arg ;
[[ == ]] && FORCE=1
main


