2011-04-20 36 views
2

当我在命令行上运行以下命令时,我可以静默安装程序包,但是当我将下面的代码放入目标c程序并运行它时。该软件包未安装。无形安装在目标C中

Shell命令 -

echo password |须藤-S安装-pkg /Users/prashanth/Desktop/AppTest.mpkg -target/

目标C -

系统(@“回波密码|须藤-S安装-pkg /用户/普拉香特/桌面/ AppTest.mpkg -target /“);

+0

NSTask,只适用于sudo,会更好,因为您可以自己将密码写入其标准输入,但仍不是正确的解决方案。更接近于AuthorizationExecuteWithPrivileges(http://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/Reference/reference.html#//apple_ref/c/func/AuthorizationExecuteWithPrivileges)。文档建议的方法是在setuid-root工具中执行真正的工作(运行安装程序),并且仅使用AEWP来设置其setuid状态。 (当然,这假定你的应用程序包不在只读卷上。) – 2011-04-21 08:01:22

+0

我希望这只用于测试,并且你不打算在实际应用程序中静默安装任何东西。 – 2011-04-21 08:01:53

+0

@Prashant你的shell命令对静默安装非常有用。但我想通过这个shell命令传递参数。我想在包安装程序中的安装后脚本中获取此参数。有没有可能做到这一点? – santhosh 2015-02-04 12:16:01

回答

3

system()函数不接受NSString。摆脱@

但是,我不建议这样做。它几乎打败了拥有管理员密码的地步。任何人都可以读取应用程序二进制文件,或者只能看到正在运行的程序的名称将能够以明文形式查看密码。

+0

另外,任何运行'ps ax'的用户都能看到该密码。 – 2011-04-21 01:49:53

+0

工作。谢谢 !! – Prashant 2011-04-21 02:08:43

+0

@Bavarious - 当然,将删除该 – Prashant 2011-04-21 02:09:04