我有一个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-----");
}
请帮忙解决这个问题。
答案 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”方式启动应用程序将解决此问题。