mirror of
https://github.com/WSA-Installer/wsa-installer.git
synced 2026-07-29 11:24:06 -07:00
4.6 KiB
4.6 KiB
Developer Guide
This guide is for developers who want to contribute to WSA Installer or understand its internals.
Prerequisites
- Python 3.14
- Windows 10/11
- Git
- Administrator privileges (for testing)
Getting Started
Clone the Repository
git clone https://github.com/WSA-Installer/wsa-installer.git
cd wsa-installer
Set Up Development Environment
# Run the development launcher
run.bat
This will:
- Create a Python virtual environment
- Install all dependencies
- Launch the application
Manual Setup
# Create virtual environment
python -m venv venv
# Activate it
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the application
python run.py
Project Structure
wsa-installer/
├── app.py # Main application (~11K lines)
├── run.py # Entry point: import app; app.start()
├── WSARepair.py # Windows Settings proxy
├── patch_flet.py # Flet client patcher
├── launcher.cs # C# launcher for Nuitka builds
│
├── assets/ # Runtime resources
│ ├── adb.exe # ADB binary
│ ├── AppxManifest.xml # WSA manifest
│ ├── Run.bat # MagiskOnWSALocal launcher
│ ├── settings.dat # Pre-patched WSA settings
│ └── icons/ # Application icons
│
├── native/ # Rust native modules
│ ├── widget_ui.pyd # Security gateway
│ └── playstore_patcher_mem.pyd # Play Store SDK
│
├── emb_py/ # Embedded Python 3.14
├── build/ # Build scripts
├── docs/ # Documentation
└── tests/ # Tests
Key Files
app.py
The main application file containing:
- Flet GUI (lines 6936-9044) — User interface
- InstallerLogic (lines 2431-5995) — Core engine
- ConfigController (lines 1603-2036) — Configuration management
- RemoteConfigManager (lines 2154-2286) — Server sync
- Background Service (lines 777-1598) — Windows SCM service
- Dialog Functions (lines 9052-10993) — Uninstall, update, repair, file sharing
run.py
Simple entry point:
import app
app.start()
WSARepair.py
Proxy for Windows Settings Repair/Uninstall buttons. Finds the installer via 4 registry search methods.
Code Conventions
Python Style
- Follow PEP 8
- Use meaningful variable names
- Add docstrings for public functions
- Type hints where appropriate
Commit Messages
Follow Conventional Commits:
feat(scope): description
fix(scope): description
docs(scope): description
Branch Naming
feature/description— New featuresfix/description— Bug fixesdocs/description— Documentation
Building
Primary Build
build.bat
Produces dist/WSA_Installer_Setup.exe.
Build Requirements
- Python 3.14 with pip
- Nuitka:
pip install nuitka - PyInstaller:
pip install pyinstaller - NSIS: nsis.sourceforge.io
Build Pipeline
- Clean previous builds
- Install dependencies
- Update version numbers
- Nuitka: Compile
app.py→app.pyd - PyInstaller: Bundle to
dist/WSA Installer/ - Patch Flet client
- NSIS: Build installer
Testing
Manual Testing
- Run the application:
run.bat - Test each wizard step
- Test repair and uninstall flows
- Test on both Windows 10 and 11
Test Checklist
- Fresh installation works
- Play Store installs correctly
- Repair flow completes
- Uninstall removes everything
- Background service starts
- File sharing mounts drive
- Self-update works
- UI renders correctly
Debugging
Enable Debug Logging
Edit app.py and set debug flags:
DEBUG = True
View Logs
wsa_activity.log— Session activitydebug.log— Debug output- UI Log Box — In-app logging
Common Debug Scenarios
Download issues:
- Check network connectivity
- Verify GitHub releases are accessible
- Check download progress in UI
ADB issues:
- Ensure WSA is running
- Check Developer Mode is enabled
- Verify port 58526 is accessible
Service issues:
- Check Windows Event Viewer
- Verify service permissions
- Review service failure recovery
Contributing
See CONTRIBUTING.md for contribution guidelines.
Architecture
See architecture.md for detailed architecture documentation.