""" 고장코드 검색기 앱을 PyInstaller를 사용하여 직접 빌드하는 스크립트 """ import os import subprocess import shutil from pathlib import Path def build_app(): """PyInstaller를 사용하여 앱을 빌드합니다.""" print("고장코드 검색기 앱 빌드를 시작합니다...") # 1. 빌드 디렉토리 정리 build_dir = Path("build") dist_dir = Path("dist") for dir_path in [build_dir, dist_dir]: if dir_path.exists(): shutil.rmtree(dir_path) print(f"{dir_path} 디렉토리를 삭제했습니다.") # 2. 필요한 파일 준비 icon_path = "assets/app_icon.png" if not os.path.exists(icon_path): print(f"경고: 아이콘 파일이 없습니다. 기본 아이콘이 사용됩니다.") # 3. 앱 ID 및 이름 설정 app_name = "고장코드검색기" company_name = "신평-Choi KyungHwan" # 4. PyInstaller 명령어 구성 cmd = [ "pyinstaller", "--name", app_name, "--onefile", # 단일 실행 파일로 빌드 "--windowed", # 콘솔 창 표시 안 함 "--clean", # 빌드 전 이전 빌드 파일 정리 "--noconfirm", # 기존 빌드 파일 덮어쓰기 확인 안 함 "--add-data", "database;database", # 데이터베이스 모듈 포함 "--add-data", "ui;ui", # UI 모듈 포함 "--add-data", "fault_codes.db;.", # 데이터베이스 파일 포함 ] # 아이콘이 있는 경우 추가 if os.path.exists(icon_path): cmd.extend(["--icon", icon_path]) # 메인 스크립트 추가 cmd.append("main.py") # 5. PyInstaller 실행 print("명령어 실행:", " ".join(cmd)) try: subprocess.run(cmd, check=True) print("앱 빌드 완료!") # 빌드된 실행 파일 경로 exe_path = Path(f"dist/{app_name}.exe") if exe_path.exists(): print(f"실행 파일이 생성되었습니다: {exe_path}") else: print("실행 파일을 찾을 수 없습니다. 빌드 로그를 확인하세요.") except subprocess.CalledProcessError as e: print(f"빌드 중 오류 발생: {e}") except Exception as e: print(f"예상치 못한 오류 발생: {e}") if __name__ == "__main__": build_app()