Dockerfile.win (tobix/pywine): baut die Windows-.exe via Wine+PyInstaller und per NSIS ein setup.exe, das den Agent via nssm als Autostart-Windows-Dienst einrichtet und die .env aus %ProgramData%\ARIA-Host-Agent liest (AppDirectory). build-win.sh als Einstieg; release_agent.sh baut Windows jetzt mit (SKIP_WINDOWS=1 ueberspringt). _load_dotenv haertet: sucht .env auch neben sys.executable (onefile- .exe-Ort), nicht nur __file__/CWD. README: Windows-Build + Dienst + Release. macOS bleibt self-build (nicht aus Docker moeglich). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
1.7 KiB
Docker
37 lines
1.7 KiB
Docker
# Baut die Windows-.exe des Host-Agents AUF LINUX — via Wine + Windows-Python +
|
|
# PyInstaller. tobix/pywine bringt Wine + Windows-Python 3.11 mit (PyInstaller
|
|
# kann NICHT cross-compilen, deshalb der Wine-Umweg).
|
|
#
|
|
# Zusaetzlich baut NSIS ein setup.exe, das die Agent-.exe installiert, eine .env
|
|
# in C:\ProgramData\ARIA-Host-Agent anlegt (falls keine da ist) und den Agent als
|
|
# automatisch startenden Windows-Dienst (via nssm) einrichtet.
|
|
FROM tobix/pywine:3.11
|
|
|
|
ARG VERSION=0.0.0
|
|
|
|
# NSIS (Installer-Compiler, laeuft nativ auf Linux) + Tools fuer nssm.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends nsis curl unzip ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /work
|
|
|
|
# nssm — Non-Sucking Service Manager (public domain): macht aus der Konsolen-.exe
|
|
# einen sauberen Windows-Dienst (die .exe selbst spricht das SCM nicht).
|
|
RUN curl -fsSL https://nssm.cc/release/nssm-2.24.zip -o /tmp/nssm.zip \
|
|
&& unzip -q /tmp/nssm.zip -d /tmp \
|
|
&& cp /tmp/nssm-2.24/win64/nssm.exe ./nssm.exe \
|
|
&& rm -rf /tmp/nssm*
|
|
|
|
COPY requirements.txt host_agent.py ./
|
|
COPY windows/installer.nsi ./
|
|
|
|
# Windows-Python-Deps + PyInstaller, dann die Onefile-.exe bauen.
|
|
RUN wine pip install --no-cache-dir -r requirements.txt pyinstaller
|
|
RUN wine pyinstaller --onefile --name aria-host-agent --collect-all psutil host_agent.py \
|
|
&& cp dist/aria-host-agent.exe ./aria-host-agent.exe \
|
|
&& makensis -DVERSION=${VERSION} installer.nsi
|
|
|
|
# Beide Artefakte rausreichen (dist/ wird vom build-win.sh als Volume gemountet).
|
|
CMD ["bash","-lc","cp dist/aria-host-agent.exe /out/ && cp aria-host-agent-setup.exe /out/ && echo 'OK -> /out/aria-host-agent.exe + /out/aria-host-agent-setup.exe'"]
|