diff --git a/build.py b/build.py index 1c688a3..aa23f4b 100644 --- a/build.py +++ b/build.py @@ -1,23 +1,49 @@ import os +import shutil +import tempfile import PyInstaller.__main__ -from distutils.sysconfig import get_python_lib -site_packages_path = get_python_lib() - -NAME = "IW4MAdmin_DB_Parser" +NAME = "IW4MAdminDBParser" SCRIPT = "parse_db.py" ICON = "assets/icon.png" +BUILD_DIR = "build" +DIST_DIR = "dist" +SPEC_FILE = NAME + ".spec" +# Run PyInstaller to create the executable PyInstaller.__main__.run([ - "{}".format(SCRIPT), - '--name', f"{NAME}", + SCRIPT, + '--name', NAME, "--noconfirm", "--onefile", "--windowed", - "--icon", f"{ICON}" + "--icon", ICON, + '--distpath', BUILD_DIR, # Specify custom build output folder + '--clean' # Clean PyInstaller cache and remove temporary files before building ]) -# create symbolic hardlink to main directory -if os.path.exists("combine_db.exe"): - os.remove("combine_db.exe") -os.link('dist/IW4MAdmin_DB_Parser.exe', 'IW4MAdmin_DB_Parser.exe') \ No newline at end of file +# Remove SPEC file +if os.path.exists(SPEC_FILE): + os.remove(SPEC_FILE) + +# Temporarily move the executable to a safe location +temp_dir = tempfile.mkdtemp() +exe_path = os.path.join(BUILD_DIR, NAME + '.exe') +temp_exe_path = os.path.join(temp_dir, NAME + '.exe') +if os.path.exists(exe_path): + shutil.move(exe_path, temp_exe_path) + +# Remove the 'build' directory, which includes the subfolder and its contents +if os.path.isdir(BUILD_DIR): + shutil.rmtree(BUILD_DIR) + +# Recreate the 'build' directory and move the executable back +os.makedirs(BUILD_DIR, exist_ok=True) +shutil.move(temp_exe_path, os.path.join(BUILD_DIR, NAME + '.exe')) + +# Clean up the temporary directory +shutil.rmtree(temp_dir) + +# Remove the 'dist' directory if it exists +if os.path.isdir(DIST_DIR): + shutil.rmtree(DIST_DIR) \ No newline at end of file