開発したアプリの配布先での動作について

90 views
Skip to first unread message

hirororo

unread,
Jan 31, 2010, 4:08:46 PM1/31/10
to cocoa-dev-japan
初投稿です。齊藤と申します。
お世話になります。

先日、初めてCocoaでアプリケーションを作ったのですが、
私のMac以外では、ウィンドウが開くだけで、動作してくれないという状況に陥っています。

単にビルドをReleaceにすれば大丈夫だと思っていたので、
原因がわからず四苦八苦しております。

他に配布する際に気をつけなければならないことがあるのでしょうか?
つたない文章な上に、初歩的な疑問なのかもしれませんがよろしくお願いします。

MATSUMOTO Satoshi

unread,
Jan 31, 2010, 8:16:39 PM1/31/10
to cocoa-d...@googlegroups.com
松本です。

On 2010/02/01, at 6:08, hirororo wrote:
> 先日、初めてCocoaでアプリケーションを作ったのですが、
> 私のMac以外では、ウィンドウが開くだけで、動作してくれ
> ないという状況に陥っています。
> 単にビルドをReleaceにすれば大丈夫だと思っていたので、
> 原因がわからず四苦八苦しております。

Mac のソフトの場合は配布するときに特別なことをする必要はとく
にないです。
うまく動作していなとき、コンソールになにかエラーメッセージは
表示されていないですか?
たぶん共有ライブラリかなにかがそのアプリケーションに含まれて
いないのではないかと思いますが。
-----------------------------------------------------
Satoshi Matsumoto (Artman21 Inc.)
sat...@artman21.co.jp http://www.artman21.com/
TEL/FAX +81-466-24-1028

hirororo

unread,
Jan 31, 2010, 10:17:42 PM1/31/10
to cocoa-dev-japan
齊藤です。

On 2月1日, 午前10:16, MATSUMOTO Satoshi <sato...@mac.com> wrote:

> うまく動作していなとき、コンソールになにかエラーメッセージは
> 表示されていないですか?
> たぶん共有ライブラリかなにかがそのアプリケーションに含まれて
> いないのではないかと思いますが。

コンソールはチェックしていないのですが、(基本的なことをしていなくてすみません)
テストをしてくれた友人からの問題レポートのなかに

Application Specific Information:
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'launch path not accessible'

と書いてあるところがありました。
どのpathなのかよくわからないのですが・・・

Sinbad

unread,
Jan 31, 2010, 11:28:49 PM1/31/10
to cocoa-d...@googlegroups.com
> 他に配布する際に気をつけなければならないことがあるのでしょうか?

 1.OS のバージョンが違う。
 2.存在しないディレクトリ・ファイルをアクセスしている。
 3.アクセス権の無いディレクトリ・ファイルをアクセスしている。

 よくやるのは上記かな・・・

 アプリ内で他のアプリやプログラムを呼び出すのは2に該当ですね。

Sinbad

hirororo

unread,
Feb 1, 2010, 12:03:37 AM2/1/10
to cocoa-dev-japan
>  1.OS のバージョンが違う。
>  2.存在しないディレクトリ・ファイルをアクセスしている。
>  3.アクセス権の無いディレクトリ・ファイルをアクセスしている。

OSは10.6.2で開発して、ビルドする時に10.5を選択したのですが、
10.5以上を対象にするには、これではダメだったりするのでしょうか?

ファイルのアクセスは、同じアプリ内のResourcesにおいてあるshファイル(アクセス権は-rwxrwxrwx)にしかしていないのです
が・・・
もしかして、この辺りで問題が起こっているんでしょうか・・・

Sinbad

unread,
Feb 1, 2010, 12:28:04 AM2/1/10
to cocoa-d...@googlegroups.com
> OSは10.6.2で開発して、ビルドする時に10.5を選択したのですが、
> 10.5以上を対象にするには、これではダメだったりするのでしょうか?

 10.5なら使えるけど 10.3 だと使えないとか、相手が使っているOSに合わせないと動かない機能があると云う事です。
 相手のOSのヴァージョンはご存知ですか?

> ファイルのアクセスは、同じアプリ内のResourcesにおいてあるshファイル(アクセス権は-rwxrwxrwx)にしかしていないのです

 shファイル内で別のファイルにアクセスしていませんか?
 または、shファイルが絶対パスで指定されていて、ルートからの同じディレクトリ位置に無いといけない事は無いですか?

Sinbad

> --
> このグループから退会するには、次へメールをお送りください。
> cocoa-dev-jap...@googlegroups.com
> その他のオプションについては以下にアクセスしてください。
> http://groups.google.com/group/cocoa-dev-japan

