Files
peerspeak/packaging/windows/README.md
T

4.0 KiB

PeerSpeak — Windows installer

This directory builds a Windows setup installer for PeerSpeak using Inno Setup.

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):

    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:

    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:

    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:

    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.