AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Tauri Impl Build Deploy

skill-impertio-studio-tauri-2-claude-skill-package-tauri-impl-build-deploy · by Impertio-Studio

>

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-impertio-studio-tauri-2-claude-skill-package-tauri-impl-build-deploy

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-impertio-studio-tauri-2-claude-skill-package-tauri-impl-build-deploy)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Tauri Impl Build Deploy? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

tauri-impl-build-deploy

Quick Reference

Build Commands

| Command | Purpose | |---------|---------| | tauri build | Full production build with bundling | | tauri build --no-bundle | Compile only, skip installers | | tauri bundle --bundles app,dmg | Bundle specific formats only | | tauri bundle --config src-tauri/tauri.appstore.conf.json | Build with alternate config | | tauri android build | Android production build | | tauri ios build | iOS production build |

Platform Bundler Formats

| Platform | Formats | Notes | |----------|---------|-------| | Windows | NSIS installer, MSI (WiX), portable exe | WebView2 install mode configurable | | macOS | App bundle (.app), DMG | Code signing + notarization required for distribution | | Linux | AppImage, .deb, .rpm, Snap, Flatpak | AppImage is the most universal | | Android | APK, AAB | Play Store requires AAB | | iOS | IPA | App Store or TestFlight distribution |

Critical Warnings

NEVER lose the updater private key -- it is impossible to push updates to existing installations without it. Back it up securely.

NEVER set createUpdaterArtifacts: true without setting the TAURI_SIGNING_PRIVATE_KEY environment variable -- the build will fail.

NEVER distribute unsigned macOS builds -- Gatekeeper quarantines them. Use at minimum ad-hoc signing ("-").

NEVER use "v1Compatible" for createUpdaterArtifacts in new projects -- only for migrating from v1 updater.

ALWAYS commit src-tauri/Cargo.lock for deterministic builds across environments.

ALWAYS set GitHub token permissions to "Read and write" when using tauri-action for releases.


Essential Patterns

Pattern 1: Bundle Configuration

The bundle section in tauri.conf.json controls all packaging:

{
  "bundle": {
    "active": true,
    "targets": "all",
    "icon": [
      "icons/32x32.png",
      "icons/128x128.png",
      "icons/128x128@2x.png",
      "icons/icon.icns",
      "icons/icon.ico"
    ],
    "identifier": "com.example.myapp",
    "resources": {
      "models/": "models/",
      "config.toml": "config.toml"
    },
    "externalBin": ["binaries/ffmpeg"],
    "category": "Utility",
    "copyright": "Copyright 2026 Example Inc.",
    "publisher": "Example Inc.",
    "license": "MIT",
    "createUpdaterArtifacts": true
  }
}

Pattern 2: Resource Bundling and Sidecar Binaries

Resources are additional files bundled with the app. External binaries (sidecars) are executables embedded and spawnable at runtime.

{
  "bundle": {
    "resources": {
      "models/": "models/",
      "config.toml": "config.toml"
    },
    "externalBin": ["binaries/ffmpeg"]
  }
}

Access bundled resources at runtime:

import { resolveResource } from '@tauri-apps/api/path';
const modelPath = await resolveResource('models/default.bin');

Pattern 3: Windows Code Signing (Authenticode)

OV Certificate in tauri.conf.json:

{
  "bundle": {
    "windows": {
      "certificateThumbprint": "A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0",
      "digestAlgorithm": "sha256",
      "timestampUrl": "http://timestamp.comodoca.com"
    }
  }
}

Custom signing (Azure Key Vault):

{
  "bundle": {
    "windows": {
      "signCommand": "relic sign --file %1 --key azure --config relic.conf"
    }
  }
}

Pattern 4: macOS Code Signing and Notarization

Local signing:

{
  "bundle": {
    "macOS": {
      "signingIdentity": "Developer ID Application: Your Name (TEAMID)",
      "hardenedRuntime": true,
      "minimumSystemVersion": "10.13"
    }
  }
}

Or use APPLE_SIGNING_IDENTITY environment variable. For ad-hoc signing (testing only): set signingIdentity to "-".

Notarization environment variables:

| Method | Variables | |--------|-----------| | App Store Connect API | APPLE_API_ISSUER, APPLE_API_KEY, APPLE_API_KEY_PATH | | Apple ID | APPLE_ID, APPLE_PASSWORD (app-specific), APPLE_TEAM_ID |

Pattern 5: Auto-Updater Setup

Step 1: Install the updater plugin:

npm run tauri add updater
cargo add tauri-plugin-updater --target 'cfg(any(target_os = "macos", windows, target_os = "linux"))'

Step 2: Initialize in Rust:

#[cfg(desktop)]
app.handle().plugin(tauri_plugin_updater::Builder::new().build());

Step 3: Generate signing keys:

npm run tauri signer generate -- -w ~/.tauri/myapp.key

Step 4: Set build environment variables:

export TAURI_SIGNING_PRIVATE_KEY="path or content"
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD=""

Step 5: Configure in tauri.conf.json:

