我试图编写几个共享常用功能的AppleScript脚本。理想情况下,他们会include a separate file where these functions are defined。
由于这将存储在存储库中而不是锁定到特定的计算机,因此我无法依赖脚本库目录来执行此操作。我试图load a script from a relative path。
但似乎没有任何效果。起初我认为这个问题与spaces in the directory name有关,但是在我从一个不包含空格的目录中进行测试之后,很明显osascript
正在查找文件而且只是拒绝打开它。
错误"脚本似乎不属于AppleScript。"编号-1752来自" /path/to/common.applescript"
这甚至意味着什么,我该如何解决?
答案 0 :(得分:5)
AppleScript的内置库加载器(10.9+)和load script
命令(所有OS版本)都需要编译(.scpt
/ .scptd
)AppleScript文件[1]。 OSA对源代码文件格式一无所知(例如.applescript
),并且无法自己读取或写入它们;只有脚本编辑器,osacompile
,osadecompile
等外部工具知道如何操作。
您可以将已编译的文件存储在repo [2]中,也可以在将.applescript
复制到{{1}时编写一个部署脚本,通过osacompile
运行未编译的文件(Script Libraries
)文件夹(或者你在哪里部署它们)。
-
[1] 是的,这很烦人,但OSA早于“现代”SCM系统,它的文件系统交互更多地建立在Smalltalk machine样式持久性上,而不是Unix的“让我们假装一切都是ASCII文本文件”的方法。
[2]
虽然你将失去的能力,diff的他们,除非你想用你的SCM的差异挂钩渣土约所以它始终贯穿.scpt[d]
文件osadecompile
创建临时.applescript
文件,然后可以正常分化。