17ec207852
Adds error handling to MSI installer creation steps in the Windows build workflow to prevent failures from stopping subsequent ZIP creation. Updates ZIP creation logic to use the dist output directory. Removes the install_icon option from setup.py to address potential MSI build issues.
116 lines
3.3 KiB
Python
116 lines
3.3 KiB
Python
"""
|
|
cx_Freeze setup script for YTSage
|
|
Supports building executables, MSI installers, and ZIP distributions
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
from cx_Freeze import setup, Executable
|
|
|
|
# Build options for executable
|
|
build_exe_options = {
|
|
# Let cx_Freeze auto-discover packages from main.py instead of explicit listing
|
|
"packages": [
|
|
"PySide6.QtCore",
|
|
"PySide6.QtGui",
|
|
"PySide6.QtWidgets",
|
|
# Additional packages that might be needed
|
|
"requests",
|
|
"PIL", # Pillow is imported as PIL
|
|
"packaging",
|
|
"markdown",
|
|
"playsound3",
|
|
"loguru",
|
|
"setuptools"
|
|
],
|
|
|
|
# Packages to exclude (to reduce size)
|
|
"excludes": [
|
|
"PySide6.QtBluetooth",
|
|
"PySide6.QtNetwork",
|
|
"PySide6.QtOpenGL",
|
|
"PySide6.QtPrintSupport",
|
|
"PySide6.QtSvg",
|
|
"PySide6.QtTest",
|
|
"PySide6.QtXml",
|
|
"PySide6.QtSql",
|
|
"PySide6.QtHelp",
|
|
"PySide6.QtMultimedia",
|
|
"PySide6.QtQml",
|
|
"PySide6.QtQuick",
|
|
"PySide6.QtWebEngineCore",
|
|
"PIL.ImageDraw",
|
|
"PIL.ImageFont",
|
|
"numpy",
|
|
"scipy",
|
|
"wx",
|
|
"pandas",
|
|
"tkinter",
|
|
"yt_dlp", # Excluded - downloaded dynamically at runtime (all imports are conditional)
|
|
"unittest",
|
|
"test",
|
|
"tests"
|
|
],
|
|
|
|
# Include files (assets and source code)
|
|
"include_files": [
|
|
("src/", "src/"), # Include entire src directory
|
|
("assets/Icon/icon.png", "assets/Icon/icon.png"),
|
|
("assets/sound/notification.mp3", "assets/sound/notification.mp3"),
|
|
("assets/branding/icons/YTSage.ico", "YTSage.ico")
|
|
],
|
|
|
|
# Zip includes (can help reduce file count)
|
|
"zip_include_packages": "*",
|
|
"zip_exclude_packages": [],
|
|
|
|
# Other options
|
|
"optimize": 2, # Optimize bytecode
|
|
"build_exe": "dist/YTSage", # Output directory for executable
|
|
}
|
|
|
|
# MSI build options
|
|
bdist_msi_options = {
|
|
"upgrade_code": "{12345678-1234-5678-9ABC-123456789ABC}", # Generate unique GUID
|
|
"add_to_path": False,
|
|
"initial_target_dir": r"[ProgramFilesFolder]\YTSage",
|
|
# Remove problematic install_icon that might be causing MSI build to fail
|
|
# "install_icon": "assets/branding/icons/YTSage.ico",
|
|
"summary_data": {
|
|
"author": "oop7",
|
|
"comments": "YouTube Video Downloader - Easy to use video downloading tool",
|
|
"keywords": "youtube, downloader, video, audio, converter"
|
|
}
|
|
}
|
|
|
|
# Base configuration for Windows GUI application
|
|
base = None
|
|
if sys.platform == "win32":
|
|
base = "Win32GUI" # This prevents console window from appearing
|
|
|
|
# Executable configuration
|
|
executable = Executable(
|
|
"main.py",
|
|
base=base,
|
|
icon="assets/branding/icons/YTSage.ico",
|
|
target_name="YTSage-v4.8.0.exe",
|
|
copyright="Copyright (c) 2024-2025 YTSage",
|
|
trademarks="YTSage"
|
|
)
|
|
|
|
# Setup configuration
|
|
setup(
|
|
name="YTSage",
|
|
version="4.8.0",
|
|
description="YouTube Video Downloader",
|
|
author="oop7",
|
|
author_email="oop7_support@proton.me",
|
|
url="https://github.com/oop7/ytsage",
|
|
license="MIT",
|
|
options={
|
|
"build_exe": build_exe_options,
|
|
"bdist_msi": bdist_msi_options
|
|
},
|
|
executables=[executable]
|
|
)
|