J'essaie de simuler la copie de fichiers du Finder, mais dans un répertoire protégé, en utilisant AppleScript. Le but est de copier un seul fichier mais de l'élever si nécessaire, comme Finder se comportera en le faisant manuellement.
- Au départ, j'ai essayé d'utiliser
do shell script [...] with administrator privileges
- Cela n'a pas fonctionné, je pense que c'est dû au sandboxing,
osascript
les commandes du shell pouvaient lire le répertoire de mon bureau lorsqu'elles étaient exécutées en tant que moi, mais étaient bloquées lorsqu'elles étaient exécutées en tant qu'administrateur.
- Cela n'a pas fonctionné, je pense que c'est dû au sandboxing,
- J'ai essayé d'utiliser le
copy
mais j'ai rapidement constaté que c'est PAS pour copier des fichiers . C'est déroutant, de nombreuses solutions l'utilisent encore . - Je lis que
duplicate
est probablement le mot clé sur lequel je devrais me concentrer. mais j'ai du mal à utiliserPOSIX file
et lorsque vous utilisezalias
.
Un exemple de test sans élévation :
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 exemple de test avec élévation :
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
Malheureusement, entre POSIX et les alias, j'ai du mal à m'y retrouver. Quelques erreurs que je reçois :
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
Je les teste actuellement avec scriptÉditeur mais une solution en Terminal est également la bienvenue.