Masato Toyoshima
mt****@izu*****
2003年 9月 2日 (火) 23:31:56 JST
はじめまして、豊島と申します。 スクリプトの配布にExerbを使おうと試行錯誤しております。 開発そのものにはご協力できそうにありませんが、こちらで質問など させていただいてもよろしいでしょうか? ご回答いただけましたら助かります。 質問は次のとおりです。 ●EXEをD&Dで起動した際、EXEのフルパスを得るにはどうしたらよいでしょうか? 詳細を書かせていただきますと、Exerbで作成したEXEで以下のことを実現しようとしております。 1.EXEファイルと同じフォルダにあるINIファイルの読み込み 2.EXEファイルと同じフォルダにある外部プログラムの実行 環境はWindowsXP Home EditionでRuby-1.8.0(Mingw版)でテストしています。 Exerbは2.6.7を使用しています。 1.2.ともコマンドラインからは問題なく実行できるのですが、 ファイルをDrag&Dropして実行するとうまくいきません。 いろいろ試していたのですが、原因と思われるのは、 ●$0、__FILE__がEXEの元のスクリプトの名前のみとなりPATHが一切含まれない ●カレント(ワーク)ディレクトリがEXEファイルのある場所でもない このためにINIファイルを見つけることができていないようでした。 以下は、動作確認に用いている簡単なスクリプトです。 =begin test.rb pname1=File.expand_path(__FILE__) pname2=File.expand_path($0) file=File.open("log.txt","w") file.puts pname1 file.puts pname2 file.close =end test.rb このスクリプトをもとに作成したtest.exeに適当なファイルをD&Dして実行すると、 C:/Documents and Settings/%USER%/log.txtに、log.txtが保存され、 その中身は、 C:/Documents and Settings/%USER%/test.rb C:/Documents and Settings/%USER%/test.rb となっていました。(実際は、%USER%はXPで利用しているユーザ名です。) 何か良い方法がありましたら、ご教示ください。