# PeerSpeak — Windows installer This directory builds a Windows setup installer for PeerSpeak using [Inno Setup](https://jrsoftware.org/isinfo.php). PeerSpeak ships as a **single self-contained `peerspeak.exe`** — the GUI icon, notification chimes, and avatar presets are all embedded in the binary (`include_bytes!`), and the executable is statically linked against the GNU runtime, so there are no extra DLLs to bundle. The installer payload is just the `.exe` plus an `.ico` for the Start-menu / desktop shortcuts. ## Files | File | Tracked | Purpose | |------|---------|---------| | `peerspeak.iss` | yes | Inno Setup script | | `peerspeak.ico` | yes | multi-resolution app icon (from `assets/icons/*.png`) | | `README.md` | yes | this file | | `peerspeak.exe` | no (gitignored) | staged build artifact, copied from `target/x86_64-pc-windows-gnu/release/` | | `output/peerspeak--setup.exe` | no (gitignored) | the compiled installer | ## Build steps 1. **Cross-compile the Windows binary** (from the repo root, inside the `peerspeak-win` archlinux distrobox): ```sh RUSTC_BOOTSTRAP=1 ./win-cross-build.sh -Z build-std=std,panic_abort ``` This needs the `rust-src` component and the `x86_64-pc-windows-gnu` target installed in that toolchain. The result is a statically-linked, GUI-subsystem `.exe` (no stray console window). 2. **Stage the binary** next to the script: ```sh cp target/x86_64-pc-windows-gnu/release/peerspeak.exe packaging/windows/ ``` 3. **Regenerate the icon** if the source PNGs changed: ```sh magick assets/icons/peerspeak-16.png assets/icons/peerspeak-24.png \ assets/icons/peerspeak-32.png assets/icons/peerspeak-48.png \ assets/icons/peerspeak-64.png assets/icons/peerspeak-128.png \ assets/icons/peerspeak-256.png packaging/windows/peerspeak.ico ``` 4. **Compile the installer** with Inno Setup. On Linux this runs under Wine: ```sh cd packaging/windows wine ~/.wine/drive_c/InnoSetup6/ISCC.exe peerspeak.iss ``` The installer lands at `output/peerspeak--setup.exe`. ## What the installer does - Installs `peerspeak.exe` to `Program Files\PeerSpeak` (requires admin / one UAC prompt). - Creates a Start-menu shortcut, with an optional desktop shortcut. - Optionally adds a Windows Firewall allow-rule for PeerSpeak (recommended — iroh uses UDP hole-punching, so this avoids a mid-call firewall prompt). The rule is removed on uninstall. - Provides a standard uninstaller. > **Note:** the installer and the binary are **not code-signed**, so Windows > SmartScreen will show an "unknown publisher" warning on first run. The user > clicks *More info → Run anyway*. Removing this warning requires a paid > code-signing certificate.