あるアプリのセットアップ一式作成で、
DELPHI5付属のInstallShieldを使用し
BDEを配布していますが、
その中の環境設定-Drivers-Native-PARADOX-定義"NET DIR"
を変更したいのですが、できますでしょうか?
インストール先のPCでは、ここが"C:\"となりますので、
これを"C:\Users\Public\Documents"にしたいです。
よろしくお願いします。
アプリをインストールするとコントロールパネル内にBDEAdministratorのアイコンができます。
これを使用してNET DIRのパスを変更できます。
回答ありがとうございます。
私がおこないたいのは、
(ユーザーがBDEでの設定を行わないように)
InstallShieldでセットアップ一式を作成する際、
デフォルトとして設定しておきたいのです。
よろしくお願いします。
こちらをご覧になってみて下さい。
[今更ながら BDE (Borland Database Engine)]
http://homepage1.nifty.com/ht_deko/tech024.html
IDAPI.CFG を配布する方法は、既に BDE がインストールされている環境の
エリアス情報を破壊してしまうのでオススメできません。
# アプリケーションから初期設定するのが
# 最も簡単で確実だと思います。
インストーラで設定する方法は、わかりませんが、
実行するアプリケーションで設定するには、
Session.NetFileDir := ????
になるかと思います。
BDEのParadoxのNET DIRはInstallShieldなどで指定できません。
エリアスはDEKOさんの書かれたとおり、指定して配布できます。
WindowsVistaやWindows7の対応でNET DIRをC:\Users\Public\Documentsに変更したいとお見受けしました。
Windows7なら適切ではないようですがC:\でも動作します。
私も職場でファイル共有のアプリを動かしていますが、
インストール後にNET DIRをBDEAdministratorで変更しています。
特にBDEAdministratorを使用して設定を変えられた経験はありません。
ユーザがどのような人かわかりませんが、意味もわからずコントロールパネルをさわられれば、「いつもどこかでトラブルが」になってしまいます。
社内なら教育の徹底をする必要があります。
デフォルトのセッションを使っているなら
データベース(テーブル)をオープンする前に
Session.NetFileDir := 'C:\Users\Public\Documents';
で変更できます。
Vista系で動かすなら、Session.PrivateDirも
読み書きが可能なフォルダに変更した方がいいと思います。
みなさんの意見を参考しながら
自分でも、再度、調べたところ、
プログラムで設定できることができました。
下記の方法でできました。
uses
BDE
var
hCur : hDBICur;
Config : CFGDesc;
ContinueIt: boolean;
begin
if (DbiInit(nil) = DBIERR_NONE) then begin
hCur := nil;
if (DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent,
'\DRIVERS\PARADOX\INIT', hCur) = DBIERR_NONE) then begin
if DbiSetToBegin(hCur) = DBIERR_NONE then begin
ContinueIt := true;
while ContinueIt do begin
if (DbiGetNextRecord(hCur, dbiWRITELOCK, @Config, nil)
<> DBIERR_NONE) then begin
ContinueIt := false
end else if StrIComp(Config.szNodeName, 'NET DIR') = 0 then begin
StrCopy(Config.szValue, 'C:\Users\Public\Documents');
DbiModifyRecord(hCur, @Config, true);
ContinueIt := false
end;
end;
end;
end;
DbiExit();
end;
みなさんの意見を参考しながら
自分でも、再度、調べたところ、
プログラムで設定できることができました。
下記の方法でできました。
uses
BDE
var
hCur : hDBICur;
Config : CFGDesc;
ContinueIt: boolean;
begin
if (DbiInit(nil) = DBIERR_NONE) then begin
hCur := nil;
if (DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent,
'\DRIVERS\PARADOX\INIT', hCur) = DBIERR_NONE) then begin
if DbiSetToBegin(hCur) = DBIERR_NONE then begin
ContinueIt := true;
while ContinueIt do begin
if (DbiGetNextRecord(hCur, dbiWRITELOCK, @Config, nil)
<> DBIERR_NONE) then begin
ContinueIt := false
end else if StrIComp(Config.szNodeName, 'NET DIR') = 0 then begin
StrCopy(Config.szValue, 'C:\Users\Public\Documents');
DbiModifyRecord(hCur, @Config, true);
ContinueIt := false
end;
end;
end;
end;
DbiExit();
end;
解決チェックを忘れました。
ツイート | ![]() |