95 lines
4.0 KiB
Markdown
95 lines
4.0 KiB
Markdown
# PeerSpeak — Windows installer
|
|
|
|
This directory builds a Windows setup installer for PeerSpeak using
|
|
[Inno Setup](https://jrsoftware.org/isinfo.php).
|
|
|
|
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. 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
|
|
|
|
The installer version tracks the release version in `Cargo.toml` — keep
|
|
`MyAppVersion` in `peerspeak.iss` in sync when cutting a release. Do not reuse an
|
|
old installer filename after a crate-version bump.
|
|
|
|
Per `VERSIONING.md`, a **MINOR** bump in `0.x` is a **breaking wire change**:
|
|
peers on different MINOR versions can't connect (they fail fast at the
|
|
handshake rather than misbehaving). So when you ship a new Windows build after
|
|
a MINOR bump, **everyone on the call must reinstall** — an old Windows build
|
|
and a newer Linux/Windows peer won't talk. (0.3.0 was the chat file-sharing +
|
|
per-peer noise-gate release; it cannot connect to a 0.2.x peer.)
|
|
|
|
## 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/` |
|
|
| `pixelpass.exe` | no (gitignored) | matching staged Windows viewer from the PixelPass repository |
|
|
| `output/peerspeak-<ver>-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. **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
|
|
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-<version>-setup.exe`.
|
|
|
|
## What the installer does
|
|
|
|
- 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 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
|
|
> 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.
|