Escribí un simple AppleScript para expulsar un disco externo (simplemente "diciéndole" a Finder que haga "eject") y funciona como se espera en casos simples.
Sin embargo, cuando se abre alguna ventana del Finder con una ubicación con ruta dentro del disco (a expulsar), entonces me bloquea la expulsión.
Muestra un diálogo de alerta con lo siguiente:
El disco "MiNombreDeDisco" no ha podido ser expulsado porque el Finder lo está utilizando.
Detenga la acción del Finder y vuelva a intentar expulsar el disco.
En primer lugar, Me encantaría saber por qué los usos "sueltos" del disco se consideran tan serios y se bloquean igual que con los usos explícitos, vía scripting? Por decir, es diferente cuando "usamos" un disco leyendo/escribiendo archivos o ejecutando un archivo compartido/bloqueado en él, frente al simple Finder con carpeta en ese disco. Por ejemplo, cuando intentas expulsar el disco manualmente (vía GUI y clics de ratón) te bloqueará si el disco está "realmente" en uso, pero si sólo está siendo "usado" con un listado de archivos del Finder poco arriesgado, entonces te permitirá expulsarlo sin ninguna advertencia, y cerrará esa ventana del Finder automáticamente sin siquiera preguntar.
En segundo lugar, ¿cómo puedo eludir con seguridad esta limitación ¿al detectar un uso "suelto" del disco, terminarlo y proceder a la expulsión como estaba previsto?
Para que quede claro, considero como "uso flojo", cualquier operación que incluso la GUI de MacOS no avise antes de romperla. Avisará cuando un archivo siga abierto y en uso, o se esté ejecutando alguna copia de archivo en segundo plano, pero no avisará antes de expulsar si simplemente tenemos alguna ventana del Finder abierta. Tampoco avisará si algún fichero está abierto pero no "bloqueando" el disco (por ejemplo abriendo alguna imagen en el disco con el navegador, por lo que "olvida" el origen después de mostrarla).
P.D. Por cierto, también he visto que incluso si una ventana del Finder muestra la lista de archivos dentro de una subcarpeta de un disco externo - si el disco está durmiendo / offline (sin embargo, todavía conectado y disponible como montado, después de algunos minutos sin uso, probablemente en caché de alguna manera) - entonces la expulsión está funcionando bien. ¿Por qué?
P.D. 2 mi script es el siguiente:
set diskName to "MyDiskName"
tell application "Finder"
if disk diskName exists then
eject disk diskName
end if
end tell