#!/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") 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()