紧急:关于用InstallShield制作数据库应用系统的安装程序 (50分)

C

chur

Unregistered / Unconfirmed
GUEST, unregistred user!
我用InstallShield制作的数据库应用系统的安装程序,但是在别的机子上安装时
总是错误,报告为:An error occurred while attempting to initialize the
Borland Database Engine (error $2108)’为什么?如何解决?

另外:在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”;
其中的‘以上文件目录’,到底是什么东西?比如是‘c:/我的程序/bde’?
但是“Dllpath ‘c:/我的程序/bde’”肯定不行啊。
还是就是‘以上文件目录’?
 
我也试了很多次,但没有成功,做好了,告诉我一声,怎么做的!
 
我是这么做的,
用inno setup,打包所有bde目录文件,其中自己知道可以不用的可以删除,
然后导出HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Database Engine到文件,
一起打包,然inno setup安装完后运行这个reg文件,导入注册表,
一切正常,只有一个不好的地方就是安装过程会有一个操作系统的提示,
“是否导入注册表内容”,当然可以把整个注册表内容写在脚本里,
这样就不会有这个提示了。
下面是inno setup的bde脚本,用install shield估计也差不多,
无非是拷贝文件并回复注册表:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=BDE
AppPublisher=蓝易科技
AppPublisherURL=http://www.8421.org
AppSupportURL=http://www.8421.org
AppUpdatesURL=http://www.8421.org
DefaultDirName=C:/Program Files/Common Files/Borland Shared/BDE
DefaultGroupName=蓝易医学影像系统
DisableStartupPrompt=yes
DisableProgramGroupPage=yes
DisableDirPage=yes
DisableReadyPage=yes
UninstallFilesDir={win}
UninstallDisplayIcon={app}/bdeadmin.exe
Compression=zip
OutputDir=D:/PACS Setup/LanEasy
AppVerName=BDE 5.20
OutputBaseFilename=BDE1-5.20

[Files]
;Source: "MiniReg.exe"; DestDir: "{tmp}"
;Source: "BdeInst.dll"; DestDir: "{tmp}"

Source: "bde.reg"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "idapi32.cfg"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/bdeadmin.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite

Source: "C:/Program Files/Common Files/Borland Shared/BDE/fareast.btl"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/usa.btl"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/charset.cvb"; DestDir: "{app}"; CopyMode: alwaysoverwrite

Source: "C:/Program Files/Common Files/Borland Shared/BDE/bantam.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/blw32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/disp.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/disp.pak"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idapi32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idapinst.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idasci32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idbat32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idda3532.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/iddao32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/iddbas32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/iddr32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idodbc32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idpdx32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idqbe32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idr20009.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/idsql32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite

Source: "C:/Program Files/Common Files/Borland Shared/BDE/sqlmss32.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Common Files/Borland Shared/BDE/sql_mss.cnf"; DestDir: "{app}"; CopyMode: alwaysoverwrite

Source: "C:/WINNT/system32/bdertl60.bpl"; DestDir: "{sys}"; CopyMode: alwaysoverwrite
Source: "C:/WINNT/system32/dbrtl60.bpl"; DestDir: "{sys}"; CopyMode: alwaysoverwrite
Source: "C:/WINNT/system32/rtl60.bpl"; DestDir: "{sys}"; CopyMode: alwaysoverwrite
Source: "C:/WINNT/system32/vcl60.bpl"; DestDir: "{sys}"; CopyMode: alwaysoverwrite
Source: "C:/WINNT/system32/vcldb60.bpl"; DestDir: "{sys}"; CopyMode: alwaysoverwrite
Source: "C:/WINNT/system32/vclx60.bpl"; DestDir: "{sys}"; CopyMode: alwaysoverwrite

Source: "C:/Program Files/Borland/Delphi6/Bin/dbx.dbi"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Borland/Delphi6/Bin/dbx60.bpl"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Borland/Delphi6/Bin/smclient.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Borland/Delphi6/Bin/vcltest3.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Borland/Delphi6/Bin/dbexplor.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:/Program Files/Borland/Delphi6/Bin/sqlmon.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite

[Icons]
Name: "{userprograms}/BDE Administrator"; Filename: "{app}/bdeadmin.exe"; WorkingDir: "{app}"
Name: "{userprograms}/SQL Explorer"; Filename: "{app}/dbexplor.exe"; WorkingDir: "{app}"
Name: "{userprograms}/SQL Monitor"; Filename: "{app}/sqlmon.exe"; WorkingDir: "{app}"

