-
Notifications
You must be signed in to change notification settings - Fork 56
/
Copy pathinstall_mac_launchd.sh
executable file
·97 lines (78 loc) · 3.88 KB
/
install_mac_launchd.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
echo "请输入您的密码以提升权限:"
sudo -v
echo "正在拉取最新版本的仓库..."
cd /tmp
rm -rf LiteLoader
git clone https://github.com/LiteLoaderQQNT/LiteLoaderQQNT.git LiteLoader
# 移动到安装目录
echo "拉取完成,正在安装LiteLoader..."
sudo cp -f LiteLoader/src/preload.js /Applications/QQ.app/Contents/Resources/app/application/preload.js
# 如果目标目录存在且不为空,则先备份处理
if [ -e "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader" ]; then
# 删除上次的备份
rm -rf "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader_bak"
# 将已存在的目录重命名为LiteLoader_bak
mv "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader" "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader_bak"
echo "已将原LiteLoader目录备份为LiteLoader_bak"
fi
# 移动LiteLoader
mv -f LiteLoader $HOME/Library/Containers/com.tencent.qq/Data/Documents/
# 如果LiteLoader_bak中存在plugins文件夹,则复制到新的LiteLoader目录
if [ -d "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader_bak/plugins" ]; then
cp -r "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader_bak/plugins" "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/"
echo "已将 LiteLoader_bak 中旧插件Plugins复制到新的 LiteLoader 目录"
fi
# 如果LiteLoader_bak中存在data文件夹,则复制到新的LiteLoader目录
if [ -d "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader_bak/data" ]; then
cp -r "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader_bak/data" "$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/"
echo "已将 LiteLoader_bak 中旧数据文件data复制到新的 LiteLoader 目录"
fi
read -p "是否通过环境变量修改插件目录 (y/N): " modify_env_choice
if [ "$modify_env_choice" = "y" ] || [ "$modify_env_choice" = "Y" ]; then
# 自定义插件,默认为~/.config/LiteLoader-Plugins
read -p "请输入LiteLoader插件目录(默认为$HOME/.config/LiteLoader-Plugins): " custompluginsDir
pluginsDir=${custompluginsDir:-"$HOME/.config/LiteLoader-Plugins"}
echo "插件目录: $pluginsDir"
config_file="/etc/launchd.conf"
# 检查是否已存在LITELOADERQQNT_PROFILE
if grep -q "export LITELOADERQQNT_PROFILE=" "$config_file"; then
read -p "LITELOADERQQNT_PROFILE 已存在,是否要修改? (y/n): " modify_choice
if [ "$modify_choice" = "y" ] || [ "$modify_choice" = "Y" ]; then
# 如果用户同意修改,则替换原有的行
sed -i '' 's|export LITELOADERQQNT_PROFILE=.*|export LITELOADERQQNT_PROFILE="'$pluginsDir'"|' "$config_file"
echo "LITELOADERQQNT_PROFILE 已修改为: $pluginsDir"
else
echo "未修改 LITELOADERQQNT_PROFILE。"
fi
else
# 如果不存在,则添加新的行
echo 'export LITELOADERQQNT_PROFILE="'$pluginsDir'"' >> "$config_file"
echo "已添加 LITELOADERQQNT_PROFILE: $pluginsDir"
fi
fi
launchctl setenv LITELOADERQQNT_PROFILE $pluginsDir
# 进入安装目录
cd /Applications/QQ.app/Contents/Resources/app/app_launcher
# 修改index.js
echo "正在修补index.js..."
# 检查是否已存在相同的修改
if grep -q "require('$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader');" index.js; then
echo "index.js 已包含相同的修改,无需再次修改。"
else
# 如果不存在,则进行修改
sudo sed -i '' "1i\\
require('$HOME/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader');\
" index.js
echo "已修补 index.js。"
fi
echo "安装完成!脚本将在3秒后退出..."
# 清理临时文件
rm -rf /tmp/LiteLoader
# 错误处理
if [ $? -ne 0 ]; then
echo "发生错误,安装失败"
exit 1
fi
# 等待3秒后退出
sleep 3
exit 0