从包制造商启动应用程序时,具有管理员权限的NSAppleScript失败

时间:2012-12-13 13:04:57

标签: objective-c macos cocoa applescript packagemaker

我有一个MAC OSX cocoa应用程序,我使用NSAppleScript运行一些具有管理员权限的脚本。当手动启动或从任何其他脚本启动时,该应用程序正常工作。

但是当我尝试从包制造商启动应用程序时,NSAppleScript没有启动预期的脚本。

我制作了一个postflight脚本来从包装制造商启动应用程序。

飞行后:

#!/bin/sh open pathOFApp

NSAppleScript用法:

NSDictionary *error = [NSDictionary new];


NSAppleScript *appleScript = [[NSAppleScript new] initWithSource:@"do shell script \"pathOFScript \" with administrator privileges"];

if ([appleScript executeAndReturnError:&error]) {
          NSLog(@"-----success --------");

}

else{
    NSLog(@"-------Failure-----");

}

请帮忙解决这个问题。

2 个答案:

答案 0 :(得分:0)

我不知道applecript / PackageMaker的答案,但您是否尝试过使用unix安全工具来启动可执行文件?我认为自10.5以来就可以使用。您也可以在一个语句中将它和您的可执行文件结合起来。

/usr/bin/security execute-with-privileges /path/to/executable

答案 1 :(得分:0)

为此获得了解决方案。因为postflight脚本是由packageMaker以root权限启动的,所以它正在使用NSAppleScript创建一些权限问题。在postflight中以“sudo open MyApp”方式启动应用程序将解决此问题。