跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / BashWeChat

macOS 微信多开与更新重建脚本实战

macOS 环境下通过 Shell 脚本实现微信多开及更新后自动重建副本。核心原理为复制应用包、修改 Bundle ID 并重新签名。提供一键执行脚本,支持双开、多开及更新维护,解决手动操作繁琐问题。

深海蔚蓝发布于 2025/11/21更新于 2026/6/1216 浏览
macOS 微信多开与更新重建脚本实战

macOS 微信多开与更新重建脚本实战

准备工作

确保系统为 macOS,并已正确安装官方微信(默认路径:/Applications/WeChat.app)。终端操作需具备 sudo 权限。

一键脚本方案

推荐直接使用脚本管理,避免重复劳动。我们需要创建一个 Shell 脚本来封装复制、重命名和签名的逻辑。相比手动修改 Bundle ID 和签名,脚本能大幅降低出错概率。

创建脚本文件

在终端进入用户主目录并新建文件:

cd ~
touch wechat-2.sh
编辑脚本内容

你可以使用 VS Code、系统文本编辑器或终端内置的 nano 打开文件。将下方格式化后的脚本粘贴进去保存。

提示:如果习惯图形界面,推荐使用 VS Code;若仅用终端,nano 足够便捷。

#!/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 


() {
     [ ! -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 
"$cmd"
done
check_wechat
if
"$WECHAT_APP"
then
echo
"${RED}未找到微信:$WECHAT_APP${NC}"
exit
fi
echo
"${GREEN}✓ 检测到微信已安装${NC}"
remove_app
local
"$DEST_DIR/$1"
if
"$dest"
then
if
$FORCE
then
sudo
rm
"$dest"
else
read
"是否删除并重新创建 $1? (y/n): "
$yn
sudo
rm
"$dest"
fi
fi
copy_wechat
local
$1
sudo
"$WECHAT_APP"
"$DEST_DIR/$app_name"
modify_bundle_id
local
$1
local
"$DEST_DIR/$app_name/Contents/Info.plist"
local
"com.tencent.xinWeChat.dual.$RANDOM"
sudo
"Set :CFBundleIdentifier $new_id"
"$info_plist"
sudo
"Set :CFBundleDisplayName $app_name"
"$info_plist"
true
resign_app
local
$1
local
"$DEST_DIR/$app_name"
sudo
rm
"$dest/Contents/_CodeSignature"
true
sudo
"$dest"
true
sudo
"$dest"
start_apps
shift
for
in
"$@"
do
"$DEST_DIR/$app_name"
sleep
done
kill_wechat
"WeChat"
true
list_existing_apps
ls
"$DEST_DIR"
"^$BASE_APP_NAME[0-9]*\.app$"
true
main
case
"${1:-}"
in
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"WeChat.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"WeChat.app"
"${BASE_APP_NAME}.app"
local
${2:-2}
for
in
seq
"$count"
do
local
"${BASE_APP_NAME}${i}.app"
"$app_name"
"$app_name"
"$app_name"
"$app_name"
done
for
in
seq
"$count"
do
echo
"${BASE_APP_NAME}${i}.app"
done
echo
"${BLUE}检测到系统更新或微信更新,正在重建副本...${NC}"
local
for
in
$apps
do
echo
"${YELLOW}重建 $app_name ...${NC}"
"$app_name"
"$app_name"
"$app_name"
"$app_name"
done
echo
"${GREEN}✓ 所有副本已重新生成${NC}"
kill
help
""
echo
"用法:$0 {setup|start|auto|multi N|rebuild|kill} [--force]"
echo
"${RED}未知参数:$1${NC}"
exit
esac
for
in
"$@"
do
$arg
"--force"
done
"$@"
赋予执行权限

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

chmod +x wechat-2.sh

此时 wechat-2.sh 已成为可执行文件。

运行脚本

关闭所有微信进程

sudo ./wechat-2.sh kill

首次运行(自动复制 + 双开)

sudo ./wechat-2.sh auto --force

系统会提示输入管理员密码,输入时不会显示字符,输完回车即可。

多开运行(生成多个副本)

sudo ./wechat-2.sh multi 3 --force

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

更新后重建副本

sudo ./wechat-2.sh rebuild --force

常用命令速查

  • 双开/多开:sudo ./wechat-2.sh multi N --force,N 代表副本数量。
  • 更新重建:微信升级后原副本失效,用 rebuild 模式一键恢复。
  • 清理进程:sudo ./wechat-2.sh kill,防止端口冲突。

为什么需要重建?

微信每次更新后,/Applications/WeChat.app 会被覆盖,之前生成的副本可能因签名失效或 Bundle ID 冲突而无法启动。使用 rebuild 模式,脚本会自动检测所有'小绿书'副本并重新克隆,保持原来的命名和唯一标识符。

总结

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

注意:本脚本仅供学习和研究使用,请自行评估风险。若因操作导致系统异常或其他损失,由使用者本人承担。

目录

  1. macOS 微信多开与更新重建脚本实战
  2. 准备工作
  3. 一键脚本方案
  4. 创建脚本文件
  5. 编辑脚本内容
  6. macOS WeChat Multi Instance Script
  7. Usage:
  8. sudo ./wechat-2.sh auto --force
  9. sudo ./wechat-2.sh multi 3 --force # 多开 3 个副本
  10. sudo ./wechat-2.sh rebuild --force # 更新后自动重建所有副本
  11. 颜色定义
  12. 默认路径
  13. 赋予执行权限
  14. 运行脚本
  15. 常用命令速查
  16. 为什么需要重建?
  17. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 期刊论文智能写作:从“难产”到“高产”的破局之道
  • AIGC 时代的网络安全威胁与应急响应机制构建
  • 无人机地面站 QGC 在 Ubuntu 20.04 环境下的安装步骤
  • Android 架构演进:MVC、MVP 与 MVVM 深度解析
  • Llama-3.2-3B 在 Ollama 中启用 GPU 加速(CUDA/cuDNN)全流程
  • 字节跳动 Java 后端开发面试题精选
  • OpenAI 发布 GPT-4o 多模态模型及接入方式详解
  • KingbaseES 数据库 MySQL 兼容性解析与自动化迁移方案
  • Python Pandas 数据处理核心指南
  • 城市场景下无人机三维路径规划的多目标粒子群优化算法 NMOPSO
  • 全排列问题回溯解法(C++ 实现)
  • AI Agent 架构:基础组成模块深度解析
  • Python 学习路线:从入门到精通的完整指南
  • React 集成 Microi 吾码低代码平台开发指南
  • Windows 编译 SD Flash-Attention 2.8.0 Wheel
  • FPGA 自适应滤波算法实现:LMS 到 RLS 及 Verilog 代码与案例
  • 基于 MCP Server - Figma AI Bridge 自动生成前端代码
  • 基于 YOLO 与 LLM 的 Web 视觉分析系统(Django+Vue3)
  • 文件哈希批量计算工具 HashCalculator 使用指南
  • GitHub Copilot 订阅取消操作指南

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online