【发布时间】:2012-01-26 22:36:41
【问题描述】:
我正在开发一个 Mac 应用程序,该应用程序可以选择提供安装一些苹果包格式的额外软件的能力。这个包需要提升(root)权限才能安装,而不是使用帮助工具或AuthorizationExecuteWithPrivileges(),我认为使用 NSTask 调用/usr/bin/open 甚至/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer 与包的路径和让它处理用户授权。
所以,它工作得很好,很漂亮,但是安装程序窗口没有出现在堆栈的前面,也不是关键。我可以在启动任务之前orderOut 调用窗口,这有助于排序,但关键真的是,好吧,让它成为关键。
我是否应该继续实施 Apple 的 BetterAuthorizationSample,因为我可能不得不在将来的某个时候使用它,并且因为尝试过它会成为一个更好的人?
【问题讨论】:
-
一定要使用 Apple 安装程序。编写自己的安装程序并不像您想象的那么简单。另外,如果可能的话,尽量避免使用命令行工具,通常有一个 API 可以做你想做的事。
open命令行工具基本上是 Launch Services C API 的包装器。您可以直接或通过NSWorkspace访问该 API,这是一个包含多个启动服务调用的 Objective-C API。 -
哦,是的,我肯定会使用苹果的安装程序!是
Installer.app还是installer,尚未确定。
标签: objective-c cocoa nstask