feat: Implement default welcome page for missing web application

- Added a professional HTML welcome page displayed when no web application is configured.
- Enhanced `_load_webapp()` method to support improved path resolution for both development and bundled modes.
- Updated error handling to show the welcome page instead of a bare error message when the webapp file is not found.
- Modified unit tests to verify the welcome page is displayed in error scenarios.

build: Complete Windows and macOS build scripts

- Created `build_windows.py` for building Windows executable and optional MSI installer using PyInstaller.
- Developed `build_macos.sh` for creating macOS application bundle and DMG image.
- Added logging and error handling to build scripts for better user feedback.

docs: Add build and icon requirements documentation

- Created `PHASE_3_BUILD_SUMMARY.md` detailing the build process, results, and next steps.
- Added `resources/icons/README.md` outlining icon requirements and creation guidelines.

chore: Sync remotes script for repository maintenance

- Introduced `sync_remotes.ps1` PowerShell script to fetch updates from origin and upstream remotes.
This commit is contained in:
claudi 2026-01-28 12:59:33 +01:00
parent 90dc09eb4d
commit f0c96f15b8
10 changed files with 1415 additions and 39 deletions

View file

@ -537,41 +537,100 @@ if __name__ == "__main__":
## Phase 3: Build & Distribution (Weeks 7-8)
### 3.1 Windows Installer (MSI)
**Setup:**
```bash
pip install pyinstaller
```
### 3.1 Windows Installer (Executable + MSI)
**Build Script** (`build/scripts/build_windows.py`):
- Compile with PyInstaller
- Create MSI with WiX (optional: advanced features)
- Code signing (optional: professional deployment)
- Output: `WebDropBridge-1.0.0-Setup.exe`
- PyInstaller compilation with proper spec file
- Standalone executable generation
- Optional WiX MSI installer creation
- Optional code signing support
- Clean build management
**Features:**
- ✅ Automatic dependency bundling (PySide6, Qt, Chromium)
- ✅ Resource embedding (webapp, icons, stylesheets)
- ✅ Hidden imports configuration for Qt Web Engine
- ✅ Output validation and size reporting
- ✅ WiX support for professional MSI creation
**PyInstaller Configuration** (`build/webdrop_bridge.spec`):
- Bundles all dependencies (PySide6, Qt6 libraries)
- Includes webapp files and resources
- Sets up GUI mode (no console window)
- Cross-platform compatible
**Usage:**
```bash
# Build executable only
python build/scripts/build_windows.py
# Build with MSI installer (requires WiX)
python build/scripts/build_windows.py --msi
# Build with code signing (requires certificate)
python build/scripts/build_windows.py --sign
```
**Build Results:**
- ✅ **Executable**: `WebDropBridge.exe` (195.66 MB)
- ✅ **Output Directory**: `build/dist/windows/`
- ✅ Contains all dependencies including Chromium engine
**Acceptance Criteria:**
- Executable runs standalone
- Installer installs to Program Files
- Uninstaller removes all files
- Shortcuts created in Start Menu
- [x] Executable builds successfully
- [x] Executable runs standalone (no Python required)
- [x] All dependencies bundled correctly
- [ ] MSI installer creation (requires WiX installation)
- [ ] Code signing (requires certificate)
---
### 3.2 macOS DMG Package
**Build Script** (`build/scripts/build_macos.sh`):
- Compile with PyInstaller
- Create `.app` bundle
- Generate DMG image
- Code signing (optional)
- Output: `WebDropBridge-1.0.0.dmg`
- PyInstaller for .app bundle creation
- DMG image generation
- Professional DMG styling (optional via create-dmg)
- Code signing and notarization support
- Comprehensive error handling
**Features:**
- ✅ Creates proper macOS .app bundle
- ✅ DMG image for distribution
- ✅ Professional volume icon and layout
- ✅ Code signing with signing identities
- ✅ Apple notarization support
- ✅ Checksum verification
**Usage:**
```bash
# Build .app bundle and DMG
bash build/scripts/build_macos.sh
# With code signing
bash build/scripts/build_macos.sh --sign
# With notarization
bash build/scripts/build_macos.sh --notarize
```
**Configuration (Environment Variables):**
```bash
# For code signing
export APPLE_SIGNING_ID="Developer ID Application: Company Name"
# For notarization
export APPLE_ID="your@apple.id"
export APPLE_PASSWORD="app-specific-password"
export APPLE_TEAM_ID="XXXXXXXXXX"
```
**Acceptance Criteria:**
- App bundle signed (if applicable)
- DMG opens in Finder
- Drag-to-Applications works
- Notarization passes (if applicable)
- [ ] .app bundle builds successfully
- [ ] DMG image creates without errors
- [ ] DMG mounts and shows contents properly
- [ ] Code signing works
- [ ] Notarization passes
---