【发布时间】:2016-01-19 15:02:42
【问题描述】:
我尝试运行苹果脚本
#! /usr/bin/osascript
do shell script "chmod 777 /Library/ColorSync/Profiles" with administrator privileges
它在脚本编辑器和终端中完美运行。但无法使用 Objective C 运行。任何帮助将不胜感激。
-(void)executeAppleScript{
NSDictionary* errorDict;
NSAppleEventDescriptor* returnDescriptor = NULL;
NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:
@"#! /usr/bin/osascript do shell script \"chmod 777 /Library/ColorSync/Profiles\" with administrator privileges"];
returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
}
【问题讨论】:
-
这不是shebangs的工作方式。它们位于脚本文件的顶部。我只是猜测您是要提供源文件的路径,而不是实际的脚本。如果我有时间,我明天会检查这个,除非其他人先回答
-
非常感谢!太好了
-
-[NSAppleScript initWithSource:]忽略了 shebang 行,因为它已经知道它是 AppleScript 代码。至于为什么它什么都不做,请考虑#也充当注释,并且您已将所有内容写在一行上。综上所述,一个更好的问题是:你为什么首先在/Library文件夹上设置废话权限?那只是不好的做法。 -
是的。我浏览了应用程序分发指南,其中提到对于上传到商店的所有应用程序都建议使用 App Sandboxing,并且在应用程序中使用授权服务 API 不是一个好习惯。尽管我需要将文件写入 Library/ColorSync/Profiles,但我一直在寻找各种可能性。非常感谢。现在可以使用了。
-
如果您需要将文件写入特定位置的权限,请获取写入该文件所需的权限,然后使用这些权限进行写入。 不要删除目录的现有权限:这完全是多余的、不必要的和不安全的。这些权限首先存在是有原因的,随意更改它们不是您的权利或责任。
标签: objective-c macos bash applescript applescript-objc