やっとさっとこ動作するアプリができました。
他のPCにインストールして動かすと立ち上げたとたん
エラー(マイクロソフトにエラーを送信しますか)になり
動かせません。作成時に考慮が足りないのだと思いますがわかりません。
動くPC:Delphi7proで開発したPC(win2000pro)にインストール
ダメなPC:DelphiのないPC(winXPpro)にインストール
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls,
Grids, DBGrids, Mask,DateUtils, DBCtrls, NValEditC, DB, ExcelXP,
OleServer,Excel97, Excel2000,ShellAPI;
プロジェクトオプション:設計時に組み込みのみ
作成はDelphi7付属のInstallShield Expressです。
インストールしたPCのCommon Fiilesにはbdedeploy.txtにあるDLLは
すべてあるのでそれ以外が足りないんだと思いますがよくわかりません。
InstallShield Expressの過去ログなどは古い版数のようで、Delphi7のとは
だいぶGUIが違い困っています。
オブジェクト/マージではBDEpro以外マークしていません。
よろしくお願いします。
Windows XPの場合は、導入する権限が必要です。
エラーはどのようなエラーが表示されますか?詳しく書いたほうが返答が多いと思います。
奈々です。Ootaさんありがとうございます。
「コンピュータの管理者」権限でインストールしました。
エラー詳細はいきなりエラーでよくわかりません。
「問題が発生したため、WingProを終了します。
ご不便をおかけしまして申し訳ありません」
この問題をMicrosoftに報告してください
の表示がでます。
データの参照には次の情報があります。
エラー署名には
AppName:wingpro.exe AppVer:0.9.15.1 ModName:kernel32.dll
MoDVer:5.1.2600.1106 Offset:00013887
エラーの技術情報には
Exception Information
Code:0x0eedfada Flags:0x00000001
Record:0x00... 000 Address:0x00.. 0077e33887
この後にまだまだ続きます(省略)
自宅には2台のパソコンしかなく、よくわかりませんが
XPでの問題かDelphi7が入っていないのが問題か
わかる方法ありますか?
最初の画面もでないので以下の処理が不整合を起こしている
んじゃないかと思ってます。
procedure TForm1.FormCreate(Sender: TObject);
var
i :Integer ;
begin
with PageControl1 do
for i := 0 to 16 do
Pages[i].TabVisible := False ;
PageControl1.Pages[0].TabVisible := True ;
if csDesigning in ComponentState then
CurrentDirectory := ''
else
CurrentDirectory := ExtractFilePath(Application.ExeName) ;
end ;
WindowsXP側にExcelは入っていますか?
Excel97, Excel2000の2つが指定されているのが気になります。
下位互換を保つのであれば、Excel97だけで良さそうな気もしますが。
WindowsXP側にExcel XPが入っているなら、uses節にExcelXPも加えてみるとか。試していないのでわかりませんが。
ExcelXPも入っていましたね。
見落としでした。
uses節のExcel関係で、Excel97だけでは動かないのでしょうか。
にしのさん、ありがとうございます。奈々です。
人に頼んで別のwin2000マシンにインストールしてもらいました。
OFFICE2000が入っているのでExcelXPとの不整合は確認できませんでしたが
エラー内容が表示されました。原因はエリアスのDBフォルダーが開発時の
アドレスのままでした。インストールPC側でBDEAdministratorから設定
し直すとチャーンと動きました。(なんでXPはあんな不親切な表示なの)
もう一度InstallShield Expressで作成しましたが、BDEの設定でエイアス
の場所をインストール先に設定できません。OptionのPATH=[DATABASEDIR]と
するとそのままの内容がインストール先のエリアスになります。
「インストール直後にBDEAdministratorから設定を変更する」が
DBソフトの一般的な使い方なのでしょうか?
テーブルはparadox7でドライバーはstandardのみです。
データベース名にフルパスで指定するのだと思います。エイリアス名を指定するか、ファイルのフルパスを指定することで動作したはず。
# 記憶があやふやですので、正しいかどうかわかりません。
InstallShieldでBDEの設定で、エイリアス名とそのファイルパスを設定できるようになっています。この設定をすればBDEAdministratorからの設定は不要です。
HOotaさん、にしのさんありがとうございます。奈々です。
フルパスで設定するとインストール先でもそのパスでDBをアクセスして
しまうのです。指定する方法間違えていますか?
InstallShieldでBDEの設定で構成ユーティリティを起動する。
エリアスの編集画面で設計時のエリアス名を選択、ドライバ(STANDARD)を
選択、パラメータを以下のように設定する。
PATH=C:\Delphi\DB\DBwing //(開発のDBの場所)
ENABLE BCD=FALSE
DEFAULT DRIVER=PARADOX
相手先PCでもC:\Delphi\DB\DBwingにエリアスが設定されるのです。
すいません、ファイルのフルパスとは開発PCのDBフォルダーの場所の
ことなのでしょうか?
(知っている方が横にいれば30秒で解決しそうな内容でゴメンナサイ)
InstallShieldは普段使わない(インストールもしていない)ので未確認ですが、確か、インストール先フォルダなどを{$APPDIR}とかで指定できませんでした?
DLLを、システムフォルダに入れるように指定するとき、
C:\WINDOWS\SYSTEM32
C:\WINNT\SYSTEM32
D:\WINNT\SYSTEM32
など、いろいろな環境であっても、InstallShieldはきちんとコピーしますよね。
同じように、インストール先を指定できたと思います。
僕の書いたフルパスは、コーディング上での話です。データベース名に、エイリアス名を使わずフルパスを指定することができたと思います。これならば、InstallShieldを使わなくとも、BDEの環境さえ入っていれば、ファイルのコピーだけで動作しますから^^;
# 単なる横着ですが・・・。
InstallShieldで<INSTALLDIR>とか[プログラム ファイル]とかが指定できませんでしょうか?
私のはDelphi5の付属品ですが指定できます。D7の場合はわかりませんが。
HOotaさん、にしのさんありがとうございます。奈々です。
やっとこさっとこできました。まとめます。
設計時にDBを作る場合は、
PATH=[INSTALLDIR]Database//開発DBの場所からファイルをコピーするフォルダー
ENABLE BCD=FALSE
DEFAULT DRIVER=PARADOX
PATH=[DATABASEDIR]で本来できると思いますがダメでした。
InstallShieldで作成する場合でテーブルはparadox7でドライバーはstandard
のみ時はレ点をつけるのはBDE_pro(DELPHI7proの場合)のみで問題ない。
ツイート | ![]() |