# Distribuye tu app

> Empaqueta una app Pyzed para Windows, macOS y Linux: un ejecutable independiente con Python dentro, creado con pyzed build, más iconos, firma, instaladores, compilaciones en CI y autoactualización.

Source: https://albakore.github.io/pyzed/es/packaging/

Cuando tu app funciona en tu equipo, `pyzed build` (o **Archivo → Exportar aplicación…** en
[Pyzed Design](https://albakore.github.io/pyzed/es/editor/exporting/)) la empaqueta con PyInstaller o Nuitka: Python, Pyzed, tus dependencias, tu código y tus
formularios van a una carpeta (o un archivo) que funciona por sí sola. Quien la use no necesita Python, pip ni nada
más. Ejecútalo desde la raíz de tu [proyecto](https://albakore.github.io/pyzed/es/getting-started/new-project/):

**uv:**

```bash title="Windows, macOS y Linux"
uv run pyzed build
```

**pip:**

```bash title="macOS y Linux"
source .venv/bin/activate
pyzed build          # o: python -m pyzed build
```

```powershell title="Windows (PowerShell)"
.venv\Scripts\Activate.ps1
pyzed build          # o: py -m pyzed build
```

| Compilas en | Obtienes | La gente la ejecuta |
| --- | --- | --- |
| Windows | `dist\Shop\Shop.exe` | Con doble clic, desde un zip o un instalador |
| macOS | `dist/Shop.app` | Abriéndola (fírmala y notarízala para compartirla) |
| Linux | `dist/Shop/Shop` | Con `./Shop`, o desde el menú de aplicaciones |

## De tu proyecto a tus usuarios

```mermaid
flowchart LR
    P["Tu proyecto<br/>pyproject.toml · ui/ · src/"] --> B["pyzed build<br/>(PyInstaller o Nuitka)"]
    B --> W["Windows<br/>Shop.exe"]
    B --> M["macOS<br/>Shop.app"]
    B --> L["Linux<br/>Shop/Shop"]
    W --> S["Firmar · comprimir · instalador"]
    M --> S
    L --> S
    S --> R["GitHub Release"]
    R -. "pyzed.updater" .-> U["Apps instaladas<br/>se actualizan solas"]
```

**Una compilación por plataforma:**

Una compilación solo funciona en el sistema donde se hizo: compila la app de Windows en Windows, la de macOS en macOS y
la de Linux en Linux. Un [flujo de CI](https://albakore.github.io/pyzed/es/packaging/ci/) puede hacer las tres por ti.

## En esta sección

pyproject.toml</code>, PyInstaller o Nuitka, archivos de datos y la pantalla de inicio.', href: '/pyzed/es/packaging/build/', icon: 'rocket', tag: 'Empieza aquí' },
{ title: 'Exportar desde el diseñador', text: 'Archivo → Exportar aplicación… en Pyzed Design: plataformas, empaquetador, icono y pantalla de inicio en un solo diálogo.', href: '/pyzed/es/editor/exporting/', icon: 'pencil' },
{ title: 'Windows', text: 'El .exe, carpeta o archivo único, un zip o un instalador de Inno Setup, y firma para SmartScreen.', href: '/pyzed/es/packaging/windows/', icon: 'seti:windows' },
{ title: 'macOS', text: 'El paquete .app, identificador de paquete, firma, notarización y un .dmg.', href: '/pyzed/es/packaging/macos/', icon: 'apple' },
{ title: 'Linux', text: 'En qué distribución compilar, archivos comprimidos, entradas de menú, y AppImage o .deb.', href: '/pyzed/es/packaging/linux/', icon: 'linux' },
{ title: 'Iconos y metadatos', text: 'Nombre, versión, editor, los iconos creados a partir de un PNG y el identificador de paquete de macOS.', href: '/pyzed/es/packaging/icons-metadata/', icon: 'star' },
{ title: 'CI con GitHub Actions', text: 'Compila los tres sistemas en cada etiqueta, publica una versión y firma con secretos.', href: '/pyzed/es/packaging/ci/', icon: 'github' },
{ title: 'Apps que se actualizan solas', text: 'Busca en GitHub Releases, descarga con suma de verificación y cambia la app al reiniciar.', href: '/pyzed/es/packaging/updates/', icon: 'random' },
{ title: 'Solución de problemas', text: 'Módulos que faltan, ventanas en blanco, apps bloqueadas, errores de glibc y mensajes de actualización.', href: '/pyzed/es/packaging/troubleshooting/', icon: 'warning' },
{ title: 'Referencia de la CLI', text: 'Todas las opciones de <code>pyzed build</code> y de los demás comandos.', href: '/pyzed/es/reference/cli/', icon: 'list-format' },
]}
/>

## Qué está soportado hoy

| | Windows | macOS | Linux |
| --- | --- | --- | --- |
| Carpeta de la app (`pyzed build`) | ✅ `.exe` | ✅ `.app` | ✅ ejecutable |
| Archivo único (`--onefile`) | ✅ | ✅ | ✅ |
| PyInstaller o Nuitka (`--backend`) | ✅ | ✅ | ✅ |
| x64 y ARM | ✅ | ✅ | ✅ |
| Icono a partir de un PNG (`icon =`) | ✅ `.ico` + ventana | ✅ `.icns` | ✅ ventana; menú con un archivo `.desktop` |
| Datos del archivo (versión, editor...) | ✅ | ✅ `Info.plist` | - |
| Pantalla de inicio | ✅ | ✅ | ✅ |
| Flujo de CI (`--workflow`) y archivos comprimidos para releases | ✅ | ✅ | ✅ |
| Autoactualización (`pyzed.updater`) | ✅ | ✅ | ✅ |
| Firma | Con `signtool` | Con `codesign` + notarización | No hace falta |
| Instalador | El tuyo (Inno Setup, WiX) | Tu propio `.dmg` (`hdiutil`) | El tuyo (archivo, script, AppImage...) |
| Compilación cruzada | ❌ | ❌ | ❌ |

**Estado de esta sección:**

El empaquetado para escritorio está listo para usarse hoy. Los instaladores, la firma y los canales de actualización
se documentan con las herramientas que usa el propio Pyzed Design, pero `pyzed build` todavía no las ejecuta por ti.
Las plataformas móvil y web están planificadas para el futuro y aún no están disponibles.
