217 lines
4.4 KiB
Markdown
217 lines
4.4 KiB
Markdown
# Windows Package Builder
|
|
|
|
Automated build system for creating Windows portable packages of Pixelle-Video.
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Python 3.11+ (for running the build script)
|
|
- PyYAML: `pip install pyyaml`
|
|
- Internet connection (for downloading Python, FFmpeg, etc.)
|
|
|
|
### Build Package
|
|
|
|
```bash
|
|
# Basic build
|
|
python packaging/windows/build.py
|
|
|
|
# Build with China mirrors (faster in China)
|
|
python packaging/windows/build.py --cn-mirror
|
|
|
|
# Custom output directory
|
|
python packaging/windows/build.py --output /path/to/output
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Edit `config/build_config.yaml` to customize:
|
|
|
|
- Python version
|
|
- FFmpeg version
|
|
- Excluded files/folders
|
|
- Build options
|
|
- Mirror settings
|
|
|
|
## Output
|
|
|
|
The build process creates:
|
|
|
|
```
|
|
dist/windows/
|
|
├── Pixelle-Video-v*-win64/ # Build directory (version number varies)
|
|
│ ├── python/ # Python embedded
|
|
│ ├── tools/ # FFmpeg, etc.
|
|
│ ├── Pixelle-Video/ # Project files
|
|
│ ├── data/ # User data (empty)
|
|
│ ├── output/ # Output (empty)
|
|
│ ├── start.bat # Main launcher
|
|
│ ├── start_api.bat # API launcher
|
|
│ ├── start_web.bat # Web launcher
|
|
│ └── README.txt # User guide
|
|
├── Pixelle-Video-v*-win64.zip # ZIP package (version number varies)
|
|
└── Pixelle-Video-v*-win64.zip.sha256 # Checksum (version number varies)
|
|
```
|
|
|
|
## Build Process
|
|
|
|
The builder performs these steps:
|
|
|
|
1. **Download Phase**
|
|
- Python embedded distribution
|
|
- FFmpeg portable
|
|
- Cached in `.cache/` for reuse
|
|
|
|
2. **Extract Phase**
|
|
- Extract Python to `build/python/`
|
|
- Extract FFmpeg to `build/tools/ffmpeg/`
|
|
|
|
3. **Prepare Phase**
|
|
- Enable site-packages in Python
|
|
- Install pip
|
|
- Install uv (if configured)
|
|
|
|
4. **Install Phase**
|
|
- Install project dependencies using uv/pip
|
|
- Pre-install all packages
|
|
|
|
5. **Copy Phase**
|
|
- Copy project files (excluding test/docs/cache)
|
|
- Generate launcher scripts from templates
|
|
- Create empty directories
|
|
|
|
6. **Package Phase**
|
|
- Create ZIP archive
|
|
- Generate SHA256 checksum
|
|
|
|
## Templates
|
|
|
|
Launcher script templates in `templates/`:
|
|
|
|
- `start.bat` - Main Web UI launcher
|
|
- `start_api.bat` - API server launcher
|
|
- `start_web.bat` - Web UI only launcher
|
|
- `README.txt` - User documentation
|
|
|
|
Templates support placeholders:
|
|
- `{VERSION}` - Project version
|
|
- `{BUILD_DATE}` - Build timestamp
|
|
|
|
## Cache
|
|
|
|
Downloaded files are cached in `.cache/`:
|
|
|
|
```
|
|
.cache/
|
|
├── python-3.11.9-embed-amd64.zip
|
|
├── ffmpeg-6.1.1-win64.zip
|
|
└── get-pip.py
|
|
```
|
|
|
|
Delete cache to force re-download.
|
|
|
|
## Troubleshooting
|
|
|
|
### Build fails with "PyYAML not found"
|
|
|
|
```bash
|
|
pip install pyyaml
|
|
```
|
|
|
|
### Downloads are slow
|
|
|
|
Use China mirrors:
|
|
|
|
```bash
|
|
python build.py --cn-mirror
|
|
```
|
|
|
|
### Dependencies installation fails
|
|
|
|
Check:
|
|
1. Internet connection
|
|
2. PyPI mirrors accessibility
|
|
3. Project dependencies in `pyproject.toml`
|
|
|
|
### ZIP creation fails
|
|
|
|
Ensure:
|
|
1. Sufficient disk space
|
|
2. Write permissions to output directory
|
|
3. No files are locked by other processes
|
|
|
|
## Advanced Usage
|
|
|
|
### Custom Configuration
|
|
|
|
Create custom config file:
|
|
|
|
```bash
|
|
cp config/build_config.yaml config/my_config.yaml
|
|
# Edit my_config.yaml
|
|
python build.py --config config/my_config.yaml
|
|
```
|
|
|
|
### Skip ZIP Creation
|
|
|
|
Edit `build_config.yaml`:
|
|
|
|
```yaml
|
|
build:
|
|
create_zip: false
|
|
```
|
|
|
|
### Include Chrome Portable
|
|
|
|
Edit `build_config.yaml`:
|
|
|
|
```yaml
|
|
chrome:
|
|
include: true
|
|
download_url: "https://path/to/chrome-portable.zip"
|
|
```
|
|
|
|
## Maintenance
|
|
|
|
### Update Python Version
|
|
|
|
Edit `config/build_config.yaml`:
|
|
|
|
```yaml
|
|
python:
|
|
version: "3.11.10"
|
|
download_url: "https://www.python.org/ftp/python/3.11.10/python-3.11.10-embed-amd64.zip"
|
|
```
|
|
|
|
### Update FFmpeg Version
|
|
|
|
Edit `config/build_config.yaml`:
|
|
|
|
```yaml
|
|
ffmpeg:
|
|
version: "6.2.0"
|
|
download_url: "https://github.com/BtbN/FFmpeg-Builds/releases/download/..."
|
|
```
|
|
|
|
## Distribution
|
|
|
|
To distribute the package:
|
|
|
|
1. Upload ZIP file to release page
|
|
2. Include SHA256 checksum for verification
|
|
3. Provide installation instructions
|
|
|
|
Users verify download:
|
|
|
|
```bash
|
|
# Windows PowerShell
|
|
Get-FileHash Pixelle-Video-v*-win64.zip -Algorithm SHA256
|
|
```
|
|
|
|
Compare with `.sha256` file.
|
|
|
|
## License
|
|
|
|
Same as Pixelle-Video project license.
|
|
|