hirororo

unread,
Feb 1, 2010, 2:13:00 AM2/1/10
to cocoa-dev-japan
>  10.5なら使えるけど 10.3 だと使えないとか、相手が使っているOSに合わせないと動かない機能があると云う事です。
>  相手のOSのヴァージョンはご存知ですか?


はい、テストしてくれた人は全員10.5以上でした。


>  shファイル内で別のファイルにアクセスしていませんか?
そういえば、していました^^;
ユーザーが作成した普通のテキストに対してなのですが、これがまずいのでしょうか?

>  または、shファイルが絶対パスで指定されていて、ルートからの同じディレクトリ位置に無いといけない事は無いですか?
shファイルのパスは [[NSBundle mainBundle] ]pathForResource:(NSString *)name
ofType:(NSString *)extension]
で取得しているので、大丈夫だと思います。

齊藤

Sinbad

unread,
Feb 1, 2010, 7:37:33 AM2/1/10
to cocoa-d...@googlegroups.com
 shファイル内で別のファイルにアクセスしていませんか?
そういえば、していました^^;
ユーザーが作成した普通のテキストに対してなのですが、これがまずいのでしょうか?


Application Specific Information:
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'launch path not accessible'


 Launch Services自体を使った事が無いのでよく解りませんが(system() 関数しか知りません)
 shファイル起動時にパラメータで指定している(していない)か、内部で使っているパスにアクセス出きないのかと思います。

 OS入れただけのMac用意して試した方が早いかもですね。

Sinbad

Sinbad

unread,
Feb 1, 2010, 8:17:40 AM2/1/10
to cocoa-d...@googlegroups.com
> 他に配布する際に気をつけなければならないことがあるのでしょうか?

 もう1つ思い出しました。
 アプリケーションを起動するディレクトリを「~か~にしろ、そうしないと・・・」と云う記述をどこかのマニュアルで読んだ記憶があります。

 よくやるのは、CDやメモリディスクに入ってるアプリをそのまま起動して「作業領域が無い」と言われる事ですね。

Sinbad

hirororo

unread,
Feb 1, 2010, 9:32:43 AM2/1/10
to cocoa-dev-japan
>  もう1つ思い出しました。
>  アプリケーションを起動するディレクトリを「~か~にしろ、そうしないと・・・」と云う記述をどこかのマニュアルで読んだ記憶があります。
>
>  よくやるのは、CDやメモリディスクに入ってるアプリをそのまま起動して「作業領域が無い」と言われる事ですね。

ん~ローカルに保存した上でテストしてもらったのですが、ローカルでもディレクトリが関係あるということでしょうか?

なんだか、質問攻めで申し訳ないです。

齊藤

hirororo

unread,
Feb 1, 2010, 4:38:06 PM2/1/10
to cocoa-dev-japan
松本様、
すみません、見落としていたのですが、

>たぶん共有ライブラリかなにかがそのアプリケーションに含まれて
>いないのではないかと思いますが。

初心者なので、共有ライブラリが何なのかよくわからないのですが、
何か組み込むような作業が必要があるのでしょうか?

MATSUMOTO Satoshi

unread,
Feb 1, 2010, 4:46:12 PM2/1/10
to cocoa-d...@googlegroups.com
松本です。

'NSInvalidArgumentException', reason: 'launch path not accessible'

でgoogleするといろいろ出てきますが、それらのケースで
は、アプリケーション内部から起動しようとしているunixコ
マンドのファイルが期待するpathに存在していないためが多
いようです。自分とほかのひとで、そのコマンドに対する link
や set path の設定が違うのではないでしょうか?

-----------------------------------------------------
Satoshi Matsumoto <sat...@mac.com>
816-5 Odake, Odawara, Kanagawa, Japan 256-0802

hirororo

unread,
Feb 1, 2010, 7:42:47 PM2/1/10
to cocoa-dev-japan
> アプリケーション内部から起動しようとしているunixコ
> マンドのファイルが期待するpathに存在していないためが多
> いようです。自分とほかのひとで、そのコマンドに対する link
> や set path の設定が違うのではないでしょうか?

えと・・・
あんまり良く無い例えですけど、ls が /bin/ls になかったりするだとか、
shファイルのパスがおかしなことになっていると
起こるってことですよね?

テストしてくださった方々の、コマンドファイルの link や path がどうなっているか、確かめてみます。

何かCocoaというよりUnixな話になってしまってすみません。
そして、根気強くおつきあいくださってありがとうございます。


齊藤

Sinbad

