BoltClam 1.0.0: ClamAV desktop protection with Bolt sign-in
Adds the PyQt6 Windows client (Homepage, Scan & results, About & updates, Settings), ClamAV scanning and quarantine, browser-download watch with an exclusive scan gate, Bolt loopback/PKCE sign-in with DPAPI key storage, Gitea release feed with checksum verification, opt-in diagnostics, and Windows/portable build tooling. Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
"""PyInstaller spec for BoltClam.
|
||||
|
||||
Default: a one-folder Windows build (dist/BoltClam/BoltClam.exe), which is
|
||||
what the Inno Setup installer packages. Set BOLTCLAM_ONEFILE=1 for a single
|
||||
BoltClam.exe instead.
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
import sys
|
||||
|
||||
ROOT = Path(SPECPATH).resolve()
|
||||
ONE_FILE = os.environ.get("BOLTCLAM_ONEFILE") == "1"
|
||||
VERSION_FILE = ROOT / "resources" / "version_info.txt"
|
||||
ICON_FILE = ROOT / "resources" / "boltclam.ico"
|
||||
|
||||
a = Analysis(
|
||||
[str(ROOT / "src" / "boltclam" / "__main__.py")],
|
||||
pathex=[str(ROOT / "src")],
|
||||
binaries=[],
|
||||
datas=[(str(ROOT / "resources"), "resources")],
|
||||
hiddenimports=[
|
||||
"PyQt6.QtCore",
|
||||
"PyQt6.QtGui",
|
||||
"PyQt6.QtWidgets",
|
||||
"PyQt6.sip",
|
||||
],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=["tkinter", "unittest", "pydoc"],
|
||||
noarchive=False,
|
||||
optimize=1,
|
||||
)
|
||||
pyz = PYZ(a.pure)
|
||||
|
||||
exe_kwargs = dict(
|
||||
name="BoltClam",
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=False,
|
||||
console=False,
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None,
|
||||
icon=str(ICON_FILE) if ICON_FILE.exists() else None,
|
||||
version=str(VERSION_FILE) if sys.platform == "win32" and VERSION_FILE.exists() else None,
|
||||
)
|
||||
|
||||
if ONE_FILE:
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.datas,
|
||||
[],
|
||||
**exe_kwargs,
|
||||
)
|
||||
else:
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
**exe_kwargs,
|
||||
)
|
||||
coll = COLLECT(
|
||||
exe,
|
||||
a.binaries,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=False,
|
||||
upx_exclude=[],
|
||||
name="BoltClam",
|
||||
)
|
||||
Reference in New Issue
Block a user