add install git

This commit is contained in:
zj
2026-02-14 14:39:44 +08:00
parent d2f919c831
commit 2ae2837ddc
8 changed files with 560 additions and 23 deletions

View File

@@ -29,7 +29,7 @@ def check_python_version():
def install_dependencies():
"""安装打包所需的依赖"""
print("\n[1/4] 安装依赖...")
print("\n[1/5] 安装依赖...")
deps = ["pyinstaller"]
@@ -47,7 +47,7 @@ def install_dependencies():
def clean_build():
"""清理之前的构建文件"""
print("\n[2/4] 清理构建文件...")
print("\n[2/5] 清理构建文件...")
dirs_to_remove = ["build", "dist"]
files_to_remove = ["*.pyc", "*.spec"]
@@ -69,12 +69,12 @@ def clean_build():
def build_executable():
"""使用 PyInstaller 打包"""
print("\n[3/4] 开始打包...")
print("\n[3/5] 开始打包...")
# 打包命令
# 打包命令 - 输出为 .bin 文件wrapper 脚本将调用它
cmd = [
sys.executable, "-m", "PyInstaller",
"--name=LinuxGrubRepair",
"--name=LinuxGrubRepair.bin",
"--onefile",
"--console",
"--clean",
@@ -93,23 +93,81 @@ def build_executable():
return False
def show_result():
"""显示打包结果"""
print("\n[4/4] 打包完成!")
def create_launcher():
"""创建启动器脚本,解决 X11 字体渲染问题"""
print("\n[4/5] 创建启动器脚本...")
launcher_content = '''#!/bin/bash
# ==============================================================================
# BootRepairTool 启动脚本
# 解决 Arch Linux 等系统上的 X11 字体渲染问题
# ==============================================================================
# 获取脚本实际所在目录(处理软链接情况)
SCRIPT_SOURCE="${BASH_SOURCE[0]}"
while [ -L "$SCRIPT_SOURCE" ]; do
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
SCRIPT_SOURCE="$(readlink "$SCRIPT_SOURCE")"
[[ $SCRIPT_SOURCE != /* ]] && SCRIPT_SOURCE="$SCRIPT_DIR/$SCRIPT_SOURCE"
done
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
# 如果是从 /bin 软链接启动,则使用实际安装目录
if [ "$SCRIPT_DIR" = "/bin" ] || [ "$SCRIPT_DIR" = "/usr/bin" ]; then
SCRIPT_DIR="/opt/boot-repair-tool"
fi
# 设置字体渲染环境变量,解决 "BadLength (poly request too large)" 错误
export XLIB_SKIP_ARGB_VISUALS=1
# 禁用某些 X11 RENDER 扩展功能
export GDK_NATIVE_WINDOWS=1
# 设置 tkinter 使用基本字体渲染
export TCL_DONT_USE_RENDER_EXTENSION=1
# 如果使用 Wayland强制使用 XWayland
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
export GDK_BACKEND=x11
fi
# 执行实际程序
exec "${SCRIPT_DIR}/LinuxGrubRepair.bin" "$@"
'''
dist_path = os.path.join(os.getcwd(), "dist")
exe_name = "LinuxGrubRepair"
exe_path = os.path.join(dist_path, exe_name)
launcher_path = os.path.join(dist_path, "LinuxGrubRepair")
if os.path.exists(exe_path):
size = os.path.getsize(exe_path)
size_mb = size / (1024 * 1024)
print(f"\n 可执行文件: {exe_path}")
print(f" 文件大小: {size_mb:.2f} MB")
with open(launcher_path, 'w') as f:
f.write(launcher_content)
# 设置可执行权限
os.chmod(launcher_path, 0o755)
print(f" ✓ 启动器创建完成: {launcher_path}")
return True
def show_result():
"""显示打包结果"""
print("\n[5/5] 打包完成!")
dist_path = os.path.join(os.getcwd(), "dist")
launcher_name = "LinuxGrubRepair"
bin_name = "LinuxGrubRepair.bin"
launcher_path = os.path.join(dist_path, launcher_name)
bin_path = os.path.join(dist_path, bin_name)
if os.path.exists(launcher_path) and os.path.exists(bin_path):
bin_size = os.path.getsize(bin_path)
bin_size_mb = bin_size / (1024 * 1024)
print(f"\n 启动器: {launcher_path}")
print(f" 程序文件: {bin_path}")
print(f" 文件大小: {bin_size_mb:.2f} MB")
print("\n 使用方式:")
print(f" sudo ./{exe_name}")
print(f" sudo ./{launcher_name}")
print("\n 注意: 启动器脚本已配置 X11 环境变量,可解决字体渲染问题")
else:
print(" 未找到生成的可执行文件")
print(" 未找到生成的文件")
def main():
@@ -135,6 +193,11 @@ def main():
print("打包失败")
sys.exit(1)
# 创建启动器
if not create_launcher():
print("创建启动器失败")
sys.exit(1)
# 显示结果
show_result()