-
Notifications
You must be signed in to change notification settings - Fork 1
Building from Source
Follow the Tauri prerequisites guide for your platform.
At minimum you need:
- Node.js 22+
- Rust (latest stable)
- Platform-specific build tools (Xcode CLI on macOS, Visual Studio Build Tools on Windows, etc.)
-
Perl — the build vendors OpenSSL from source (via
native-tls-vendored), and OpenSSL's configure step requires Perl. On Windows you also need NASM onPATH.
git clone https://github.com/pacmano1/launcher.git
cd launcher
npm install
npm run tauri buildThe built application will be at:
-
macOS:
src-tauri/target/release/bundle/macos/Launcher.app -
Windows:
src-tauri/target/release/bundle/msi/ -
Linux:
src-tauri/target/release/bundle/deb/
To build a universal binary that runs natively on both Apple Silicon and Intel Macs:
rustup target add x86_64-apple-darwin
npm run tauri build -- --target universal-apple-darwinOutput: src-tauri/target/universal-apple-darwin/release/bundle/
npm install
npm run tauri devThis starts the Nuxt dev server with hot reload and the Tauri window.
To check or test just the Rust backend without building the frontend:
cargo check --manifest-path src-tauri/Cargo.toml
cargo test --manifest-path src-tauri/Cargo.tomlThe connectivity status probe uses reqwest with the native-tls-vendored feature, which compiles OpenSSL from source as part of the build. This adds two build-time requirements beyond the standard Tauri toolchain:
- Perl on every platform (used by OpenSSL's configure step).
- NASM on Windows, in addition to Perl.
Because OpenSSL is vendored, you do not need a separately installed OpenSSL or any OPENSSL_* environment variables. On Windows, install Strawberry Perl and NASM, make sure both are on PATH, then build normally with npm run tauri build.
The GitHub Actions workflow at .github/workflows/build-launcher.yml builds on every push and pull request. The run also executes cargo audit and npm audit, and an aggregating ci-success check gates merges.
Draft releases are cut only from a pushed version tag (v*), not on every push to master. A guard step fails the release unless the pushed tag matches the manifest version (package.json), so a mis-tag can't produce a release. The release is always a draft — a human reviews the assets and publishes it. See RELEASING.md in the repo for the full release procedure.
| Runner | Architecture | Artifacts |
|---|---|---|
macos-latest |
Universal (ARM64 + x86_64) |
.app, .dmg
|
ubuntu-latest |
x86_64 |
.deb, .rpm, .AppImage
|
ubuntu-24.04-arm |
ARM64 |
.deb, .rpm, .AppImage
|
windows-latest |
x86_64 |
.exe, .msi
|
windows-11-arm |
ARM64 |
.exe, .msi
|
To create a .dmg installer on macOS, you need create-dmg:
brew install create-dmgWithout it, the .app still builds successfully — only the DMG step fails.
If the DMG bundling step fails repeatedly, stale mounted disk images from previous builds may be blocking it. Eject them:
hdiutil info | grep -B1 "Launcher" | grep "^/dev/" | sort -u | while read dev; do hdiutil detach "$dev" -force; doneThe app icon (src-tauri/icons/icon.png) must be square (equal width and height). The Linux AppImage bundler will fail if the icon is not square.