macOS 双开/多开微信WeChat完整教程(支持 4.X 及以上版本)

macOS 双开/多开微信完整教程(支持 4.X 及以上版本)


一、准备工作

  1. 确保系统为 macOS ,并已正确安装官方微信(路径:/Applications/WeChat.app)。

  2. 确认系统中具备以下工具:

    • ditto
    • codesign
    • xattr
    • /usr/libexec/PlistBuddy
  3. 打开终端(Terminal),确保拥有 sudo 权限。

    文章目录


二、一键双开脚本(推荐方法)

⚠️ 免责声明

本教程及脚本仅供学习和研究使用,方法来源于网络。请自行评估风险与适用性。若因操作导致系统异常、微信账号异常或其他损失,均由使用者本人承担,与本文作者无关。


终端操作|创建脚本文件

我们需要先新建一个脚本文件,把前面给出的 wechat-2.sh 代码保存进去。

1. 新建文件

在终端中输入:

bash 复制代码
cd ~
touch wechat-2.sh

这样就在用户主目录下新建了一个 wechat-2.sh 文件。


2. 打开文件进行编辑

你可以用以下几种方法打开文件:

方法1:用文本编辑器(推荐)

如果你习惯图形界面,可以用系统自带的 TextEdit

bash 复制代码
open -e wechat-2.sh

把脚本粘贴进去,然后保存即可。

方法2:用 VS Code(如果已安装)
bash 复制代码
code wechat-2.sh
方法3:用终端内置编辑器 nano
bash 复制代码
nano wechat-2.sh
  • 复制我提供的脚本内容,粘贴进去;
  • 粘贴完成后,按下 Ctrl + O 保存,然后回车;
  • Ctrl + X 退出。

3. 赋予执行权限

保存文件后,需要让脚本有运行权限:

bash 复制代码
chmod +x wechat-2.sh

这样 wechat-2.sh 就变成了可执行文件。


4. 运行脚本

  • 第一次运行(自动复制+双开)

    bash 复制代码
    sudo ./wechat-2.sh auto --force

    系统会提示输入管理员密码,请输入你的 Mac 密码(输入时不会显示)。

  • 多开运行(生成多个小绿书副本)

    bash 复制代码
    sudo ./wechat-2.sh multi 3 --force

    会自动生成:小绿书1、小绿书2、小绿书3。

  • 更新后重建副本

    bash 复制代码
    sudo ./wechat-2.sh rebuild --force
  • 关闭所有微信进程

    bash 复制代码
    sudo ./wechat-2.sh kill

👉 总结一下操作步骤:

  1. touch wechat-2.sh 新建文件
  2. nano wechat-2.shopen -e wechat-2.sh 编辑脚本
  3. chmod +x wechat-2.sh 添加运行权限
  4. sudo ./wechat-2.sh auto --force 执行

三、完整脚本(支持双开、多开、更新后重建)

以下脚本包含 multi 多开rebuild 重建副本 功能。

bash 复制代码
#!/bin/bash
# macOS WeChat Multi Instance Script
# Usage:
#   sudo ./wechat-2.sh auto --force
#   sudo ./wechat-2.sh multi 3 --force   # 多开3个副本
#   sudo ./wechat-2.sh rebuild --force   # 更新后自动重建所有副本

set -euo pipefail

# 颜色
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; NC='\033[0m'

# 默认路径
WECHAT_APP="/Applications/WeChat.app"
DEST_DIR="/Applications"
BASE_APP_NAME="小绿书"
FORCE=0

require_cmd() {
    command -v "$1" >/dev/null 2>&1 || { echo -e "${RED}缺少命令: $1${NC}"; exit 1; }
}
for cmd in ditto codesign xattr /usr/libexec/PlistBuddy; do require_cmd "$cmd"; done

check_wechat() {
    if [ ! -d "$WECHAT_APP" ]; then
        echo -e "${RED}未找到微信: $WECHAT_APP${NC}"
        exit 1
    fi
    echo -e "${GREEN}✓ 检测到微信已安装${NC}"
}

remove_app() {
    local dest="$DEST_DIR/$1"
    if [ -d "$dest" ]; then
        if [ $FORCE -eq 1 ]; then
            sudo rm -rf "$dest"
        else
            read -p "是否删除并重新创建 $1? (y/n): " yn
            [[ $yn =~ ^[Yy]$ ]] && sudo rm -rf "$dest"
        fi
    fi
}

copy_wechat() {
    local app_name=$1
    sudo ditto "$WECHAT_APP" "$DEST_DIR/$app_name"
}

modify_bundle_id() {
    local app_name=$1
    local info_plist="$DEST_DIR/$app_name/Contents/Info.plist"
    local new_id="com.tencent.xinWeChat.dual.$RANDOM"
    sudo /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $new_id" "$info_plist"
    sudo /usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $app_name" "$info_plist" || true
}

resign_app() {
    local app_name=$1
    local dest="$DEST_DIR/$app_name"
    sudo rm -rf "$dest/Contents/_CodeSignature" || true
    sudo xattr -dr com.apple.quarantine "$dest" || true
    sudo codesign --force --deep --sign - --timestamp=none "$dest"
}

