2009-09-02 97 views
4

我希望我的应用程序能够从可移动存储设备上运行,并且它应该获取从中运行的可移动存储或从中启动应用程序的rem存储设备的路径。 我看到nsworkspace获取可移动存储设备的路径,但不知道如何在运行时获取路径。在运行时获取应用程序的路径+ cocoa

请建议一种方法来做到这一点。我也搜索了网络,并知道在mac系统上没有自动运行功能。我希望我的应用能够在移动存储连接到Mac系统时自动启动。有没有解决这个问题的方法?

感谢

回答

9

[[NSBundle mainBundle] bundlePath]会给你的路径,您的.app包装。

从那里开始,您需要使用NSFileManager API来枚举卷并找出您的应用程序所在的位置以及它是否符合可移动性标准。 Snow Leopard已经对API进行了重大更新。

撇开;这对于一个应用程序来说是一个非常奇怪的要求。非常典型,至少可以说。

+2

或者,如果您正在运行FoundationTool,则可以使用[[[NSBundle mainBundle] executablePath]'。 – 2009-09-02 21:39:10

+0

谢谢各位的回复 – King 2009-09-02 21:42:07

5

对于自动运行功能的第二个问题,有几种技术可以检测卷是否已装入,然后使用它来触发操作(如启动程序)。但是他们都需要你的软件已经安装好,以便你可以运行一个守护进程来监视卷的安装。我并不是说程序应该做这样的事情(它几乎从不应该),但它是一种技术。我怀疑这不是你要问的。

随着OS X的发布,系统自动运行某些基于卷装的问题被删除了。几乎不可思议的是,这种行为将被重新添加。这是对各种滥用行为的邀请,对用户来说收益甚微。 OS X将在挂载新卷时打开Finder窗口,并且可以为根目录提供有用的背景图像,以指导用户如何启动应用程序。

+0

谢谢罗博的回复 – King 2009-09-03 21:31:07

相关问题