feat(windows): bundle PixelPass viewer

This commit is contained in:
2026-08-22 21:02:32 -04:00
parent f2220ed84e
commit 437c95380e
11 changed files with 258 additions and 85 deletions
+19 -10
View File
@@ -3,11 +3,12 @@
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
PeerSpeak itself is a **self-contained `peerspeak.exe`** — the GUI icon,
notification chimes, and avatar presets are 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.
runtime. The installer also bundles the matching viewer-only `pixelpass.exe`,
which lets Windows participants watch shares hosted by Linux. VLC or mpv is
still required to render the received stream.
## Version compatibility
@@ -30,6 +31,7 @@ per-peer noise-gate release; it cannot connect to a 0.2.x peer.)
| `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/` |
| `pixelpass.exe` | no (gitignored) | matching staged Windows viewer from the PixelPass repository |
| `output/peerspeak-<ver>-setup.exe` | no (gitignored) | the compiled installer |
## Build steps
@@ -45,12 +47,19 @@ per-peer noise-gate release; it cannot connect to a 0.2.x peer.)
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:
2. **Cross-compile PixelPass's Windows viewer** from the matching PixelPass
source, then stage both binaries next to the script:
```sh
cp target/x86_64-pc-windows-gnu/release/peerspeak.exe packaging/windows/
cp ../pixelpass/target/x86_64-pc-windows-gnu/release/pixelpass.exe \
packaging/windows/
```
PixelPass may use a separate target directory on low-space builders; copy
the final `pixelpass.exe` from that directory instead. Do not substitute an
older helper without re-running the ticket/viewer compatibility test.
3. **Regenerate the icon** if the source PNGs changed:
```sh
@@ -71,12 +80,12 @@ per-peer noise-gate release; it cannot connect to a 0.2.x peer.)
## What the installer does
- Installs `peerspeak.exe` to `Program Files\PeerSpeak` (requires admin / one
UAC prompt).
- Installs `peerspeak.exe` and the matching `pixelpass.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.
- Optionally adds idempotent Windows Firewall allow-rules for PeerSpeak and
PixelPass (recommended — both use iroh/QUIC). The rules are replaced on
upgrade and removed on uninstall.
- Provides a standard uninstaller.
> **Note:** the installer and the binary are **not code-signed**, so Windows