unread,
Feb 1, 2010, 10:54:18 PM2/1/10
to cocoa-d...@googlegroups.com
>>  または、shファイルが絶対パスで指定されていて、ルートからの同じディレクトリ位置に無いといけない事は無いですか?
> shファイルのパスは [[NSBundle mainBundle] ]pathForResource:(NSString *)name
> ofType:(NSString *)extension]
> で取得しているので、大丈夫だと思います。

1. name と extension は固定の文字列だと思いますが、pathForResource: がnilを返した場合どうなりますか?
2.同じ名前で動作が違う sh ファイルが複数存在する場合を想定していますか?
3.sh ファイルはどうやって起動していますか?


 判断材料が少ないのでエラーメッセージからくらいしか原因を追えないですね。
 ソースまるごとメールに添付すれば、石でも卵でも投げ返して貰えると思いますよ。

Sinbad

hirororo

unread,
Feb 1, 2010, 11:56:59 PM2/1/10
to cocoa-dev-japan
> 1. name と extension は固定の文字列だと思いますが、pathForResource: がnilを返した場合どうなりますか?

わざとnilを返すようにしてみたのですが、 No such file or directory のエラーを掃くのですが、
クラッシュしたりはしないみたいです。

> 2.同じ名前で動作が違う sh ファイルが複数存在する場合を想定していますか?

う、想定していませんでした…

> 3.sh ファイルはどうやって起動していますか?
>  判断材料が少ないのでエラーメッセージからくらいしか原因を追えないですね。
>  ソースまるごとメールに添付すれば、石でも卵でも投げ返して貰えると思いますよ。

了解です。
思えば曖昧な質問ですよね・・・
ソースを添付させて頂きます。まだ、初めて1ヶ月も経っていないので、わかりにくいコードかもしれませんがお許しください。
そして、本当にソースまるごとですみませんm(_ _)m

http://ppixy.nomaki.jp/SayJapanese++xcode.zip
こちら(下のURL)は、shファイルが原因なのかもしれないということで、全てObject-Cに書き換えたものです。
http://ppixy.nomaki.jp/SayJapanese++0.03xcode.zip

アプリはLimeChatのログから文章を拾って、
mecab と SayKanaというソフトを使って日本語読み上げをさせようというものです。


お手数でなければ、チェックのほうよろしくお願いします。

齊藤

hirororo

unread,
Feb 2, 2010, 12:01:54 AM2/2/10
to cocoa-dev-japan
連投すみません。

shファイルがあるほうの
appController.m
の63行目からの
-(void)run{

}

の関数で問題が起きているようです。

Application Specific Information:
*** Terminating app due to uncaught exception

'NSInvalidArgumentException', reason: 'launch path not accessible'

*** Call stack at first throw:

Thread 4 Crashed:
0 com.apple.CoreFoundation 0x952aaa37
___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ + 7
1 libobjc.A.dylib 0x97ec6509 objc_exception_throw + 56
2 com.apple.CoreFoundation 0x95260138 +[NSException
raise:format:arguments:] + 136
3 com.apple.CoreFoundation 0x952600aa +[NSException
raise:format:] + 58
4 com.apple.Foundation 0x990908d1 -[NSConcreteTask
launchWithDictionary:] + 487
5 com.apple.Foundation 0x990906e4 -[NSConcreteTask launch]
+ 41
6 com.PPixy.SayJapanese++ 0x00003173 -[appController run] +
1702
7 com.apple.Foundation 0x9903e8d8 -[NSThread main] + 45
8 com.apple.Foundation 0x9903e888 __NSThread__main__ +
1499
9 libSystem.B.dylib 0x9070bfbd _pthread_start + 345
10 libSystem.B.dylib 0x9070be42 thread_start + 34

Sinbad

unread,
Feb 2, 2010, 1:38:42 AM2/2/10
to cocoa-d...@googlegroups.com
241 行目の [mecab launch]; でデバッガが停止しました。
235 行目の [mecab setLaunchPath:@"/usr/local/bin/mecab"]; が無いと思われます。

Sinbad




hirororo

unread,
Feb 2, 2010, 2:18:55 AM2/2/10
to cocoa-dev-japan
> 241 行目の [mecab launch]; でデバッガが停止しました。
> 235 行目の [mecab setLaunchPath:@"/usr/local/bin/mecab"]; が無いと思われます。


テストありがとうございます!!
松本様やSinbad様が仰っていたように、パスが問題なのですね。
path の扱いを変えて対応してみます。
これ以上他に問題がないことを祈ります。

返信をくださった松本様とSinbad様には、大変感謝をしております。
私の拙い振る舞いに色々と無礼があったと思いますが、おつきあい頂きありがとうございました。

齊藤

Reply all
Reply to author
Forward
0 new messages