Skip to content

Building from Source

Finnegan's Owner edited this page Mar 1, 2026 · 4 revisions

Building from Source

Prerequisites

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

Quick Build

git clone https://github.com/pacmano1/launcher.git
cd launcher
npm install
npm run tauri build

The 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/

macOS Universal Binary

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-darwin

Output: src-tauri/target/universal-apple-darwin/release/bundle/

Development Mode

npm install
npm run tauri dev

This starts the Nuxt dev server with hot reload and the Tauri window.

Rust Only

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.toml

Windows-Specific Setup

OpenSSL is required. Install it and set these environment variables in PowerShell:

$env:OPENSSL_DIR='C:\Program Files\OpenSSL-Win64\'
$env:OPENSSL_INCLUDE_DIR='C:\Program Files\OpenSSL-Win64\include'
$env:OPENSSL_LIB_DIR='C:\Program Files\OpenSSL-Win64\lib'
$env:OPENSSL_NO_VENDOR=1

CI/CD

The GitHub Actions workflow at .github/workflows/build-launcher.yml builds on every push and pull request. Draft releases are created on pushes to master.

Build Matrix

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

DMG Bundling (macOS)

To create a .dmg installer on macOS, you need create-dmg:

brew install create-dmg

Without it, the .app still builds successfully — only the DMG step fails.

Stale DMG Mounts

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; done

Icon Requirements

The 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.

Clone this wiki locally