2009-09-02 14 views
4

私のアプリケーションをリムーバブルストレージデバイスから実行し、実行中のリムーバブルストレージまたはアプリケーションが起動されているリモートストレージデバイスのパスを取得する必要があります。 リムーバブルストレージデバイスのパスを取得するためにnsworkspaceを見ましたが、実行時にパスを取得する方法はわかりません。実行時にアプリケーションのパスを取得する+ココア

これを行う方法をお勧めします。私はネットを検索して、Macシステムに自動実行機能がないことを知りました。リムーバブルストレージがMacシステムに接続されているときはいつでも、自分のアプリが自動的に起動するようにしたい。このための回避策はありますか?

おかげ

答えて

9

[[NSBundle mainBundle] bundlePath]は、あなたの.appラッパーへのパスを提供します。

そこから、NSFileManager APIを使用してボリュームを列挙し、アプリがどちらのものであるか、そして取り外し可能な条件を満たすかどうかを判断する必要があります。 APIはSnow Leopardで大幅に更新されています。

脇;これはアプリケーションのための明確に奇妙な要件です。典型的ではないとは言えない。

+2

また、FoundationToolを実行している場合、 '[[NSBundle mainBundle] executablePath]' –

+0

お返事ありがとうございました – King

5

自動実行機能の2番目の質問には、ボリュームがマウントされたことを検出し、それを使用して(プログラムの起動のような)アクションをトリガーする方法がいくつかあります。しかし、それらのすべてでは、デーモンを実行してボリュームマウントを監視できるように、ソフトウェアがすでにインストールされている必要があります。私はプログラムがそのようなことをしなければならないことを示唆しているわけではありませんが(それは決してすべきではありません)、技術です。私はこれがあなたが求めているものではないと思う。

システムをボリュームマウントに基づいて自動的に実行させるという疑わしい機能は、OS Xのリリースで削除されました。このような動作が再追加されることはほとんど想像もつきません。これは、さまざまな虐待への招待であり、ユーザーにはほとんど利益がありません。 OS Xでは、新しいボリュームがマウントされたときにFinderウィンドウが開きます。ルートディレクトリには、アプリの起動方法を教える便利な背景イメージを自由に指定できます。

+0

返信いただきありがとうございます – King

関連する問題