Resolverlos en Tauri
Cómo se obtiene cada ruta, qué identificador las determina, y por qué cambiarlo deja los datos de tus usuarios en un directorio que tu aplicación ya no mira.
Cómo se piden
Desde Rust, a través del manejador de la aplicación:
use tauri::Manager;let rutas = app.path();let datos = rutas.app_data_dir()?; // lo que el usuario creólet config = rutas.app_config_dir()?; // lo que eligiólet cache = rutas.app_cache_dir()?; // lo reconstruiblelet logs = rutas.app_log_dir()?; // los registroslet temp = std::env::temp_dir(); // los temporales// y siempre, antes de escribir: el directorio puede no existir todavíastd::fs::create_dir_all(&datos)?;La última línea es la que falta en la mitad del código que se escribe. Tauri devuelve la ruta correcta, no garantiza que el directorio exista — y en la primera ejecución de un usuario nuevo, no existe. Es el fallo de «funciona en mi máquina» más literal posible: en la tuya lo creaste hace meses.
El identificador que las determina
Todas esas rutas se construyen a partir del identificador de tu aplicación en la configuración — el mismo del nivel 7.2, y el mismo que en macOS determina la identidad de firma del nivel 35.3.
Tres cosas a la vez, todas silenciosas. Por eso la regla del nivel 7.2 —elegir el identificador el primer día y no tocarlo— tiene aquí su segunda razón, y la más cara.
Y si hay que cambiarlo
A veces es inevitable —un renombrado de producto, un cambio de dominio—. Entonces es una migración, con la misma forma que la del nivel 35.3:
Desde el frontend
También se pueden pedir desde el frontend, con el plugin correspondiente, y aquí aplica la fase V: hacerlo requiere un permiso, y ese permiso deja que el frontend conozca rutas del disco del usuario.
La pregunta del nivel 14.4 se aplica igual: ¿para qué las necesita? Si es para pasárselas a un comando de lectura, el diseño correcto es que el comando sepa dónde están sus cosas y el frontend no necesite saberlo. Si es para mostrarle al usuario dónde se guardan sus datos —que es un caso legítimo y útil— basta con un comando que devuelva esa cadena para enseñarla.
En una aplicación bien diseñada, el frontend no conoce ninguna ruta.