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.
- Inicialmente intenté utilizar
do shell script [...] with administrator privileges
- Esto no funcionó, creo que debido al sandboxing,
osascript
los comandos del shell podían leer desde el directorio de mi escritorio cuando se ejecutaban como yo, pero se bloqueaban cuando se ejecutaban como administrador.
- Esto no funcionó, creo que debido al sandboxing,
- Intenté usar el
copy
pero rápidamente descubrí que es NO para copiar archivos . Esto es confuso, muchas soluciones siguen utilizándolo . - Estoy leyendo que
duplicate
es probablemente la palabra clave en la que debería centrarme pero estoy luchando con el uso dePOSIX file
y cuando se utilizaalias
.
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.