0 votos

Finder se bloquea al intentar expulsar un disco externo

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

0voto

Douglas Puntos 10417

Finder funciona correctamente

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?

"Uso suelto del disco" es un término muy subjetivo; los ordenadores no funcionan así, ya que no tienen ni idea de lo que pretendes hacer desde que te encuentras en ese directorio. Finder tiene ese directorio montado y accedido por lo tanto no puede ser expulsado.

En segundo lugar, ¿cómo puedo saltarme esta limitación de forma segura, detectando un uso "suelto" del disco, terminarlo y luego proceder con la expulsión según lo previsto?

Cierre la ventana del Finder de ese directorio. Sin embargo, como Finder no tiene una definición para el término "suelto", tendrás que definirlo y luego medirlo. Una vez hecho esto (es decir, comprobar si hay archivos abiertos), puedes cerrarlos, cerrar la(s) ventana(s) del Finder y expulsar.

También podrías forzar el desmontaje o la expulsión del dispositivo, pero eso requeriría privilegios de administrador (autenticación manual), negando así todo este ejercicio de automatización.

0voto

wch1zpink Puntos 11

El 95% de las veces AppleScript me funciona el código.

do shell script "killall -KILL Finder"

En Buscador se cierra, debería reabrirse automáticamente. Después de eso, usted debe ser capaz de expulsar con éxito sus pruebas.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X