-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild_exe.py
More file actions
142 lines (121 loc) · 4.81 KB
/
build_exe.py
File metadata and controls
142 lines (121 loc) · 4.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import os
import subprocess
import sys
def install_pyinstaller():
"""Install PyInstaller if not available"""
try:
import PyInstaller
print("✅ PyInstaller already installed")
except ImportError:
print("📦 Installing PyInstaller...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "pyinstaller"])
print("✅ PyInstaller installed successfully")
def create_exe():
"""Create executable file"""
print("🔨 Building VisionAI executable...")
# Use python -m PyInstaller to avoid PATH issues
cmd = [
sys.executable, "-m", "PyInstaller",
"--onefile",
"--noconsole",
"--name=VisionAI",
"--distpath=dist",
"--workpath=build",
"--specpath=."
]
# Add data files if they exist
if os.path.exists("yolov8n.pt"):
cmd.extend(["--add-data", "yolov8n.pt;."])
cmd.append("vision_ai.py")
try:
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print("✅ Executable created successfully!")
print("📁 Location: dist/VisionAI.exe")
if os.path.exists("dist/VisionAI.exe"):
size_mb = os.path.getsize("dist/VisionAI.exe") / (1024*1024)
print(f"📋 File size: {size_mb:.1f} MB")
return True
else:
print(f"❌ PyInstaller error: {result.stderr}")
return False
except Exception as e:
print(f"❌ Error running PyInstaller: {e}")
return False
def create_installer_script():
"""Create a simple installer batch script"""
installer_content = '''@echo off
echo ========================================
echo VisionAI - Smart Camera Detection
echo ========================================
echo.
echo 📦 Installing VisionAI...
REM Create installation directory
if not exist "C:\\VisionAI" mkdir "C:\\VisionAI"
REM Copy executable
if exist "VisionAI.exe" (
copy "VisionAI.exe" "C:\\VisionAI\\VisionAI.exe"
) else (
echo ❌ VisionAI.exe not found!
pause
exit /b 1
)
REM Create desktop shortcut
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%USERPROFILE%\\Desktop\\VisionAI.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\\VisionAI\\VisionAI.exe" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "C:\\VisionAI" >> CreateShortcut.vbs
echo oLink.Description = "VisionAI Smart Camera Detection" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
REM Create start menu shortcut
if not exist "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\VisionAI" mkdir "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\VisionAI"
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateStartMenu.vbs
echo sLinkFile = "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\VisionAI\\VisionAI.lnk" >> CreateStartMenu.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateStartMenu.vbs
echo oLink.TargetPath = "C:\\VisionAI\\VisionAI.exe" >> CreateStartMenu.vbs
echo oLink.WorkingDirectory = "C:\\VisionAI" >> CreateStartMenu.vbs
echo oLink.Description = "VisionAI Smart Camera Detection" >> CreateStartMenu.vbs
echo oLink.Save >> CreateStartMenu.vbs
cscript CreateStartMenu.vbs
del CreateStartMenu.vbs
echo.
echo ✅ VisionAI installed successfully!
echo 📍 Location: C:\\VisionAI\\VisionAI.exe
echo 🖥️ Desktop shortcut created
echo 📋 Start menu shortcut created
echo.
echo Press any key to exit...
pause >nul
'''
with open("dist/Install_VisionAI.bat", "w") as f:
f.write(installer_content)
print("✅ Installer script created: dist/Install_VisionAI.bat")
def main():
print("🚀 VisionAI Executable Builder")
print("=" * 40)
# Check if required files exist
if not os.path.exists("vision_ai.py"):
print("❌ vision_ai.py not found!")
return
# Install PyInstaller
install_pyinstaller()
# Create executable
if create_exe():
create_installer_script()
print("\n🎉 Build completed successfully!")
print("\n📦 Distribution files:")
print(" • dist/VisionAI.exe (Main executable)")
print(" • dist/Install_VisionAI.bat (Installer script)")
print("\n📋 To distribute:")
print(" 1. Copy both files to target PC")
print(" 2. Run Install_VisionAI.bat as Administrator")
print(" 3. VisionAI will be installed and shortcuts created")
print("\n⚠️ Note: First run may be slow as it extracts files")
else:
print("❌ Build failed! Try the portable version instead:")
print(" python create_portable.py")
if __name__ == "__main__":
main()