Files
shuidrop_gui/build_production.py
2025-10-11 16:04:35 +08:00

117 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
生产环境打包脚本 - 自动禁用日志功能
"""
import os
import shutil
import subprocess
def disable_logging():
"""自动禁用所有日志功能"""
print("Disabling logging functionality...")
# 备份原文件
files_to_backup = ['main.py', 'exe_file_logger.py']
for file_name in files_to_backup:
if os.path.exists(file_name):
shutil.copy(file_name, f'{file_name}.backup')
print(f"Backed up {file_name}")
# 1. 修改 main.py - 注释掉日志初始化
if os.path.exists('main.py'):
with open('main.py', 'r', encoding='utf-8') as f:
content = f.read()
# 注释掉日志相关的导入和初始化
content = content.replace(
'from exe_file_logger import setup_file_logging, log_to_file',
'# from exe_file_logger import setup_file_logging, log_to_file # 生产环境禁用'
).replace(
'setup_file_logging()',
'# setup_file_logging() # 生产环境禁用'
).replace(
'print("文件日志系统已在main.py中初始化")',
'# print("文件日志系统已在main.py中初始化") # 生产环境禁用'
)
with open('main.py', 'w', encoding='utf-8') as f:
f.write(content)
print("Disabled logging in main.py")
# 2. 修改 exe_file_logger.py - 让所有函数变成空操作
if os.path.exists('exe_file_logger.py'):
with open('exe_file_logger.py', 'r', encoding='utf-8') as f:
content = f.read()
# 将 setup_file_logging 函数替换为空函数
content = content.replace(
'def setup_file_logging():',
'def setup_file_logging():\n """生产环境 - 禁用文件日志"""\n return None\n\ndef setup_file_logging_original():'
).replace(
'def log_to_file(message):',
'def log_to_file(message):\n """生产环境 - 禁用文件日志"""\n pass\n\ndef log_to_file_original(message):'
)
with open('exe_file_logger.py', 'w', encoding='utf-8') as f:
f.write(content)
print("Disabled logging in exe_file_logger.py")
print("All logging functionality disabled")
def restore_logging():
"""恢复日志功能"""
files_to_restore = ['main.py', 'exe_file_logger.py']
for file_name in files_to_restore:
backup_file = f'{file_name}.backup'
if os.path.exists(backup_file):
shutil.copy(backup_file, file_name)
os.remove(backup_file)
print(f"Restored {file_name}")
print("All files restored to development configuration")
def main():
"""主函数"""
print("Production Build Tool (No Logging Version)")
print("=" * 60)
try:
# 1. 禁用日志功能
disable_logging()
# 2. 执行打包
print("\nStarting build...")
result = subprocess.run(['python', 'quick_build.py'], capture_output=False)
if result.returncode == 0:
# 验证最终输出quick_build.py 已统一输出到 MultiPlatformGUI
if os.path.exists('dist/MultiPlatformGUI'):
print("\nProduction build completed successfully!")
print("Output directory: dist/MultiPlatformGUI/")
print("All logging disabled - client will not generate log files")
# 验证关键文件
exe_path = 'dist/MultiPlatformGUI/main.exe'
if os.path.exists(exe_path):
size = os.path.getsize(exe_path) / 1024 / 1024 # MB
print(f"Main executable: main.exe ({size:.1f} MB)")
else:
print("WARNING: Main executable not found")
else:
print("\nERROR: Output directory verification failed - dist/MultiPlatformGUI not found")
else:
print("\nERROR: Build failed")
except Exception as e:
print(f"ERROR: Build process error: {e}")
finally:
# 3. 恢复日志功能(用于开发)
print("\nRestoring development configuration...")
restore_logging()
print("\n" + "=" * 60)
if __name__ == "__main__":
main()