add install git
This commit is contained in:
97
build.py
97
build.py
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user