Files
shuidrop_gui/build_production.py

151 lines
5.6 KiB
Python
Raw Permalink 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 -*-
"""
Production build script - Automatically disable logging functionality
"""
import os
import shutil
import subprocess
import sys
# Ensure script runs in correct directory
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
os.chdir(SCRIPT_DIR)
print(f"Working directory: {SCRIPT_DIR}")
def disable_logging():
"""Disable all logging functionality"""
print("Disabling logging functionality...")
# Backup original files
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. Modify main.py - comment out logging initialization
if os.path.exists('main.py'):
with open('main.py', 'r', encoding='utf-8') as f:
content = f.read()
# Comment out logging related imports and initialization
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 # Production disabled'
).replace(
'setup_file_logging()',
'# setup_file_logging() # Production disabled'
).replace(
'print("文件日志系统已在main.py中初始化")',
'# print("文件日志系统已在main.py中初始化") # Production disabled'
)
with open('main.py', 'w', encoding='utf-8') as f:
f.write(content)
print("Disabled logging in main.py")
# 2. Modify exe_file_logger.py - make all functions no-op
if os.path.exists('exe_file_logger.py'):
with open('exe_file_logger.py', 'r', encoding='utf-8') as f:
content = f.read()
# Replace setup_file_logging function with empty function
content = content.replace(
'def setup_file_logging():',
'def setup_file_logging():\n """Production - Logging disabled"""\n return None\n\ndef setup_file_logging_original():'
).replace(
'def log_to_file(message):',
'def log_to_file(message):\n """Production - Logging disabled"""\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():
"""Restore logging functionality"""
print("Restoring development configuration...")
files_to_restore = ['main.py', 'exe_file_logger.py']
restored_count = 0
for file_name in files_to_restore:
backup_file = f'{file_name}.backup'
try:
if os.path.exists(backup_file):
# Ensure target file is writable
if os.path.exists(file_name):
os.chmod(file_name, 0o666)
shutil.copy(backup_file, file_name)
os.remove(backup_file)
print(f"[OK] Restored {file_name}")
restored_count += 1
else:
print(f"[WARN] Backup file not found: {backup_file}")
except Exception as e:
print(f"[ERROR] Failed to restore {file_name}: {e}")
if restored_count == len(files_to_restore):
print("[OK] All files restored to development configuration")
else:
print(f"[WARN] Restored {restored_count}/{len(files_to_restore)} files")
def main():
"""Main function"""
print("Production Build Tool (No Logging Version)")
print("=" * 60)
try:
# 1. Disable logging functionality
disable_logging()
# 2. Execute build
print("\nStarting build...")
result = subprocess.run(['python', 'quick_build.py'], capture_output=False)
if result.returncode == 0:
# Verify output (quick_build.py outputs to 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")
# Verify key 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")
# 🔥 关键修复添加PyMiniRacer DLL修复步骤
print("\nPyMiniRacer DLL fix phase started...")
try:
import fix_pyminiracer_dll
if fix_pyminiracer_dll.auto_fix_after_build():
print("PyMiniRacer DLL fix completed")
else:
print("WARNING: PyMiniRacer DLL fix failed")
except Exception as e:
print(f"WARNING: PyMiniRacer DLL fix error: {e}")
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. Restore logging functionality (for development)
print()
restore_logging()
print("\n" + "=" * 60)
if __name__ == "__main__":
main()