@echo off cd /d "%~dp0" echo ====================================== echo Ultimate Investment Tool - Build EXE echo ====================================== echo. echo Installing dependencies... python -m pip install pyinstaller tinyaes matplotlib --quiet if errorlevel 1 ( echo ERROR: pip failed. Make sure Python is installed and on PATH. pause exit /b 1 ) echo. echo Copying source files from dist\ for bundling... copy /Y dist\screener_gui.py screener_gui.py >nul copy /Y dist\stock_screener.py stock_screener.py >nul echo Building executable... echo. python -m PyInstaller ^ --onefile ^ --windowed ^ --key "UIT-K3y-2025-Ultr4Inv3st" ^ --name "StockScreener" ^ --hidden-import pandas ^ --hidden-import numpy ^ --hidden-import yfinance ^ --hidden-import requests ^ --hidden-import lxml ^ --hidden-import lxml.etree ^ --hidden-import html5lib ^ --hidden-import bs4 ^ --hidden-import appdirs ^ --hidden-import platformdirs ^ --hidden-import tkinter ^ --hidden-import tkinter.ttk ^ --hidden-import tkinter.messagebox ^ --hidden-import screener_gui ^ --hidden-import stock_screener ^ --hidden-import matplotlib ^ --hidden-import matplotlib.backends.backend_tkagg ^ --hidden-import matplotlib.figure ^ --hidden-import matplotlib.dates ^ --hidden-import matplotlib.ticker ^ --hidden-import winreg ^ --hidden-import hwid ^ --hidden-import license_check ^ --hidden-import activation_dialog ^ --hidden-import updater ^ --collect-all yfinance ^ --collect-all matplotlib ^ launcher.py if errorlevel 1 ( echo. echo BUILD FAILED. See errors above. echo. echo NOTE: If the error mentions '--key' or 'tinyaes', your PyInstaller version echo may not support bytecode encryption. Remove the '--key' line above echo and rebuild. Encryption requires PyInstaller 5.x + tinyaes. echo. echo Cleaning up temporary files... if exist screener_gui.py del screener_gui.py if exist stock_screener.py del stock_screener.py pause exit /b 1 ) echo. echo Cleaning up temporary source copies from project root... if exist screener_gui.py del screener_gui.py if exist stock_screener.py del stock_screener.py echo. echo ====================================== echo SUCCESS! echo. echo Folder: dist\ echo - StockScreener.exe (distribute this) echo - screener_gui.py (distribute alongside exe) echo - stock_screener.py (distribute alongside exe) echo. echo DO NOT distribute: echo - issue_license.py (admin only) echo - supabase_schema.sql (admin only) echo - hwid.py / license_check.py / updater.py / activation_dialog.py echo (these are bundled inside the exe) echo ====================================== pause