如何分发基于BDE应用程序(100分)

  • 主题发起人 主题发起人 smj_9547
  • 开始时间 开始时间
S

smj_9547

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道如何分发基于BDE应用程序,我用修改注册表的方法不能成功!
还是有bde初始化失败!
 
方法一:(最笨方法)
安装Delphi
//----------------------------------
方法二:(我没有试的方法)
Bantam.DLL
Charset.cvb
Fareast.Btl
Idapi32.DLL
Idpdx32.DLL
Idr20009.DLL
Idbat32.DLL
Idsql32.DLL
把以上文件复制到程序的目录。(我还没有试时,我就有了方法三)
//------------------------------------------------------------
方法三:(我现用的方法)
用InstallShield生成安装文件,D版的Delphi4、Delphi5光碟上都有
for Delphi4的,我手上有InstallShield for D4的汉化补丁164k;有了
补丁就可以做中文的安装程序了。InstallShield for D5也有,约3M多,
但没有D5的补丁,但D4补丁部分可在D5上用,可生成半中半英的安装程
序。如果你要InstallShield我可Mail给你。
 
贴:
一、不可缺少的文件   Blw32.dll:语言驱动函数库。   Idapi32.dll:BDE基本函数库。
  Fareast.bll、Usa.bll:远东语言及美国语言驱动程序,对中文软件不可缺少。   Idr20009.dll:错误信息库。
 二、数据库驱动程序(根据需要选择一个或多个)   Idasci32.dll:Ascii文本数据库驱动程序函数库,如果不用Ascii文本数据库,可以不要。
  Iddao32.dll:Access数据库驱动程序函数库,如果不用Access数据库,可以不要。
  Iddbas32.dll:dBase数据库驱动程序函数库,如果不用dBase数据库,可以不要。
  Idodbc32.dll:ODBC数据库驱动程序函数库,如果不用ODBC数据库,可以不要。
  Idpdx32.dll:Paradox数据库驱动程序函数库,如果不用Paradox数据库,可以不要。
 三、其它驱动程序和配置文件(根据需要选择一个或多个)   Idbat32.dll:批操作驱动程序函数库,如果不用TBatchMove控
件或DbiBatchMove类函数,可以不要。  Iddr32.dll:Data Repository驱动程序函数库,如果不用Data
Repository功能,可以不要。   Idprov32.dll:BDE DataSet provide驱动程序函数库,如果不
用TProvider控件,可以不要。   Idqbe32.dll:QBE驱动程序函数库,如果不用Query By Example,可以不要。
  Idsql32.dll:SQL查询驱动程序函数库,如果不用TQuery进行查询,可以不要。
  Idapi32.cfg:BDE配置文件,如程序中没特殊要求,可不要。也可在BDE管理器中设置正确后再分发。  四、其它文件(一般不用)
  BDE32.HLP、BDE32.CNT:BDE帮助文件,可以不要。
  BdeAdmin.exe、BdeAdmin.HLP、BdeAdmin.CNT:BDE管理器及帮助文件,如果不会发生要求软件用户自己配置BDE的情况时,可以不
要。   其它*.BLL:其它国家和地区的语言驱动程序,可以不要。
  DataBump.EXE、DataBump.HLP、DataBump.CNT:数据库数据转移工具及帮助文件,可以不要。
  Localsql.HLP、Localsql.CNT:SQL查询语句帮助文件,可以不要。
  Sqllnk32.HLP、Sqllnk32.CNT:SQL连接帮助文件,可以不要。   在根据需要选择文件后,还要写注册表文件。这个应该不成问
题,可以手工设置,但最好在程序中设置,在发现注册表中没有相应键值时写入,用TRegFile对象用不了几行代码的。需要设置的注
册表键值有(在调用数据库操作前需要有正确的键值存在):   数据驱动程序所在目录的设置:
    HKEY_LOCAL_MACHINE/Software/Borland/Database Engine/DLLPATH(字符串值)
  语言驱动程序所在目录的设置:     HKEY_LOCAL_MACHINE/Software/Borland/BLW32/BLAPIPATH(字符串值)
 语言驱动程序文件名:HKEY_LOCAL_MACHINE/Software/Borland/BLW32/LOCALE_LIB#(字符串值)
      其中#为编号,按顺序为0、1、2、3......如:       
