Los errores de ruta
Escribir junto al binario, fijar rutas en el código, suponer permisos y la pregunta de la aplicación portable. Los cuatro fallos que solo aparecen en máquinas ajenas.
Los cuatro
El primero, con detalle
Porque es el más frecuente y el que más se defiende. La secuencia típica: en desarrollo se escribe un fichero junto al ejecutable, funciona perfectamente durante meses, y falla el día del primer instalador. Y falla de tres formas distintas según el sistema:
- Windows: el directorio de programas no es escribible por un usuario normal. El error es de permisos y llega al arrancar.
- macOS: escribir dentro del paquete de la aplicación invalida su firma, con lo que el sistema puede negarse a ejecutarla. Es peor que un error de permisos: es una aplicación que deja de abrirse.
- Linux: depende de dónde se instalara, y normalmente tampoco.
No hay ninguna variante que funcione. Si tu aplicación necesita escribir algo, va a uno de los cinco directorios del nivel 39.1.
El tercero, que sorprende
Las rutas no son cadenas simples, y hay cuatro casos que rompen suposiciones:
La defensa es no manipular rutas como cadenas. El tipo de ruta del lenguaje existe para esto: une componentes correctamente, respeta el separador de cada sistema, y no rompe con caracteres inesperados. Cada vez que aparece una concatenación de texto para construir una ruta, hay un fallo esperando.
La pregunta de la aplicación portable
El cuarto no es un error: es una decisión, y merece tomarla explícitamente.
Una aplicación portable guarda todo junto a sí misma —en su propia carpeta, no en la del sistema— para poder llevarse en una memoria o copiarse entre equipos. Es útil en entornos restringidos y muy apreciado por cierto tipo de usuario.
Lo que cuesta:
- Pierdes los contratos del nivel 39.3. Nada entra en las copias del usuario, nada se limpia solo, y todo depende de que esa carpeta sobreviva.
- Pierdes el almacén de secretos, o al menos su sentido: un secreto en el llavero del sistema no viaja con la carpeta, así que una sesión portable no lo es.
- Y necesitas permisos de escritura donde esté la carpeta, que en un directorio de programas no los hay.
La forma correcta si la quieres: que sea un modo explícito —activado por la presencia de un fichero marcador junto al ejecutable, que es la convención habitual— y no el comportamiento normal. Así la instalación estándar se comporta como el sistema espera y quien necesite la versión portable la tiene.