【发布时间】:2019-02-27 01:03:52
【问题描述】:
我正在使用 Applescript 来处理我的产品安装程序的部分工作。多年来,我一直在使用相同的脚本而没有遇到任何问题,但最近有几个用户报告说该脚本没有自行清理,这会导致问题。我无法在我的系统上重新创建它,所以想知道你们中的任何人是否可以阐明为什么会在某些系统上发生这种情况。
安装程序是 *.pkg 文件。安装程序在用户的主目录中创建一个名为 Contents 的文件夹,其中包含有效负载(一个或多个包含 *.pyc 和 *.txt 文件的文件夹)以及 Applescript,然后调用一个看起来像所以:
#!/bin/sh
open "$2/Contents/Live AutoConfig.app"
exit 0
AutoConfig.app 是编译后的 Applescript。它将 Contents 中的有效负载传输到应用程序中多个 *.app 文件之一的内容中。这部分工作正常。在此传输结束时,脚本应删除 Contents 文件夹。这是行不通的。清理代码如下所示:
on clean_up()
set temp_path to path to me
tell application "Finder"
set script_path to (container of temp_path) as Unicode text
delete (script_path)
end tell
end clean_up
当这不起作用时,没有错误消息或任何东西。 Contents 文件夹并没有按原样删除。而且,是的,我确定正在调用 clean_up。我觉得这很奇怪,因为从安全角度来看,我认为将文件传输到 *.apps 比从主目录中删除文件夹风险更大,但传输工作正常。很奇怪。
一些附加信息:安装程序和脚本是使用 10.5.8 创建的(FWIW,这似乎不是问题,因为安装程序在我运行 10.12.6 及更高版本的其他系统上仍然可以正常工作)。遇到此问题的用户正在 10.12.6 和 10.13.6 上运行安装程序。
关于为什么会发生这种情况的任何想法?
【问题讨论】:
-
可能与您应用的辅助功能权限有关。您没有使用
temporary items等标准位置是否有特殊原因? -
如果这是一个可访问性问题,我认为它会影响整个脚本(特别是其中将文件传输到其他应用程序的部分),而不是仅影响其中的一部分。在相关说明中,我没有授予安装程序在我正在测试它们的系统上的任何特殊权限。
-
至于
temporary items,我不确定如何在 packagemaker 中使用它,但我会研究它。感谢您的建议! -
访问权限将与您的应用程序使用 Finder(苹果事件)有关 - 也许使用 shell 脚本直接删除临时文件夹?
-
明白了。我可能应该提到我也在使用 Finder 进行传输。使用 shell 脚本进行删除是个好主意。我会试试看。
标签: applescript