Comment compiler le script suivant sans activer réellement l'application pendant la compilation ?
tell application "/Applications/VLC.app" to activate
Par exemple, si je fais cela, cela créera non seulement un bundle de lancement, mais activera également VLC.app pendant la compilation:
osacompile -o foo.app -e 'tell application "/Applications/VLC.app" to activate'
Cela lance VLC immédiatement, même si vous ne touchez pas à foo.app
.
J'ai joué avec Info.plist dans VLC.app et j'ai trouvé que le drapeau offensant est celui-ci :
NSAppleScriptEnabled
Si le bundle d'application cible le spécifie, il se lancera à la compilation. Je peux seulement supposer que osacompile
effectue une sorte d'inspection sur le bundle, voit ce drapeau, puis doit d'une manière ou d'une autre activer l'application pour inspecter son support AppleScript ?
VLC est juste un espace réservé ici, j'essaie de créer des lanceurs de manière programmatique pour des applications arbitraires. Ma solution actuelle est do shell script "open \"/Applications/VLC.app\""
. Cela fonctionne pour activer (le crochet run
), mais pas pour d'autres crochets, par exemple
on open names
tell application ... to open names
end open
Cela ouvre également l'application cible à la compilation si elle déclare un support pour les scripts Apple.
Ma question est : comment éviter cela, et simplement créer un script de lanceur pur sans que osacompile lance réellement l'application ?