BDEの設定を変更するには?

解決


ない  2010-03-10 19:18:13  No: 37964

あるアプリのセットアップ一式作成で、
DELPHI5付属のInstallShieldを使用し
BDEを配布していますが、
その中の環境設定-Drivers-Native-PARADOX-定義"NET DIR"
を変更したいのですが、できますでしょうか?
インストール先のPCでは、ここが"C:\"となりますので、
これを"C:\Users\Public\Documents"にしたいです。
よろしくお願いします。


かず  2010-03-10 19:22:59  No: 37965

アプリをインストールするとコントロールパネル内にBDEAdministratorのアイコンができます。
これを使用してNET DIRのパスを変更できます。


ない  2010-03-10 19:35:35  No: 37966

回答ありがとうございます。
私がおこないたいのは、
(ユーザーがBDEでの設定を行わないように)
InstallShieldでセットアップ一式を作成する際、
デフォルトとして設定しておきたいのです。
よろしくお願いします。


DEKO  2010-03-10 19:44:24  No: 37967

こちらをご覧になってみて下さい。

[今更ながら BDE (Borland Database Engine)]
http://homepage1.nifty.com/ht_deko/tech024.html

IDAPI.CFG を配布する方法は、既に BDE がインストールされている環境の
エリアス情報を破壊してしまうのでオススメできません。

# アプリケーションから初期設定するのが
# 最も簡単で確実だと思います。


igy  2010-03-10 19:54:20  No: 37968

インストーラで設定する方法は、わかりませんが、
実行するアプリケーションで設定するには、
  Session.NetFileDir := ????
になるかと思います。


かず  2010-03-10 20:04:09  No: 37969

BDEのParadoxのNET DIRはInstallShieldなどで指定できません。
エリアスはDEKOさんの書かれたとおり、指定して配布できます。

WindowsVistaやWindows7の対応でNET DIRをC:\Users\Public\Documentsに変更したいとお見受けしました。
Windows7なら適切ではないようですがC:\でも動作します。

私も職場でファイル共有のアプリを動かしていますが、
インストール後にNET DIRをBDEAdministratorで変更しています。
特にBDEAdministratorを使用して設定を変えられた経験はありません。

ユーザがどのような人かわかりませんが、意味もわからずコントロールパネルをさわられれば、「いつもどこかでトラブルが」になってしまいます。
社内なら教育の徹底をする必要があります。


Quest  2010-03-10 20:55:19  No: 37970

デフォルトのセッションを使っているなら
データベース(テーブル)をオープンする前に
Session.NetFileDir := 'C:\Users\Public\Documents';
で変更できます。
Vista系で動かすなら、Session.PrivateDirも
読み書きが可能なフォルダに変更した方がいいと思います。


ない  2010-03-11 00:28:28  No: 37971

みなさんの意見を参考しながら
自分でも、再度、調べたところ、
プログラムで設定できることができました。
下記の方法でできました。

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;


ない  2010-03-11 00:28:53  No: 37972

みなさんの意見を参考しながら
自分でも、再度、調べたところ、
プログラムで設定できることができました。
下記の方法でできました。

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;


ない  2010-03-11 18:10:54  No: 37973

解決チェックを忘れました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加