{
  "bundle": {
    "createUpdaterArtifacts": true
  },
  "plugins": {
    "updater": {
      "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6...",
      "endpoints": [
        "https://releases.myapp.com/{{target}}/{{arch}}/{{current_version}}"
      ],
      "windows": {
        "installMode": "passive"
      }
    }
  }
}

URL template variables: {{current_version}}, {{target}} (linux/windows/darwin), {{arch}} (x86_64/i686/aarch64/armv7).

Windows install modes: "passive" (no interaction, default), "basicUi" (user interaction), "quiet" (no feedback).

Pattern 6: Update Check (JavaScript)

import { check } from '@tauri-apps/plugin-updater';
import { relaunch } from '@tauri-apps/plugin-process';

const update = await check();
if (update) {
  await update.downloadAndInstall((event) => {
    switch (event.event) {
      case 'Started':
        console.log(`Downloading: ${event.data.contentLength} bytes`);
        break;
      case 'Progress':
        console.log(`Downloaded: ${event.data.chunkLength}`);
        break;
      case 'Finished':
        console.log('Download complete');
        break;
    }
  });
  await relaunch();
}

Pattern 7: Update Check (Rust)

use tauri_plugin_updater::UpdaterExt;

async fn update(app: tauri::AppHandle) -> tauri_plugin_updater::Result {
    if let Some(update) = app.updater()?.check().await? {
        update.download_and_install(
            |chunk_length, content_length| {
                println!("Downloaded: {chunk_length}/{content_length:?}");
            },
            || println!("Finished"),
        ).await?;
        app.restart();
    }
    Ok(())
}

CI/CD with GitHub Actions

Cross-Platform Build Matrix

name: Release
on:
  push:
    branches: [release]
  workflow_dispatch:

permissions:
  contents: write

jobs:
  release:
    strategy:
      fail-fast: false
      matrix:
        include:
          - platform: macos-latest
            args: --target aarch64-apple-darwin
          - platform: macos-latest
            args: --target x86_64-apple-darwin
          - platform: ubuntu-22.04
            args: ''
          - platform: ubuntu-22.04-arm
            args: ''
          - platform: windows-latest
            args: ''

    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v4

      - name: Install Linux dependencies
        if: runner.os == 'Linux'
        run: |
          sudo apt-get update
          sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: lts/*

      - name: Install Rust stable
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}

      - name: Rust cache
        uses: swatinem/rust-cache@v2
        with:
          workspaces: './src-tauri -> target'

      - name: Install frontend dependencies
        run: npm install

      - name: Build Tauri app
        uses: tauri-apps/tauri-action@v0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tagName: app-v__VERSION__
          releaseName: 'App v__VERSION__'
          releaseBody: 'See the assets to download and install.'
          releaseDraft: true
          prerelease: false
          args: ${{ matrix.args }}

__VERSION__ is auto-replaced with the version from tauri.conf.json.

Windows Code Signing in CI

Required secrets: WINDOWS_CERTIFICATE (base64 .pfx), WINDOWS_CERTIFICATE_PASSWORD.

macOS Code Signing in CI

Required secrets: APPLE_CERTIFICATE (base64 .p12), APPLE_CERTIFICATE_PASSWORD, APPLE_SIGNING_IDENTITY, KEYCHAIN_PASSWORD, APPLE_API_ISSUER, APPLE_API_KEY, APPLE_API_KEY_PATH.


Generated Update Artifacts

| Platform | Update Artifact | Signature File | |----------|----------------|----------------| | Linux | .AppImage.tar.gz | .AppImage.tar.gz.sig | | macOS | .app.tar.gz | .app.tar.gz.sig | | Windows | .exe or .msi | .exe.sig or .msi.sig |


Server Response Format (Auto-Updater)

Static JSON (CDN/GitHub Releases):

{
  "version": "1.0.0",
  "notes": "Bug fixes and improvements",
  "pub_date": "2024-01-15T10:30:00Z",
  "platforms": {
    "linux-x86_64": {
      "signature": "...",
      "url": "https://cdn.example.com/app-1.0.0.AppImage.tar.gz"
    },
    "windows-x86_64": {
      "signature": "...",
      "url": "https://cdn.example.com/app-1.0.0-setup.exe"
    },
    "darwin-x86_64": {
      "signature": "...",
      "url": "https://cdn.example.com/app-1.0.0.app.tar.gz"
    }
  }
}

Dynamic server: Return HTTP 204 (no update) or HTTP 200 with version, url, signature, pub_date, notes.


Reference Links

  • [references/methods.md](references/methods.md) -- Build commands, bundler options, updater API signatures
  • [references/examples.md](references/examples.md) -- Working CI/CD configs, signing setups, updater implementations
  • [references/anti-patterns.md](references/anti-patterns.md) -- Build and deployment mistakes with explanations

Official Sources

  • https://v2.tauri.app/distribute/
  • https://v2.tauri.app/plugin/updater/
  • https://github.com/tauri-apps/tauri-action

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.