start_apps() {
    shift
    for app_name in "$@"; do open -n "$DEST_DIR/$app_name"; sleep 1; done
}

kill_wechat() {
    pkill -f "WeChat" || true
}

# 查找已存在的小绿书副本
list_existing_apps() {
    ls "$DEST_DIR" | grep "^$BASE_APP_NAME[0-9]*\.app$" || true
}

main() {
    case "${1:-}" in
        setup)
            check_wechat
            remove_app "${BASE_APP_NAME}.app"
            copy_wechat "${BASE_APP_NAME}.app"
            modify_bundle_id "${BASE_APP_NAME}.app"
            resign_app "${BASE_APP_NAME}.app"
            ;;
        start)
            start_apps "WeChat.app" "${BASE_APP_NAME}.app"
            ;;
        auto)
            check_wechat
            remove_app "${BASE_APP_NAME}.app"
            copy_wechat "${BASE_APP_NAME}.app"
            modify_bundle_id "${BASE_APP_NAME}.app"
            resign_app "${BASE_APP_NAME}.app"
            start_apps "WeChat.app" "${BASE_APP_NAME}.app"
            ;;
        multi)
            local count=${2:-2}
            check_wechat
            for i in $(seq 1 "$count"); do
                local app_name="${BASE_APP_NAME}${i}.app"
                remove_app "$app_name"
                copy_wechat "$app_name"
                modify_bundle_id "$app_name"
                resign_app "$app_name"
            done
            start_apps $(for i in $(seq 1 "$count"); do echo "${BASE_APP_NAME}${i}.app"; done)
            ;;
        rebuild)
            check_wechat
            echo -e "${BLUE}检测到系统更新或微信更新,正在重建副本...${NC}"
            local apps=$(list_existing_apps)
            for app_name in $apps; do
                echo -e "${YELLOW}重建 $app_name ...${NC}"
                remove_app "$app_name"
                copy_wechat "$app_name"
                modify_bundle_id "$app_name"
                resign_app "$app_name"
            done
            echo -e "${GREEN}✓ 所有副本已重新生成${NC}"
            ;;
        -k|kill)
            kill_wechat
            ;;
        -h|--help|"")
            echo "用法: $0 {setup|start|auto|multi N|rebuild|kill} [--force]"
            ;;
        *)
            echo -e "${RED}未知参数: $1${NC}"
            exit 1
            ;;
    esac
}

for arg in "$@"; do [[ $arg == "--force" ]] && FORCE=1; done
main "$@"

四、手动操作流程(可选)

如果你只想多开 1 次,可以手动操作:

  1. 复制应用

    bash 复制代码
    sudo cp -R /Applications/WeChat.app /Applications/小绿书.app
  2. 修改应用唯一标识符

    bash 复制代码
    sudo /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier net.maclub.wechat" /Applications/小绿书.app/Contents/Info.plist
  3. 重新签名应用

    bash 复制代码
    sudo codesign --force --deep --sign - /Applications/小绿书.app
  4. 验证结果

    打开 Finder > 应用程序,若能看到 小绿书.app(图标可能灰色或正常),即可双开。


五、多开操作(创建多个副本)

bash 复制代码
# 创建3个副本:小绿书1、小绿书2、小绿书3
sudo ./wechat-2.sh multi 3 --force

六、更新后自动重建副本

为什么需要重建?

  • 微信每次更新后,/Applications/WeChat.app 会被覆盖;
  • 之前生成的副本可能失效或无法正常启动;
  • 使用 rebuild 模式,可以自动检测所有小绿书副本并重新克隆

使用方法

bash 复制代码
# 一键重建已存在的所有副本
sudo ./wechat-2.sh rebuild --force

效果

  • 脚本会自动找到 /Applications/ 下所有 小绿书N.app
  • 删除旧副本并重新复制新版微信;
  • 重新生成 Bundle ID 并签名;
  • 保持原来的命名(小绿书1、小绿书2...)。

七、总结

  • 双开:适合 2 个账号同时使用;
  • 多开 :通过 multi 参数创建多个副本,实现无限多开;
  • 更新后重建 :使用 rebuild 一键重建所有副本,免去升级后的手动操作。

相关推荐
ghostwritten2 小时前
在 macOS 上安装 Claude Code 的完整指南
macos
二哈喇子!5 小时前
Java开发工具——IDEA(修改全局配置,提升工作效率)
java·编辑器·intellij-idea
C++ 老炮儿的技术栈5 小时前
在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
c语言·c++·windows·git·vscode·visual studio
强子感冒了5 小时前
Java网络编程学习笔记,从网络编程三要素到TCP/UDP协议
java·网络·学习
二哈喇子!5 小时前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
sin22015 小时前
MyBatis的执行流程
java·开发语言·mybatis
二哈喇子!5 小时前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
二哈喇子!5 小时前
基于Spring Boot框架的网络游戏虚拟交易平台的设计与实现
java·springboot·毕设项目
二哈喇子!5 小时前
JAVA环境变量配置步骤及测试(JDK的下载 & 安装 & 环境配置教程)
java·开发语言