0 votos

Copiar un archivo en un directorio protegido utilizando AppleScript

Estoy tratando de simular la copia de archivos de Finder, pero a un directorio protegido, usando AppleScript. El objetivo es copiar un solo archivo pero elevar cuando sea necesario, como se comportará Finder al hacerlo manualmente.

Un ejemplo de prueba sin elevación:

set posixSrc to (POSIX file "/Users/darwin/Desktop/test.txt") as alias
set posixDst to (POSIX file "/Users/darwin/Desktop/test2.txt") as alias

tell application "Finder"
    duplicate posixSrc to posixDst
end tell

Un ejemplo de prueba con elevación:

set posixSrc to (POSIX file "/Users/darwin/Desktop/test.txt") as alias
set posixDst to (POSIX file "/Applications/My Special App.app") as alias

tell application "Finder"
    duplicate posixSrc to posixDst
end tell

Desgraciadamente, entre POSIX y alias, me cuesta entenderlo todo. Algunos errores que recibo:

error "Finder got an error: Handler can’t handle objects of this class." number -10010

error "Can’t make \"/Users/darwin/Desktop/test2.txt\" into type alias." number -1700 from "/Users/darwin/Desktop/test2.txt" to alias

error "Finder got an error: AppleEvent handler failed." number -10000 from file (file "Macintosh HD:Users:darwin:Desktop:test.txt")

error "Finder got an error: AppleEvent timed out." number -1712

Actualmente estoy probando estos con script Editor pero una solución en Terminal también es bienvenida.

1voto

Zach Puntos 810

Lo tengo...

tell application "Finder"
    set posixSource to (POSIX file "/Users/darwin/Desktop/test.txt" as alias)
    set posixDest to (POSIX file "/Applications/My Special App.app/Contents/" as alias)
    duplicate file posixSource to folder posixDest with replacing
end tell

...y la frase única:

tell application "Finder" to duplicate file (POSIX file "/Users/darwin/Desktop/test.txt" as alias) to folder (POSIX file "/Applications/My Special App.app/Contents/" as alias) with replacing

Algunas distinciones importantes de los intentos fallidos:

  • No se puede poner un alias a un archivo que aún no existe. Para el destino, utilice la carpeta padre del destino en su lugar.
  • No se puede copiar en root de un paquete de aplicaciones (por ejemplo My Special App.app ). Debe copiar en el My Special App.app/Contents en su lugar.
  • Preste especial atención a las palabras clave file y folder ya que se proporcionan a la duplicate comando.
  • Cuando se produce un problema, puede bloquearse script Editor . Envuelva su duplicate llamar ignoring application responses [...] end ignoring para acelerar las pruebas, lo que da lugar a tiempos de espera.
  • Al convertirlo en una sola línea, tendrá que utilizar la palabra clave to después del nombre de la aplicación.

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