70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
"""
|
|
고장코드 검색기 앱을 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() |