4

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

これを行う方法を提案してください。また、ネットを検索したところ、Mac システムには自動実行機能がないことがわかりました。リムーバブル ストレージが Mac システムに接続されるたびに、アプリが自動的に起動するようにします。これに対する回避策はありますか?

ありがとう

4

2 に答える 2

10

[[NSBundle mainBundle] bundlePath].app ラッパーへのパスが表示されます。

そこから、NSFileManagerAPI を使用してボリュームを列挙し、アプリがどのボリューム上にあるか、およびそれがリムーバブル性の基準を満たしているかどうかを判断する必要があります。API は Snow Leopard で大幅に更新されました。

余談です。これは、アプリケーションにとって明らかに奇妙な要件です。控えめに言っても、非定型です。

于 2009-09-02T21:33:19.283 に答える
5

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

システムがボリューム マウントに基づいて何かを自動的に実行するという疑わしい機能は、OS X のリリースで削除されました。そのような動作が再び追加されることはほとんど考えられません。これは、ユーザーにとってほとんどメリットのない、さまざまな悪用への誘いです。OS X は、新しいボリュームがマウントされると Finder ウィンドウを開きます。アプリの起動方法をユーザーに指示するルート ディレクトリの便利な背景画像を自由に提供できます。

于 2009-09-02T21:59:34.270 に答える