Tauri decides dev-vs-production from the `custom-protocol` feature, not from --release, and both workflows build the setup exe with a plain `cargo build`. So cfg(dev) stayed on, the frontend was never embedded, and the window a tester opened loaded devUrl: "localhost refused to connect" on a blank 800x580. The feature is a default of the crate now, with a build.rs guard that fails a release build without it, and build.rs tracks setup/dist so a changed window cannot be left out of the binary it is supposed to be in. Behind that, the next wall: /releases/latest answers only with full releases, and every release here is an alpha, so it 404s. The setup app read that as a refused key and the app's Stable channel read it as a token that cannot see the repository — both have been broken since the first alpha. Each now lists /releases and takes the newest that is neither a draft nor the rolling nightly, which the list really does put first. And check_saved_key threw the saved key away on any failure at all, a dropped connection included. The entry it deletes is the app's own updater token, so only a refusal clears it now. The release notes name the file to hand a tester: six assets on the page and nothing saying which, while the bare NSIS installer is the biggest of them and installs with no key gate and no signature check.
43 lines
1.6 KiB
TOML
43 lines
1.6 KiB
TOML
[package]
|
|
name = "soulstream-setup"
|
|
version.workspace = true
|
|
description = "SoulStream Setup — the installer testers run: our own window, the alpha key as the gate, the real installer downloaded from the private release and verified"
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
# One file to hand out: SoulStream-Setup.exe. Not bundled — it IS the bundle.
|
|
[[bin]]
|
|
name = "SoulStream-Setup"
|
|
path = "src/main.rs"
|
|
|
|
# Tauri serves the frontend it embedded at compile time only with this on;
|
|
# without it the window loads `devUrl` instead and a tester gets a blank
|
|
# window saying "localhost refused to connect". The workflows build this
|
|
# crate with plain `cargo build` — no Tauri CLI to turn it on for them — so
|
|
# it is a DEFAULT feature here: every build that does not say otherwise is a
|
|
# shippable one. `--no-default-features` is the build that talks to the vite
|
|
# dev server on 1425.
|
|
[features]
|
|
default = ["custom-protocol"]
|
|
custom-protocol = ["tauri/custom-protocol"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
serde_json.workspace = true
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = [] }
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
# The alpha key goes where the app reads it: the Credential Manager.
|
|
keyring = { version = "3", features = ["windows-native"] }
|
|
dirs = "5"
|
|
rfd = "0.15"
|
|
winreg = "0.52"
|
|
# The release comes down from GitHub with the key, and its signature is
|
|
# checked against the same public key the app's updater trusts.
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
minisign-verify = "0.2"
|
|
base64 = "0.21"
|