Windows

Build native Windows desktop applications with Bini.js.

Windows Overview

Bini.js allows you to build native Windows desktop applications using Tauri. Your React app is wrapped in a WebView2 binary, providing a native experience with full system access.

Native Binary

Windows executable (.exe) with Authenticode signing

Code Signing

Authenticode signing support for trusted distribution

Native APIs

Full access to Windows APIs via Tauri

Windows desktop apps are built using Tauri's WebView2 backend. Your app runs in a native window with full system access.

Requirements

Before building Windows apps, make sure you have the following installed:

  • Node.js 20.19.0 or higher
  • Microsoft C++ Build Tools — Download
  • Microsoft Edge WebView2 Runtime — Download
The C++ Build Tools are required to compile the Tauri backend. Install with "Desktop development with C++" workload.

Native Windows

Build natively on Windows using the CLI. The development and build commands run directly on your Windows machine.

# Create a Windows project
npx create-bini-app@latest my-app --platform windows

# Navigate to project
cd my-app

# Install dependencies
npm install

# Run in development mode
npm run tauri:dev

# Build the Windows executable
npm run tauri:build

The build output is a native Windows executable (.exe) with an installer.

Tip: Use --sign during scaffold to set up Authenticode signing.

macOS

Build Windows apps from macOS using GitHub Actions. This is the recommended approach for cross-platform builds.

GitHubGitHub Actions Workflow
.github/workflows/build-windows.yml
# .github/workflows/build-windows.yml
name: Build Windows App

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build-windows:
    runs-on: windows-latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'
          
      - name: Install dependencies
        run: npm install
        
      - name: Build Windows app
        run: npm run tauri:build
        
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: windows-build
          path: src-tauri/target/release/*.exe

Why GitHub Actions? Tauri recommends GitHub Actions for cross-platform builds because:

  • No local toolchain setup required
  • Consistent build environment
  • Automatic artifact generation
  • Works from any operating system
GitHub Actions runs on Windows runners to build native Windows executables. This works from any OS.

Linux

Build Windows apps from Linux using GitHub Actions. This is the recommended approach and is used by Tauri for cross-platform builds.

GitHubGitHub Actions Workflow
.github/workflows/build-windows.yml
# .github/workflows/build-windows.yml
name: Build Windows App

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build-windows:
    runs-on: windows-latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'
          
      - name: Install dependencies
        run: npm install
        
      - name: Build Windows app
        run: npm run tauri:build
        
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: windows-build
          path: src-tauri/target/release/*.exe

Why GitHub Actions? Tauri recommends GitHub Actions for cross-platform builds because:

  • No local toolchain setup required
  • Consistent build environment
  • Automatic artifact generation
  • Works from any operating system
GitHub Actions with windows-latest runners is the official Tauri-recommended approach for building Windows apps from Linux.

Creating a Windows App

Create a new Bini.js project targeting Windows:

npx create-bini-app@latest my-app --platform windows

Or use the interactive prompt and select windows:

Prompt: Which platform would you like to target?

web / windows / macos / linux / android / ios

Select windows and press Enter

npx create-bini-app@latest

Development

Run your Windows app in development mode:

npm run tauri:dev

This launches your app in a native Windows window with:

  • Hot reload for frontend changes
  • Native window with system tray support
  • Access to Windows APIs
  • Devtools for debugging

Building

Build a distributable Windows executable:

npm run tauri:build

This creates a signed Windows installer in the src-tauri/target/release/ directory.

Output Files

  • my-app.exe — The main executable
  • my-app.msi — Windows installer
  • my-app.nsis — NSIS installer (if configured)
The build output is a native Windows binary that runs without any additional dependencies.

Code Signing

Bini.js supports Authenticode code signing for Windows binaries. Configure signing in src-tauri/tauri.conf.json:

src-tauri/tauri.conf.json
{
  "tauri": {
    "bundle": {
      "windows": {
        "signing": {
          "certificate": {
            "path": "certificate.pfx",
            "password": "your-password"
          }
        }
      }
    }
  }
}

For GitHub Actions, you can use secrets for secure certificate storage:

# In GitHub Actions workflow
- name: Build Windows app
  env:
    CERTIFICATE_PASSWORD: ${{ secrets.CERT_PASSWORD }}
  run: npm run tauri:build
For production distribution, Authenticode signing is recommended to establish trust with Windows users.