Mac OS 10.16下Indesign Extended Script无法创建文件问题咨询
是的,该问题绝大多数情况和Mac系统的权限限制有关,同时你的路径写法也存在跨系统兼容问题,具体说明和解决方案如下:
核心原因
- Mac系统的权限限制:从OS X 10.11版本开始引入的系统完整性保护(SIP) 机制默认锁定了
/Applications、/System等系统级目录的写入权限,仅root用户有权限修改,普通应用运行时默认没有该目录的写入权限。如果你的InDesign是从App Store下载的版本,还会受到更严格的沙盒限制,默认禁止访问系统级公共目录。 - 路径写法错误:你使用的
applications/foldername/filename.txt是相对路径,在Mac环境下会默认相对于InDesign应用的运行目录,而非系统根目录下的Applications文件夹,路径本身指向错误也会导致文件创建失败。正确的绝对路径写法应为/Applications/foldername/filename.txt,注意Mac路径区分大小写,前缀需为大写的/Applications。
排查方法
你可以在现有函数中加入权限校验代码,快速定位问题:
function writeToFile(fileObj, fileContent){ encoding = encoding || "utf-8"; fileObj = (fileObj instanceof File) ? fileObj : new File(fileObj); var parentFolder = fileObj.parent; // 新增调试代码,输出路径和权限状态 alert("目标父路径:" + parentFolder.fsName + "\n路径是否存在:" + parentFolder.exists + "\n是否有写入权限:" + parentFolder.access("w")); if (!parentFolder.exists && !parentFolder.create()) throw new Error("Cannot create file in path " + fileObj.fsName); fileObj.encoding = encoding; fileObj.open("w"); fileObj.write(fileContent); fileObj.close(); return fileObj; }
运行后如果输出「是否有写入权限:false」,就可以确认是权限限制导致的问题。
解决方案
方案1(推荐,无需修改系统权限)
不要往系统级的/Applications目录写入文件,改用用户目录下的可写路径,比如文档目录、桌面,ExtendScript内置了跨系统的目录常量,兼容性更好:
// 示例:写入当前用户的文档目录下的foldername文件夹 fileobject = Folder.myDocuments.fsName + "/foldername/filename.txt"; filecontent = "text"
用户目录默认对当前登录用户开放读写权限,不会触发系统权限拦截,同时兼容Windows和Mac双系统。
方案2(确实需要写入Applications目录时使用)
手动给InDesign开放完全磁盘访问权限:
- 打开Mac「系统设置」→「隐私与安全性」→ 下拉找到「完全磁盘访问」
- 在列表中找到InDesign,打开右侧的权限开关
- 完全退出InDesign后重新启动,再运行脚本即可正常写入
内容的提问来源于stack exchange,提问作者Lance
相关产品推荐
相关产品推荐

