La imagen de disco y la instalación
Cómo se entrega una aplicación de macOS: qué ve el usuario al abrirla, qué convenciones espera, y el fallo de instalación que produce las incidencias más raras.
La convención
Lo que un usuario de macOS espera al abrir la imagen:
- El paquete de la aplicación, a la izquierda.
- Un acceso a la carpeta de aplicaciones, a la derecha.
- Y una flecha o un fondo que sugiere arrastrar de una a otra.
Nada más. Ni instrucciones largas, ni ficheros extra, ni un léeme. La convención es tan conocida que explicarla sobra, y añadir cosas la ensucia.
Tauri produce esto solo, y permite personalizar el fondo y las posiciones. Merece hacerlo bien: es lo primero que el usuario ve de tu producto.
El fallo de ejecutar sin instalar
Y es más frecuente de lo que parece, porque el gesto de hacer doble clic sobre lo que se ve es completamente razonable.
Detectarlo y avisar
La solución es de tu código, y es sencilla:
// al arrancar: ¿estamos corriendo desde donde deberíamos?fn corriendo_desde_imagen(app: &AppHandle) -> bool { app.path().resource_dir() .map(|p| p.starts_with("/Volumes/")) .unwrap_or(false)}Y si es así, avisar con claridad: «para poder actualizarse, esta aplicación tiene que estar en la carpeta de Aplicaciones. Arrástrala ahí y vuelve a abrirla.»
Y ofrecer hacerlo por él es todavía mejor: copiar el paquete a la carpeta de aplicaciones, cerrar y abrir la copia. Es lo que hacen algunas aplicaciones cuidadas y resuelve el problema sin que el usuario tenga que entender nada.
Imagen o instalador
Una decisión menor con dos criterios:
- La imagen es la convención y lo que un usuario de macOS espera. Es la opción por omisión y casi siempre la correcta.
- Un instalador tiene sentido si hay que hacer algo más que copiar: instalar un componente del sistema, registrar un servicio, pedir privilegios. Y esas son cosas que conviene evitar —nivel 36.5— así que el instalador suele ser una señal de que la aplicación pide más de lo que debería.
Y una nota: un instalador de macOS necesita su propio tipo de certificado. Nivel 60.1.