皆さんお世話様です。
Install Shieldで、作ったアプリ(a.exeとします)をスタートメニューに登録しました。
そしてアプリ(a.exe)があるフォルダ(C:\BX)には、サブフォルダとしてInstall ShieldでDataフォルダ(C:\BX\DATA)を作っています。
スタートメニューからクリックすると
「パスが見つかりませんC:¥Data¥xx.DB」となります。
Cドライブ直下のDBだからエラーなんだよ、となっています。
しかし、C:¥programフォルダの該当フォルダのa.exeをダブルクリックすると問題なく動作します。
どこが悪いのでしょうか。教えてください。
環境は次の通りです。
1.Delphi7のエンタープライズ版です。
2.Install Shield はDelphi付属のexpress版です。
3.開発PCはWin2000Proで実行先はWin2000、WinXPProの両方です。
よろしくお願いします。
・スタートメニューのそのアプリのところで右クリックでプロパティで表示したとき、
作業フォルダの欄はどうなっていますか?(導入したフォルダになってますか?)
・
>「パスが見つかりませんC:¥Data¥xx.DB」となります。
は、そのアプリが表示したものですか?Windowsが表示したものですか?
そのアプリが表示したものであれば、そのxx.DBを指定する部分は
相対パスを指定しているのですか、絶対パスですか?
早速のご指導ありがとうございます。
スタートメニューで右クリックしたプロパティには作業フォルダ(Dataフォルダ)が見えません。
「パスが見つかりませんC:¥Data¥xx.DB」は、アプリが表示した物だと思います。という不確かな返事は、私自身、これがwinの表示かアプリの表示か不確かなのです。表示を見るとアプリの時に出るDelphiのエラーフォームの様ですのでアプリと言っているにすぎません。なにぶん初心者ですので大目に見てください。
パスについても初心者ですので、たぶん絶対パスです。
今、実行PCのフォルダ構造を見ましたらC:\ProgramFiles\AB\BX\a.exeでDataはC:\ProgramFiles\AB\BX\Data\xx.DBにあります。
アプリを作るときInstall Shieldで作業フォルダを作る場合、そうなってしまいます。そこにparadoxで作った作業DBを置いています。
よろしくお願いします。
>パスについても初心者ですので、たぶん絶対パスです。
ソースでは、実際には、どのように指定しているのですか?
ソースにはDataModule1.Table1です。
今、開発環境ではないので記憶を辿るとDataModuleのフォームにDatabase,Table,Datasourseだったと思います。
記憶がアヤフヤですみません。
「C:¥Data¥xx.DB」は微妙に2バイト文字の様な気がします。
半角だと「C:\Data\xx.DB」になります。
paradoxのデーターベースの指定パスをきちんとしたらどうなりますか?
HOtaさん、ありがとうございます。
今、不思議なことに気づきました。
本来エラーメッセージならC:\Data\xx.DBとなるはずがC:Data\xx.DBとなっています。
Cドライブ直下ならC:\Data\xx.dbのはずがC:\の\がありません。
これはアプリの中のワークファイルとして使っているからでしょうか。
自分でも解らなくなってきました。
申し訳ありませんが現在、開発環境に居ないので確かめようがありません。
>記憶がアヤフヤですみません。
>自分でも解らなくなってきました。
>申し訳ありませんが現在、開発環境に居ないので確かめようがありません。
記憶に頼って書き込むより、ソースを確認して書き込むほうがよろしいかと思います。
ちなみに
>ソースでは、実際には、どのように指定しているのですか?
は、データベースのパスは、実際には、どのように指定しているのですか?
ということです。
>本来エラーメッセージならC:\Data\xx.DBとなるはずがC:Data\xx.DBとなっています。
これはどこに表示している情報なのでしょう?
エラーメッセージに“C:Data\xx.DB”と表示しているのですか?
最初の質問では、
>「パスが見つかりませんC:¥Data¥xx.DB」となります。
>Cドライブ直下のDBだからエラーなんだよ、となっています。
と書き込んでいるので、エラーメッセージじゃなさそうですが・・・・
最初の質問から判断して、私の予想では、
・インストーラで作業フォルダの指定が導入フォルダ以外になっている
・データベースのパスが相対パスになっている
のではないかと思っていたのですが・・・・
不確かな書き込みでもう思惑ございません。
最初の私の記述が間違っていました。
DBに接続できる状態でも、接続できない状態でも
「パスが見つかりませんC:DATA\xx.DB」という小さなフォームのエラーメッセージでした。
今は開発・運用どちらも活動していないので接続していませんが、アプリだけ動かしてみると、スタートメニューからクリックした時のエラーメッセージと同じです。最初の\が有りません。
また「作業フォルダの指定」ですが、私の考えが間違っているのでしょうか。
今、Install Shieldのソースを見ましたら
インスt-ル先コンピュータ/ProgramFilesFolder/AB/BX(a.exe)/DataとDatabase[DATABASEDIR]となっており、BXのフォルダにDataとDatabase[DATABASEDIR]とが同居しています。
作業フォルダなのでxx.DBが入るDataフォルダは...Database[DATABASEDIR]/Dataが正しいのでしょうか。
私の説明、解りますでしょうか。テキスト文字で階層構造を表現するのは不慣れで申し訳ございません。
(1)作業フォルダについて
InstallShield Express Ver.3.5 で、
+ 3 インストール先システムの構成
+ ショートカット/フォルダ
で、追加したアプリのショートカットで、作業ディレクトリの欄が
あると思いますが、何が指定されていますか?
# 試したわけではありませんが、[INSTALLDIR] に指定したほうが
# よいかもしれません。
(2)データベースのパスの指定
TQuery または TTable の DatabaseNameプロパティ はどのように指定
していますか?
私の場合、実行プログラムがあるフォルダ内のデータベース用のフォルダを
指定する場合には、OnCreateイベントで、
procedure TDataModule2.DataModuleCreate(Sender: TObject);
begin
with Query1 do
begin
DatabaseName := ExtractFilePath(Application.ExeName) + 'DB\';
Active := True;
end;
end;
のような方法で指定しています。
igyさん、夜遅くまでありがとうございます。
無事解決しエラーは出なくなりました。
(1)作業フォルダについて
InstallShield Express Ver.3.5のソースを見ました。
作業ディレクトリの欄には、何も指定されていませんでしたので、ご指導のとおり指定しました。
無事エラーは出なくなりました。お恥ずかしいですが初めて見ました。
ここが原因でした。
(2)データベースのパスの指定について
データベースのプロパティ設定のところで同じ趣旨の設定をしたはずです。
はず、という不確かな返答で申し訳ありません。
現在データベースに接続できないのが原因らしくソースを開けてもDataModuleのフォームが開けません。今から日曜・月曜と500㎞ほど出かけなければならず後日確認します。
お陰様でエラーが出なくなりました。ありがとうございます。
そして皆様、ありがとうございます。
ツイート | ![]() |