HKEY_LOCAL_MACHINE/Software/Borland/BLW32/LOCALE_LIB0="fareasst.bll"       
HKEY_LOCAL_MACHINE/Software/Borland/BLW32/LOCALE_LIB1="usa.bll"
 
其中几个必须的文件:

  Idapi32.dll:BDE基本函数库

  Blw32.dll:语言驱动函数库

  Idr20009.dll:错误信息库

  Fareast.bll:远东语言驱动程序

  Usa.bll:美国语言驱动程序

  以下文件为根据需要可选:
  如用Paradox,则应选择:Idpdx32.dll
  如用Dbase,则应选择:Iddbas32.dll
  如用Access,则应选择:Iddao32.dll
  如用Ascii,则应选择:Idasci32.dll
  如用TBatchMove,则应选择:Idbat32.dll
  如用Data Repostitory,则应选择:Iddr32.dll
  如用ODBC,则应选择:Idodbc32.dll
  如用BDE DataSet Provider DLL,则应选择:Idprov32.dll
  如用SQL查询,则应选择:Idsql32.dll

  下面我们就以用InstallShield来制作一个Paradox数据库应用系统的安装程序为例:
  1.启动程序设置有关文件目录路径,进入Setup Checklist;
  2.在Set the Visual Design中设置程序名、程序目录、安装程序主窗口等;
  3.在Specify Components and Files中设置Groups and Files项,在Program Files中加入用户
的所有程序文件和数据库表文件,以及下列文件:Idbat32.dll、Usa.btl、Idapi.cfg、Charset.cvb、
Bantam.dll、BLW32.dll、Idapi32.dll、Fareast.btl、Idpdx32.dll、Idr20009.dll、Idsql32.dll
(以上文件必须含目录路径);

  4.在Dialog Boxes中设置所需安装对话框;
  5.在Make Registry Changes中设置Keys项,在
HKEY_LOCAL_MACHINE中加入software/borland/blw32和software/borland/database engine两项,并
且在blw32值中加入

  “Blapipath ‘以上文件目录’”、“LOCALE_LIB0 ‘以上文件目录’/Fareast.bll”和
“LOCALE_LIB1 ‘以上文件目录’/Usa.bll”,在database engine值中加入“Dllpath ‘以上
文件目录’”、“Configfile01 ‘以上文件目录’/Idapi.cfg”;

  6.在Specify Folder and Icons中根据实际要求设置有关项目;
  7.在Run Disk Builder中设置安装盘的有关信息;
  8.最后进行Test the Installation和Create Distribution Media即可完成安装程序的制作。

 
to 张剑波:
这种方法我已经用了,而且重起机器也不能使用!

下面是我的程序,能不能给我指出是哪里出了问题呢?
var
register_temp:tregistry;
begin

register_temp:=tregistry.create;
with register_temp do
begin
rootkey:=HKEY_LOCAL_MACHINE;
if openkey('software/borland/database engine',true) then
begin
writestring('DLLPATH',extractfilepath(paramstr(0)));
writestring('CONFIGFILE01',extractfilepath(paramstr(0))+'IDAPI32.CFG');
writestring('RESOURCE','0009');
writestring('saveconfig','win32');
writestring('usecount','1');
end;
closekey;
IF openkey('software/borland/blw32',true) then
begin
writestring('BLAPIPATH',extractfilepath(paramstr(0)));
writestring('LOCALE_BIB2',extractfilepath(paramstr(0))+'FAREAST.BLL');
writestring('LOCALE_BIB1',extractfilepath(paramstr(0))+'USA.BLL');
end;
CLOSEKEY;
free;
end;



end;
 
多人接受答案了。
 
后退
顶部