# -*- mode: python ; coding: utf-8 -*- """PyInstaller spec — onefile portable (ejecutar en Windows o Linux según destino).""" import sys from pathlib import Path block_cipher = None ROOT = Path(SPECPATH).resolve().parent platform = "windows" if sys.platform == "win32" else "linux" bundled = ROOT / "packaging" / "bundled" / platform _assets = ROOT / "packaging" / "assets" datas = [ (str(ROOT / "packaging" / "templates" / "env.default"), "packaging/templates"), ] if _assets.is_dir(): for _icon in _assets.iterdir(): if _icon.is_file() and _icon.suffix.lower() in (".png", ".ico"): datas.append((str(_icon), "packaging/assets")) binaries = [] seven_dir = bundled / "7zip" if seven_dir.is_dir(): for item in seven_dir.iterdir(): if item.is_file(): binaries.append((str(item), "bundled/7zip")) odbc_dir = bundled / "odbc" if odbc_dir.is_dir(): for item in odbc_dir.rglob("*"): if not item.is_file(): continue if item.suffix.lower() in (".msi", ".deb"): continue rel = item.relative_to(odbc_dir) dest = f"bundled/odbc/{rel.parent}".replace("\\", "/") if str(rel.parent) == ".": dest = "bundled/odbc" binaries.append((str(item), dest)) hiddenimports = [ "PySide6", "pyodbc", "requests", "paramiko", "dotenv", "cryptography.fernet", ] if platform == "windows": hiddenimports.append("win32crypt") from PyInstaller.utils.hooks import collect_all pyside_datas, pyside_binaries, pyside_hidden = collect_all("PySide6") datas += pyside_datas binaries += pyside_binaries hiddenimports += pyside_hidden a = Analysis( [str(ROOT / "runner.py")], pathex=[str(ROOT)], binaries=binaries, datas=datas, hiddenimports=hiddenimports, hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) # Icono del ejecutable (solo aplica en Windows; en Linux se ignora sin error). _icon_file = ROOT / "packaging" / "assets" / "tray-icon.ico" _icon = str(_icon_file) if _icon_file.is_file() else None exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name="CloudRestoreAS", icon=_icon, debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=False, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, )