pesterchum/setup.py
2023-01-14 23:10:19 +01:00

148 lines
3.8 KiB
Python

# Windows-only cx_freeze setup file, macOS may work but I've not tested it.
import sys
from cx_Freeze import setup, Executable
from version import buildVersion
if sys.version_info < (3, 0, 0):
sys.exit("Python versions lower than 3 are not supported.")
def is_64bit() -> bool:
return sys.maxsize > 2**32
path = ""
base = None
if sys.platform == "win32":
base = "Win32GUI"
path = sys.path
if is_64bit() == True:
path.append(
r"C:\Program Files (x86)\Windows Kits\10\Redist\10.0.22000.0\ucrt\DLLs\x64"
)
elif is_64bit() == False:
path.append(
r"C:\Program Files (x86)\Windows Kits\10\Redist\10.0.22000.0\ucrt\DLLs\x86"
)
print("Path = " + str(path))
includefiles = [
"quirks",
"smilies",
"themes",
"docs",
"README.md",
"LICENSE",
"CHANGELOG.md",
"PCskins.png",
"Pesterchum.png",
]
build_exe_options = {
# "includes": ['PyQt6.QtCore',
# 'PyQt6.QtGui',
# 'PyQt6.QtWidgets'],
"excludes": [
"collections.sys",
"collections._sre",
"collections._json",
"collections._locale",
"collections._struct",
"collections.array",
"collections._weakref",
"PyQt6.QtMultimedia",
"PyQt6.QtDBus",
"PyQt6.QtDeclarative",
"PyQt6.QtHelp",
"PyQt6.QtNetwork",
"PyQt6.QtSql",
"PyQt6.QtSvg",
"PyQt6.QtTest",
"PyQt6.QtWebKit",
"PyQt6.QtXml",
"PyQt6.QtXmlPatterns",
"PyQt6.phonon",
"PyQt6.QtAssistant",
"PyQt6.QtDesigner",
"PyQt6.QAxContainer",
"pygame.tests",
"pydoc_data",
],
"include_files": includefiles,
"include_msvcr": True, # cx_freeze copies 64-bit binaries always?
"path": path # Improved in 6.6, path to be safe
# VCRUNTIME140.dll <3
}
if (
(sys.platform == "win32")
& (sys.version_info.major == 3)
& (sys.version_info.minor == 8)
):
build_exe_options["excludes"].append("tkinter")
bdist_mac_options = {"iconfile": "trayicon32.icns", "bundle_name": "Pesterchum"}
description = "Pesterchum"
icon = "pesterchum.ico"
# See https://stackoverflow.com/questions/15734703/use-cx-freeze-to-create-an-msi-that-adds-a-shortcut-to-the-desktop
shortcut_table = [
(
"DesktopShortcut", # Shortcut
"DesktopFolder", # Directory_
"Pesterchum", # Name
"TARGETDIR", # Component_
"[TARGETDIR]pesterchum.exe", # Target
None, # Arguments
description, # Description
None, # Hotkey
None, # Icon (Is inherited from pesterchum.exe)
None, # IconIndex
None, # ShowCmd
"TARGETDIR", # WkDir
),
(
"StartMenuShortcut", # Shortcut
"StartMenuFolder", # Directory_
"Pesterchum", # Name
"TARGETDIR", # Component_
"[TARGETDIR]pesterchum.exe", # Target
None, # Arguments
description, # Description
None, # Hotkey
None, # Icon
None, # IconIndex
None, # ShowCmd
"TARGETDIR", # WkDir
),
]
msi_data = {"Shortcut": shortcut_table}
bdist_msi_options = {
"data": msi_data,
"summary_data": {"comments": "FL1P", "keywords": "Pesterchum"},
"upgrade_code": "{86740d75-f1f2-48e8-8266-f36395a2d77f}",
"add_to_path": False, # !!!
"all_users": False,
"install_icon": "pesterchum.ico",
}
setup(
name="Pesterchum",
version=buildVersion,
url="https://github.com/Dpeta/pesterchum-alt-servers",
description=description, # "P3ST3RCHUM",
options={
"build_exe": build_exe_options,
"bdist_msi": bdist_msi_options,
"bdist_mac": bdist_mac_options,
},
packages="",
executables=[Executable("pesterchum.py", base=base, icon=icon)],
)