Ho trascorso la giornata facendo diverse ricerche e tentativi su come copiare un file che si trova all'interno di un'app AppleScript nella directory di supporto dell'applicazione radice ( hdd -> Library -> Application Support
). Inizialmente pensavo che si trattasse di un problema con la chiamata di do shell script
e administrator privileges
, ma per qualche ragione se ho un file che si trova in un'app AppleScript provo a chiamare quel file da aggiungere all'Application Support, ad esempio:
set foo to "Macintosh HD/Users/vader/someapp.app/Contents/Resources/Scripts/foobar.txt"
set bar to "Macintosh HD/Library/Application Support/"
do shell script "cp " & (quoted form of foo) & space & (quoted form of bar) with administrator privileges
L'ho portato al form di base quando si tratta del percorso della cartella e del percorso del file, ma quando corro quanto sopra ricevo un messaggio di errore di:
cp: Macintosh HD/Users/vader/someapp.app/Contents/Resources/Scripts/foobar.txt: No such file or directory
Posso restituire vero che il file esiste nell'app con:
set foobar to POSIX path of (path to resource "foobar.txt" in directory "Scripts")
if not (exists foobar) then
return false
else
return true
end if
Ho provato questo con:
tell application "Finder" to duplicate file (foo) to folder (bar)
ma non ha funzionato.
Ricerche quando ho provato a rimuovere il file dopo averlo aggiunto manualmente (sì, ho i permessi di amministratore sulla mia casella):
Ho studiato diverse aree per vedere come implementare la richiesta di autorizzazioni utilizzando administrator privileges
ma senza fortuna:
- Impossibile eliminare la directory tramite AppleScript
- AppleScript: confronta ed elimina i file nella cartella
- Elimina automaticamente le cartelle temporanee ~ / Library / Application Support
- Elimina le cartelle se esistono ed elimina
- Applescript oe shellscript per eliminare il file di configurazione?
- Elimina i file con AppleScript per riciclare o in modo permanente
Ecco i seguenti tentativi che ho provato:
Eventi di sistema di AppleScript:
tell application "System Events" to delete file appWithPath
eseguono i tentativi della shell:
tentativo 1
do shell script "rm -f " & appNamewithQuotedFormPath with administrator privileges
tentativo 2
do shell script "find " & quotedPathToDirectory & " -name \"" & applicationName & "\" -type f -delete" with administrator privileges
Ancora non funzionerebbe e ho controllato con:
do shell script "echo " & appNamewithQuotedFormPath with administrator privileges
Dopo aver scavato nello Script Editor ho scoperto che stavo ottenendo -10004 error
, quindi ho cercato:
quindi ho spostato l'aggiunta e la rimozione del file in Application Support a un gestore che non aveva un blocco try ma ancora nulla.
Pensando che potrebbe essere un problema con i privilegi utilizzati Ho provato tutti i seguenti parametri utilizzati con Scripting Additions
:
In un'app AppleScript, come posso aggiungere e rimuovere un file esistente nell'app nella directory di supporto dell'applicazione radice?
Modifica
Dopo ulteriori test ho rimosso l'utilizzo di Macintosh HD
e il do shell script
funzionerebbe, ma non capisco perché ciò potrebbe causare il fallimento dello script. Perché l'aggiunta di Macintosh HD
al percorso può causare errori nello script?