[Run]
;Filename: "{tmp}/MiniReg.exe"; Parameters: """{tmp}/BdeInst.dll"""
Filename: "{app}/bde.reg"; Flags: shellexec

[UninstallRun]
 
上面的脚本还会安装sqlexplorer和sql monitor,这两个东西放到客户的机器里
对自己经常很有用处,如果不要可以删除相应文件。
 
谢谢你的回答。但是……
总不成每次安装都要让用户去弄注册表吧?
很多用户不想那么繁琐的,况且98下面做的在98下面能用,我想问为什么2000下做的,
98下不能用,总是bde文件装得少,怎么解决?
另外:其中的‘以上文件目录’,到底是什么东西?
 
希望下面的对你有帮助

精简Delphi数据库应用系统-定制BDE驱动程序
深圳
王发军
---- Delphi程序员都知道,在数据库应用程序开发完成后,要发布程序需要同时
发布BDE(Borland Database Engine),否则会引起错误"A Error occurred w
hile attempingto initilize Borland Database Engine(Error $2109)"。当觉
得程序太大而辛辛苦苦精简自己的程序到满意时,却发现BDE管理程序器需要9M之
巨,不由感到沮丧,真有点自己的努力被糟蹋的感觉。不过也不必太沮丧,只要
肯尝试,还是有办法来精简BDE的。

---- 首先来看看BDE目录中的文件,所有文件确实有近9M大吧。不过有些可能是
用不到的,关键文件的作用可参见Bde32.HLP中"Introduction to Borland Dat
abase Engine"下的"Core BDE Files",其中列出了BDE的关键文件及其作用,
可以以此作为依据来尝试精简BDE驱动程序。下面是各个文件的作用:

---- 一、不可缺少的文件


---- 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"
---- 就这些了,按此办法即可有效减少BDE驱动程序的大小,
例如只用TTable控件操作Paradox数据库,则只要Idapi32.dll、Blw32.dll、Idr20009.dll、
Fareast.bll、Usa.bll、Idpdx32.dll六个文件即可。

---- 这些文件可放在任何一个目录,只要在注册表指明即可。
OK,BDE由9M多减到不到2M,ZIP一下就700多K了,比原来的应用系统减少了不少吧。




发信人: pazee (耙子), 信区: Delphi
标 题: RE: Re: [再贴] 版主们,我也有一个BDE的难题,救我呀!
发信站: 网易虚拟社区 (Fri Sep 3 09:48:25 1999), 站内信件

【 在 zhaofy (妖道) 的大作中提到: 】
: 【 以下文字转载自 Delphi 讨论区 】
: 【 原文由 妖道 所发表 】
: 我自己做安装程序时,为了发布BDE,复制了BDE的所有.DLL的.BTL文件以及char
:
: .......

Delphi 3的DBE
DBE需要的东西:
idpdx32.dll
idapi.dll
blw32.dll
idsql32.dll
idapiinst.dll
idbat32.dll
idr20009.dll
idapi32.cfg
bantam.dll
usa.btl
usa.btl
fareast.dll
charset.cvb
idapi.cnf
必需的注册表项目包括:

1. BDE动态连接库文件位置设置

Key : "HKEY_LOCAL_MACHINE/Software/Borland/Database Engine"
Item : "DLLPATH"
Value : BDE动态连接库文件所在位置,如"C:/Program Files/Borland/Common Files/BDE"

(打开"C:/Program Files/Borland/Common Files/BDE/BDE32.hlp",
查找"Core Files"即可了解BDE各动态连接库文件的作用)


2. BDE语言驱动文件路径设置

Key : "HKEY_LOCAL_MACHINE/Software/Borland/BLW32"
Item : "BLAPIPATH"
Value : BDE语言驱动文件所在路径,如"C:/Program Files/Borland/Common Files/BDE"

(BDE语言驱动就是那些*.BLL文件)


3. 指定可用的BDE语言驱动文件

Key : "HKEY_LOCAL_MACHINE/Software/Borland/BLW32"
Item : "LOCALE_LIB#" (#表示数字, 如"LOCALE_LIB1"、"LOCALE_LIB3"等)


Value : 指定各BDE语言驱动文件,如"C:/Program Files/Borland/Common File

s/BDE/USA.BLL"

(一般必需的语言驱动文件有"USA.BLL","EUROPE.BLL"和"FAREAST.BLL",为保险


见,建议将所有语言驱动都设置上。
 
把bde都装上,肯定可以!
component一页,点右键,插入自带组件!选bde,配置bde就ok.
至于注册之类的install sheild会自动给你做的!
祝好运!
 
说得有挺有意思。让我试试看。
 
多人接受答案了。
 
顶部