3845830a86
- New windows/ directory with build scripts, specs, and configuration - Windows-specific requirements (requirements_win.txt) - Launch and runtime scripts for Windows (run_win.py, launch_player.bat) - PyInstaller build configuration (build.spec) - Updated .gitignore to exclude windows/venv312/ - Updated config and source files for Windows compatibility - Moved working_files to proper directory
153 lines
5.1 KiB
Markdown
153 lines
5.1 KiB
Markdown
# Kiwy Signage Player - Windows Edition
|
|
|
|
Build and run the Kiwy digital signage player on Windows as a standalone `.exe`.
|
|
|
|
## 📋 Requirements Analysis
|
|
|
|
The original app was built for **Raspberry Pi (Linux)**, using these technologies:
|
|
|
|
| Component | Original (RPi/Linux) | Windows Equivalent |
|
|
|-----------|---------------------|-------------------|
|
|
| **GUI** | Kivy 2.3+ | Kivy 2.3+ (works cross-platform) |
|
|
| **Video** | ffpyplayer | ffpyplayer (needs FFmpeg DLLs) |
|
|
| **Card Reader** | evdev (Linux input) | **Not available** — gracefully disabled |
|
|
| **Screen Keep-Awake** | xset, xdotool, Wayland | `SetThreadExecutionState` (Win32 API) |
|
|
| **Weblink** | chromium-browser (kiosk) | Chrome/Edge (--kiosk mode) |
|
|
| **Audio** | ALSA/PulseAudio | DirectSound |
|
|
| **Window Backend** | SDL2 (Wayland/X11) | SDL2 (Windows native) |
|
|
| **OpenGL** | Desktop GL | ANGLE (DirectX wrapper) |
|
|
|
|
### What works on Windows
|
|
- ✅ Media playback (images, videos via ffpyplayer)
|
|
- ✅ Playlist sync from DigiServer (HTTP/HTTPS)
|
|
- ✅ Touch & mouse controls
|
|
- ✅ Settings popup
|
|
- ✅ Image editing/annotation
|
|
- ✅ Password-protected exit
|
|
- ✅ Web links (opens in Chrome/Edge kiosk)
|
|
- ✅ Network monitoring
|
|
- ✅ Auto-update playlist
|
|
|
|
### What is disabled on Windows
|
|
- ❌ Card reader (evdev is Linux-only; `EVDEV_AVAILABLE = False`)
|
|
- ❌ HDMI power management (tvservice is RPi-specific)
|
|
- ❌ WiFi restart (uses Linux `nmcli`)
|
|
|
|
## 🚀 Quick Start (Development)
|
|
|
|
### Prerequisites
|
|
1. **Python 3.10+** (64-bit) — [python.org](https://python.org)
|
|
2. **FFmpeg** — for video codec support
|
|
- Download from [ffmpeg.org](https://ffmpeg.org/download.html)
|
|
- Add `bin\` folder to your PATH
|
|
3. **Visual C++ Redistributable** — [latest](https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
|
|
|
### Install & Run
|
|
```batch
|
|
cd windows
|
|
|
|
REM Create virtual environment
|
|
python -m venv venv
|
|
venv\Scripts\activate
|
|
|
|
REM Install dependencies
|
|
pip install -r requirements_win.txt
|
|
|
|
REM Run in development mode
|
|
python run_win.py
|
|
```
|
|
|
|
## 📦 Building the .exe
|
|
|
|
### One-Command Build
|
|
```batch
|
|
cd windows
|
|
build_win.bat
|
|
```
|
|
|
|
### Manual Build
|
|
```batch
|
|
cd windows
|
|
venv\Scripts\activate
|
|
pip install -r requirements_win.txt
|
|
pyinstaller build.spec --clean --noconfirm
|
|
```
|
|
|
|
### Output
|
|
```
|
|
windows\dist\KiwySignagePlayer\
|
|
├── KiwySignagePlayer.exe # Main executable
|
|
├── config/ # Config files (auto-copied)
|
|
├── resources/ # Icons, intro video
|
|
└── ... (supporting DLLs)
|
|
```
|
|
|
|
For a **single-file .exe**, edit `build.spec` — uncomment the `exe_onefile` section and comment out the `coll = COLLECT(...)` section.
|
|
|
|
## ⚙️ Configuration
|
|
|
|
1. On first run, config files are created in `%APPDATA%\KiwySignage\`
|
|
2. Edit `%APPDATA%\KiwySignage\config\app_config.json` to set your server:
|
|
|
|
```json
|
|
{
|
|
"server_ip": "192.168.0.109",
|
|
"port": "8080",
|
|
"screen_name": "Birou_IT",
|
|
"quickconnect_key": "8887779",
|
|
"orientation": "Landscape",
|
|
"touch": "True",
|
|
"max_resolution": "1920x1080",
|
|
"edit_feature_enabled": true,
|
|
"use_https": false,
|
|
"verify_ssl": false
|
|
}
|
|
```
|
|
|
|
## 🧪 Testing
|
|
|
|
```batch
|
|
cd windows
|
|
venv\Scripts\activate
|
|
python run_win.py
|
|
```
|
|
|
|
## 🔧 Troubleshooting
|
|
|
|
| Problem | Solution |
|
|
|---------|----------|
|
|
| **"ffpyplayer not found"** | Install: `pip install ffpyplayer` |
|
|
| **"No video" / black screen** | Install FFmpeg and add to PATH. Try `KIVY_GL_BACKEND=angle_sdl2` or `KIVY_GL_BACKEND=gl` |
|
|
| **Kivy window doesn't open** | Run from command prompt to see error messages. Ensure GPU drivers are up to date. |
|
|
| **Weblinks not opening** | Install Google Chrome or Microsoft Edge |
|
|
| **Can't connect to server** | Check firewall. Try `use_https: false` and `verify_ssl: false` for testing |
|
|
| **Antivirus flags .exe** | Add the output folder to antivirus exclusions. This is a false positive common with PyInstaller. |
|
|
|
|
## 📁 Project Structure (Build)
|
|
|
|
```
|
|
Kiwy-Signage/
|
|
├── windows/
|
|
│ ├── run_win.py # Windows entry point (patches platform differences)
|
|
│ ├── build.spec # PyInstaller configuration
|
|
│ ├── build_win.bat # One-click build script
|
|
│ ├── pyi_runtime_hook.py # PyInstaller runtime hook
|
|
│ ├── requirements_win.txt # Windows Python dependencies
|
|
│ └── README_WINDOWS_BUILD.md # This file
|
|
├── src/
|
|
│ ├── main.py # Main application (original)
|
|
│ ├── get_playlists_v2.py # Playlist sync
|
|
│ ├── player_auth.py # Authentication
|
|
│ ├── ssl_utils.py # SSL/HTTPS
|
|
│ ├── keyboard_widget.py # On-screen keyboard
|
|
│ ├── network_monitor.py # Network monitoring
|
|
│ ├── edit_popup.py # Image editing
|
|
│ └── signage_player.kv # Kivy UI layout
|
|
├── config/
|
|
│ ├── app_config.json # Player configuration
|
|
│ └── resources/ # Icons, images, intro video
|
|
├── media/ # Downloaded media (created at runtime)
|
|
├── playlists/ # Playlist files (created at runtime)
|
|
└── logs/ # Log files (created at runtime)
|
|
```
|