[patch] 优化打包逻辑 控制变量为日志产出 和 安装包整合路径统一

This commit is contained in:
2025-10-10 16:16:36 +08:00
parent 9ff009712a
commit 31ca5d0819
2 changed files with 31 additions and 47 deletions

View File

@@ -53,7 +53,7 @@ def build_with_command():
cmd = [
'pyinstaller',
'--name=main',
'--name=MultiPlatformGUI', # 直接使用最终目录名
'--onedir', # 相当于 --exclude-binaries
'--windowed', # 相当于 -w
'--icon=static/ai_assistant_icon_64.png', # 添加主程序图标
@@ -96,33 +96,32 @@ def build_with_command():
if result.returncode == 0:
print("✅ 打包成功!")
print("📁 打包结果: dist/main/")
print("📁 打包结果: dist/MultiPlatformGUI/")
# 重命名目录为统一的输出路径
if os.path.exists('dist/main'):
# 验证输出目录(不需要重命名了)
if os.path.exists('dist/MultiPlatformGUI/MultiPlatformGUI.exe'):
# PyInstaller 生成的 exe 名称是 MultiPlatformGUI.exe
# 重命名为 main.exe保持兼容性
try:
# 如果目标目录已存在,先删除
if os.path.exists('dist/MultiPlatformGUI'):
print("🗑️ 删除旧的 MultiPlatformGUI 目录...")
shutil.rmtree('dist/MultiPlatformGUI')
old_exe = 'dist/MultiPlatformGUI/MultiPlatformGUI.exe'
new_exe = 'dist/MultiPlatformGUI/main.exe'
# 重命名
os.rename('dist/main', 'dist/MultiPlatformGUI')
print("✅ 已重命名为: dist/MultiPlatformGUI/")
if os.path.exists(new_exe):
os.remove(new_exe)
# 验证重命名结果
if os.path.exists('dist/MultiPlatformGUI/main.exe'):
exe_size = os.path.getsize('dist/MultiPlatformGUI/main.exe') / 1024 / 1024
print(f"✅ 主程序验证通过: main.exe ({exe_size:.1f} MB)")
else:
print("⚠️ 重命名后主程序文件验证失败")
os.rename(old_exe, new_exe)
print("✅ 主程序已重命名: MultiPlatformGUI.exe → main.exe")
exe_size = os.path.getsize(new_exe) / 1024 / 1024
print(f"✅ 主程序验证通过: main.exe ({exe_size:.1f} MB)")
except Exception as e:
print(f"⚠️ 重命名失败: {e}")
print("💡 可以手动重命名: dist/main -> dist/MultiPlatformGUI")
print("📁 当前可用路径: dist/main/")
print(f"⚠️ 重命名主程序失败: {e}")
elif os.path.exists('dist/MultiPlatformGUI/main.exe'):
# 如果已经是 main.exe直接验证
exe_size = os.path.getsize('dist/MultiPlatformGUI/main.exe') / 1024 / 1024
print(f"✅ 主程序验证通过: main.exe ({exe_size:.1f} MB)")
else:
print("⚠️ 未找到 dist/main 目录,重命名跳过")
print("⚠️ 未找到主程序文件")
# 创建使用说明
try:
@@ -237,23 +236,23 @@ def verify_result():
"""验证打包结果"""
print("\n🔍 验证打包结果...")
# 优先检查MultiPlatformGUI(标准输出目录)
# 检查MultiPlatformGUI目录(统一输出目录)
target_dir = "dist/MultiPlatformGUI"
fallback_dir = "dist/main"
if os.path.exists(target_dir):
return _verify_directory(target_dir)
elif os.path.exists(fallback_dir):
print(f"⚠️ 发现备用目录: {fallback_dir}")
print("💡 建议重命名为: dist/MultiPlatformGUI")
return _verify_directory(fallback_dir)
else:
print("❌ 未找到任何打包输出目录")
print("❌ 未找到打包输出目录: dist/MultiPlatformGUI")
print("💡 请检查 PyInstaller 执行是否成功")
return False
def _verify_directory(base_dir):
"""验证指定目录的打包结果"""
# 检查可能的 exe 名称
exe_path = f"{base_dir}/main.exe"
if not os.path.exists(exe_path):
exe_path = f"{base_dir}/MultiPlatformGUI.exe"
internal_dir = f"{base_dir}/_internal"
dll_path = f"{base_dir}/_internal/Utils/PythonNew32/SaiNiuApi.dll"
static_dir = f"{base_dir}/_internal/static"
@@ -339,15 +338,11 @@ def main():
print("\n" + "=" * 60)
print("🎉 打包完成!")
# 智能显示可用路径
# 显示打包结果
if os.path.exists("dist/MultiPlatformGUI"):
print("📁 打包结果: dist/MultiPlatformGUI/")
print("🚀 运行方式: cd dist/MultiPlatformGUI && .\\main.exe")
print("📦 安装包构建: python installer/build_installer.py")
elif os.path.exists("dist/main"):
print("📁 打包结果: dist/main/")
print("🚀 运行方式: cd dist/main && .\\main.exe")
print("⚠️ 建议重命名: dist/main -> dist/MultiPlatformGUI")
print("=" * 60)