2 votos

AppleScript muestra "Documento no se puede abrir. Usted no tiene permiso". pero que puede abrir el archivo?

Me estoy haciendo un "documento de [nombre de archivo] no se pudo abrir. Usted no tiene permiso" al intentar acceder a varios archivos en un AppleScript. Sin embargo, puedo abrir estos archivos manualmente sin problema.

He intentado hacer lo siguiente:

  • Modificado manualmente el permiso a través de la File->Get Info
  • Utilizar la Utilidad de Discos para "Verificar" y "Reparar Permisos"
  • Reiniciar en modo de recuperación para restablecer los permisos de directorio principal y acl

Sigo teniendo el problema.

Para añadir aún más la frustración, los archivos no reportan el error. A veces voy a obtener el error en un archivo cuando la ejecute la secuencia de comandos, pero no la próxima vez!

¿Por qué podría yo estar recibiendo este error de permisos, y cómo más puedo resolverlo?

AppleScript a continuación, por si ayuda:

-- prompt for source directory
set srcDirectory to (choose folder)

-- get list of all files in source directory
set allFiles to (list folder srcDirectory without invisibles)

tell application "OmniGraffle"
    -- create a new document
    set newDocument to (make new document with properties {template:"Single Pixel Grid"})

    -- added for debug purposes
    delay 5

    -- get a reference to the first layer
    set destinationLayer to first layer in first canvas of newDocument

    -- step through each of the file
    repeat with currentFile in allFiles
        -- get a reference to the next file
        set srcFileString to (srcDirectory as string) & currentFile
        set srcFileRef to (open srcFileString)

        -- get a reference to the icon
        set srcGraphic to first graphic in first layer in first canvas of srcFileRef

        -- flip the icon (they're all upside down)
        flip srcGraphic over vertically

        -- copy the updated source to destination canvas
        duplicate srcGraphic to destinationLayer

        -- close the source file
        close srcFileRef saving no

        -- added for debug purposes
        delay 5
    end repeat

end tell

5voto

Ido Schacham Puntos 1373

Este problema está causado por Apple sandboxing de aplicaciones (en este caso, OmniGraffle. Vista previa de no recibir un derecho a acceder a los PDF si usted acaba de pasar por una cadena en abierto. A partir de Apple notas de la versión:

Notas De Compatibilidad

Cuando el envío de comandos a un espacio aislado de la aplicación, tales como TextEdit en OS X Mountain Lion, los parámetros que hacen referencia a los archivos deben ser de un explícito de archivo como tipo y no de una simple cadena, o el objetivo de la aplicación no será capaz de acceder al archivo. Por ejemplo, el archivo "Macintosh HD:Users:me:sample.txt", POSIX archivo "/Users/me/sample.txt" o el resultado de elegir el archivo de todo ser aceptable, pero la cadena "/Users/me/sample.txt" no lo haría.

¿Por qué a veces el trabajo? Al abrir un archivo de forma manual, la aplicación se reserva el derecho a abrir (en Recientes, por ejemplo). Por lo tanto, si intenta cualquier archivo que hemos abierto ya, las probabilidades son que va a funcionar, pero no funciona en los nuevos archivos.

Para corregir, cambiar el código para que se lea:

...
    set srcFileRef to (open POSIX file srcFileString)
...

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