Distribucion y Empaquetado

Por: Artiko
tauridistribucionbuildbundlefirma

Distribucion y Empaquetado

Compilar la app

npm run tauri build

Esto compila el frontend, compila Rust en modo release y genera los instaladores. El resultado esta en src-tauri/target/release/bundle/.

Separar compilacion y empaquetado

# Solo compilar, sin empaquetar
npm run tauri build -- --no-bundle

# Empaquetar despues
npm run tauri bundle -- --bundles app,dmg

Formatos por plataforma

Linux

FormatoDescripcion
AppImageEjecutable portable, no requiere instalacion
.debPaquete Debian/Ubuntu
.rpmPaquete Fedora/RHEL

macOS

FormatoDescripcion
.appBundle de aplicacion
.dmgImagen de disco para distribucion

Windows

FormatoDescripcion
.msiWindows Installer
.exe (NSIS)Instalador ejecutable

Movil

PlataformaFormato
Android.apk / .aab (para Play Store)
iOS.ipa (para App Store)

Versionado

Define la version en tauri.conf.json:

{
  "version": "1.0.0"
}

Si no esta definido, Tauri usa la version de Cargo.toml.

Firma de codigo

macOS

Requiere un Apple Developer ID para distribuir fuera del App Store. La notarizacion es obligatoria.

Variables de entorno necesarias:

export APPLE_CERTIFICATE="base64_del_certificado"
export APPLE_CERTIFICATE_PASSWORD="password"
export APPLE_SIGNING_IDENTITY="Developer ID Application: Tu Nombre"
export APPLE_ID="[email protected]"
export APPLE_PASSWORD="app-specific-password"
export APPLE_TEAM_ID="XXXXXXXXXX"

Windows

Firma con certificado Authenticode:

export TAURI_SIGNING_PRIVATE_KEY="contenido_de_la_key"
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="password"

Linux

No requiere firma obligatoria, pero es recomendable para repositorios oficiales.

Actualizaciones automaticas

Usa el plugin updater:

cargo add tauri-plugin-updater
npm install @tauri-apps/plugin-updater

Configuracion en tauri.conf.json:

{
  "plugins": {
    "updater": {
      "endpoints": ["https://releases.miapp.com/{{target}}/{{arch}}/{{current_version}}"],
      "pubkey": "tu_clave_publica"
    }
  }
}

Verificar actualizaciones:

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

const update = await check();
if (update) {
    await update.downloadAndInstall();
}

Distribucion en tiendas

Microsoft Store

Genera un paquete .msix y sube a Partner Center.

App Store (macOS)

Requiere Xcode, Apple Developer Program y provisioning profiles.

Google Play

Genera .aab con:

npm run tauri android build -- --aab

App Store (iOS)

Compila y archiva desde Xcode.

Iconos

Genera iconos para todas las plataformas desde una imagen fuente:

npm run tauri icon path/to/icon.png

Requiere una imagen de al menos 1024x1024px. Genera automaticamente todos los tamanos necesarios para cada plataforma.

CI/CD

Para builds automaticos, Tauri ofrece GitHub Actions:

# .github/workflows/release.yml
name: Release
on:
  push:
    tags: ['v*']

jobs:
  release:
    strategy:
      matrix:
        platform: [macos-latest, ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: npm install
      - uses: tauri-apps/tauri-action@v0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Resumen


← System Tray y Menus | Indice