macOS Application Bundle
Un application bundle es el formato de paquete que se ejecuta en macOS. Es un directorio simple que incluye todo lo que tu aplicación requiere para un funcionamiento exitoso, incluyendo el ejecutable de tu app, recursos, el archivo Info.plist y otros archivos como frameworks de macOS.
Para empaquetar tu app como un macOS application bundle puedes usar la CLI de Tauri y ejecutar el comando tauri build en una computadora Mac:
npm run tauri build -- --bundles appyarn tauri build --bundles apppnpm tauri build --bundles appdeno task tauri build --bundles appbun tauri build --bundles appcargo tauri build --bundles appEstructura de archivos
Sección titulada «Estructura de archivos»El app bundle de macOS es un directorio con la siguiente estructura:
├── <productName>.app│ ├── Contents│ │ ├── Info.plist│ │ ├── ...additional files from [`tauri.conf.json > bundle > macOS > files`]│ ├── MacOS│ │ ├── <app-name> (app executable)│ ├── Resources│ │ ├── icon.icns (app icon)│ │ ├── ...resources from [`tauri.conf.json > bundle > resources`]│ ├── _CodeSignature (codesign information generated by Apple)│ ├── Frameworks│ ├── PlugIns│ ├── SharedSupportConsulta la documentación oficial para obtener más información.
Configuración nativa
Sección titulada «Configuración nativa»El app bundle se configura mediante el archivo Info.plist, el cual incluye pares clave-valor con la identidad de tu app y valores de configuración leídos por macOS.
Tauri configura automáticamente las propiedades más importantes como el nombre del binario de tu app, versión, identificador de bundle, versión mínima del sistema y más.
Para extender el archivo de configuración, crea un archivo Info.plist en la carpeta src-tauri e incluye los pares clave-valor que desees:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>NSCameraUsageDescription</key> <string>Request camera access for WebRTC</string> <key>NSMicrophoneUsageDescription</key> <string>Request microphone access for WebRTC</string></dict></plist>Este archivo Info.plist se combina con los valores generados por la CLI de Tauri. Ten cuidado al sobrescribir valores predeterminados como la versión de la aplicación, ya que podrían entrar en conflicto con otros valores de configuración
y presentar un comportamiento inesperado.
Consulta la documentación oficial de Info.plist para obtener más información.
Localización de Info.plist
Sección titulada «Localización de Info.plist»El archivo Info.plist por sí solo solo admite un único idioma, típicamente inglés. Si deseas admitir múltiples idiomas, puedes crear archivos InfoPlist.strings para cada idioma adicional. Cada archivo pertenece a su propio directorio lproj específico de idioma dentro del directorio Resources en el application bundle.
Para empaquetar estos archivos automáticamente puedes aprovechar la característica de recursos de Tauri. Para hacerlo, crea una estructura de archivos en tu proyecto siguiendo este patrón:
├── src-tauri│ ├── tauri.conf.json│ ├── infoplist│ │ ├── de.lproj│ │ │ ├── InfoPlist.strings│ │ ├── fr.lproj│ │ │ ├── InfoPlist.stringsSi bien el nombre del directorio infoplist se puede elegir libremente, siempre que lo actualices en la configuración de recursos a continuación, los directorios lproj deben seguir la nomenclatura <lang-code>.lproj y los archivos de catálogo de cadenas deben llamarse InfoPlist.strings (I y P mayúsculas). En la mayoría de los casos, el código de idioma debe ser un código de dos letras siguiendo BCP 47.
Para el ejemplo de Info.plist mostrado anteriormente, el archivo de.lproj > InfoPlist.strings podría verse así:
NSCameraUsageDescription = "Kamera Zugriff wird benötigt für WebRTC Funktionalität";NSMicrophoneUsageDescription = "Mikrofon Zugriff wird benötigt für WebRTC Funktionalität";Por último, haz que Tauri detecte estos archivos utilizando la característica de recursos mencionada anteriormente:
{ "bundle": { "resources": { "infoplist/**": "./" } }}Entitlements
Sección titulada «Entitlements»Un entitlement es un par clave-valor especial de configuración de Apple que actúa como un derecho o privilegio que otorga capacidades particulares a tu app, tales como actuar como el cliente de correo electrónico predeterminado del usuario y usar la función App Sandbox.
Los entitlements se aplican cuando tu aplicación se firma. Consulta la documentación de firma de código para obtener más información.
Para definir los entitlements requeridos por tu aplicación, debes crear el archivo de entitlements y configurar Tauri para usarlo.
- Crea un archivo
Entitlements.plisten la carpetasrc-tauriy configura los pares clave-valor que tu app requiera:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>com.apple.security.app-sandbox</key> <true/></dict></plist>- Configura Tauri para usar el archivo Entitlements.plist:
{ "bundle": { "macOS": { "entitlements": "./Entitlements.plist" } }}Consulta la documentación oficial para obtener más información.
Versión mínima del sistema
Sección titulada «Versión mínima del sistema»Por defecto, tu aplicación de Tauri es compatible con macOS 10.13 y superior. Si estás utilizando una API que requiere un sistema macOS más reciente y deseas hacer cumplir ese requisito en tu app bundle,
puedes configurar el valor tauri.conf.json > bundle > macOS > minimumSystemVersion:
{ "bundle": { "macOS": { "minimumSystemVersion": "12.0" } }}Incluir frameworks de macOS
Sección titulada «Incluir frameworks de macOS»Si tu aplicación requiere frameworks adicionales de macOS para ejecutarse, puedes enumerarlos en la configuración tauri.conf.json > bundle > macOS > frameworks.
La lista de frameworks puede incluir tanto frameworks del sistema o personalizados como archivos dylib.
{ "bundle": { "macOS": { "frameworks": [ "CoreAudio", "./libs/libmsodbcsql.18.dylib", "./frameworks/MyApp.framework" ] } }}Agregar archivos personalizados
Sección titulada «Agregar archivos personalizados»Puedes usar la configuración tauri.conf.json > bundle > macOS > files para agregar archivos personalizados a tu application bundle,
la cual mapea la ruta de destino a su fuente relativa al archivo tauri.conf.json.
Los archivos se agregan a la carpeta <product-name>.app/Contents.
{ "bundle": { "macOS": { "files": { "embedded.provisionprofile": "./profile-name.provisionprofile", "SharedSupport/docs.md": "./docs/index.md" } } }}En el ejemplo anterior, el archivo profile-name.provisionprofile se copia a <product-name>.app/Contents/embedded.provisionprofile
y el archivo docs/index.md se copia a <product-name>.app/Contents/SharedSupport/docs.md.
© 2026 Colaboradores de Tauri. CC-BY / MIT