1 votos

¿Cómo montar un archivo .dmg con JXA?

Hice el siguiente AppleScript

tell application "DiskImageMounter"
    try
        open alias imagePath
    on error errText
        display dialog "Could not mount" & errText
    end try
end tell    

Me gustaría rehacerlo en JavaScript. Intenté encontrar la API actual en la librería Editor, pero no pude encontrar cómo controlar la Utilidad de Discos con JavaScript.

¿Cuál es la sintaxis o la referencia para interactuar con la Utilidad de Discos o para montar un archivo de imagen de disco desde el marco JXA?

3voto

qarma Puntos 71

Uno no usaría DiskImageMounter para hacer esto porque, a pesar de que da la ilusión de que es scriptable y cargado con comandos en su diccionario AppleScript, nunca devuelve una referencia válida a ninguna imagen que abra; por lo tanto, AppleScript nunca es informado de que ha hecho el trabajo; y DiskImageMounter lo elimina, lo deja, e invalida la conexión con AppleScript lanzando un error. Y lo hace cada. Una. vez. Por lo tanto, es fiable bolas.

La forma de montar una imagen de disco con AppleScript es utilizar una aplicación que muy raramente avalo utilizar sino para muy pocas tareas específicas, que es Buscador . DiskImageMounter es la única aplicación menos fiable que Buscador pero Buscador es un trier, y tiene éxito con el montaje de volúmenes sin causar demasiado escándalo:

set f to POSIX file "/path/to/diskimage.dmg" as alias
tell application id "com.apple.Finder" to open f

Tampoco devuelve una referencia al volumen montado, pero puede obtener Buscador para enumerar los discos ya montados de antemano, y volver a enumerarlos después, y el nuevo que aparezca será su volumen montado:

set f to POSIX file "/path/to/diskImage.dmg" as alias
tell application id "com.apple.Finder"
    set ejectables to disks

    open f

    repeat until disks ≠ ejectables
        delay 1
    end repeat

    return the POSIX path of last item of (disks as alias list)
end tell

Finalmente... El JXA:

Finder=Application('com.apple.Finder');
f=Path('/path/to/diskImage.dmg');
Finder.open(f);

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