4

我正在 Applescript 应用程序中执行以下行。

set POSIX_path to "/Applications/iPhoto.app"
do shell script "sudo rm -rfv " & quoted form of POSIX_path with administrator privileges

身份验证屏幕按原样弹出,但在验证应用程序后,执行此命令时会冻结。此问题仅在 10.9 中出现。

当我将要删除的文件夹的权限设置为“每个人都可以读写”时,它就可以工作了。

有谁知道发生了什么变化?

编辑:当我通过检查重复执行此脚本时du -shx /Applications/iMovie.app,每次尝试都会删除更多文件。

$ open compiled-applescript.app/
$ du -shx /Applications/iMovie.app
1.4G    /Applications/iMovie.app
-- force quit AppleScript --
$ open compiled-applescript.app/
$ du -shx /Applications/iMovie.app
1.3G    /Applications/iMovie.app
-- force quit AppleScript --
$ open compiled-applescript.app/
$ du -shx /Applications/iMovie.app
1.0G    /Applications/iMovie.app
4

3 回答 3

2

有谁知道发生了什么变化?

嗯,是的.. 看门人已经改变,这可能是原因..

当我将要删除的文件夹的权限设置为“每个人都可以读写”时,它就可以工作了。

您是从 Finder 还是从命令行使用chmod 0777? 后者可能会删除一些 Finder 不会删除的属性。

在您的计算机上在这里选择了什么设置?

OSX - 安全和隐私设置

如果您有限制性设置,请尝试“Anywhere”以查看它是否可以解决问题。如果这是原因,您可以:

  1. 安装自定义命令行工具(例如 MacPorts)或您自己编译的东西(因为这发生在 3 台但不是所有计算机上,显然您不是“通用”用户)。
  2. 您的 applescript 不受信任,如果可能,您可以尝试对其进行签名,否则这可能有效:

    如果用户想要运行被 Gatekeeper 阻止的应用程序,他们有多种选择。实际上,可以通过让 Gatekeeper 运行所有应用程序来关闭它。高级用户可以选择删除隔离属性或使用 spctl 命令在安全评估策略子系统中添加新策略。- TrendMicro - 关于 Gatekeeper

  3. 最后的想法..检查您的磁盘权限,如果您使用它,请重新安装 Xcode,也许签名已损坏。
  4. 而是写一个shell脚本,我不知道它是否只是删除一些文件,那么你绝对可以在shell脚本中这样做,或者评论让我知道你想要实现的目标。
于 2013-11-06T09:45:35.470 回答
2

它在 OS X 10.9 (13A603) 上运行良好

set POSIX_path to "/Users/paragbafna/Desktop/untitled folder"
do shell script "sudo rm -rfv " & quoted form of POSIX_path with administrator privileges  

在此处输入图像描述

于 2013-10-24T10:40:42.543 回答
1

经过几天的尝试来解决这个问题,我终于找到了导致这个问题的原因。

它是 rm 命令的详细选项 (-v)。忽略它会使应用程序再次完美运行。也许苹果不小心引入了缓冲区溢出。我将在我在 Apple 的 bugtracker 中创建的问题 ID 15309626 下报告此问题。也许他们会在第一个 10.10 DP 之前修复它:D

于 2013-12-09T11:24:18.277 回答