installshield制造安装程序?急!急!(200分)

  • 主题发起人 主题发起人 hxh81
  • 开始时间 开始时间
H

hxh81

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样用installshield制作带数据库的安装程序,且初始化BDE数据库别名,就像安装的
DELPHI5,其bde自带了dbdemos数据库。现在我的程序中的数据库名为skin,我怎么将
程序安装到别的机器中时,bde中就存在skin数据库?我根据installshield的帮助系统
制作此安装程序,可是将程序安装到别的机器上时,出现错误:Exception EDBEngineError
in module DSKIN.EXE at 00094CA6,An error occurred which attempting to intiatize
the borland database engineerror(#3106);请各位高手一定要照顾一下,将详细过程
E-mail to me:ydn54@21cn.com or hxh81@163.com 因为老板明天就要结果了。
 
我以前遇到过你说的问题,我记得通过installshield的选项可以做到,但我目前机器
上没有installshield,又是好久的问题,所以我没法给出详细步骤。
 
在ISE中,第二项:“ Select InstallShield Objects for Delphi”选项卡“General”上,
进行BDE的安装配置。单击“BDE”的检测框,“下一步”,“New”,输入你的数据库别名,
“下一步”,“下一步”,选择你的库文件路径、类型……
 
I also met with such a strange problem.Any experts know it,please email me,Thanks.
coolkevin@263.net
 
用他的创建向导,认真点看,包括BDE的选择安装,别名可以在你的程序中加入检测功能
如果不存在,自动创建别名。或者使用直接位置连接代替别名。
 
楼上的朋友的回答,我认为还是比较保险的。
 
我问一下:你的错误实在安装时出现还是在安装后运行时出现?

 
如Boat所说的,
再添加主窗口Create事件
动态设置数据库别名就行了


 
在组件对象面版中你可以添加一个对象,选择对象名称为BDE5.11,然后按向导的指引下
完成别名的设置。好像只有在installshield6.2的版本才有对象。
 
是不是在安装设置是没有吧BDE一块打包,对方机器没有BDE,安装打包时这一部分很详细。
 
哎,为什么要用installshield呢,我建议用InnoSetup
 
我也遇到过这个问题,现在都不知道怎样做。谁能告诉我?
 
自己打包 C:/Program Files/Common Files/Borland Shared/BDE 目录下的东西
copy 到目的机上<ProgramFilesDir>/Borland/Common Files/BDE 下 试一试。

两个多月了,相信你已经不急了。[:D][:D]
 
这是因为目标机器上没有BDE的缘故,安装时注意安装选项。
 
这个问题,我问了很多次。最后还是解决了,只不过,安装文件很大。
在安装过程,尤其是bde选项中,如果没有把握,最好是全部选中。这样就会成功。
还要注意指定好安装位置要和bde别名指定的位置最好相同。如果数据表的文件位置改变了,
bde别名指定的位置可能找不到数据表,这样就会出错。
多想想,多试试,一定会解决的。由于整个过程太繁琐,就不再详细叙述了。
 
[blue]精简Delphi数据库应用系统-定制BDE驱动程序[/blue]
Delphi程序员都知道,在数据库应用程序开发完成后,要发布程序需要同时发布BDE(Borland Database Engine),否则会引起错误“A Error occurred while attempingto initilize Borland Database Engine(Error $2109)”。当觉得程序太大而辛辛苦苦精简自己的程序到满意时,却发现BDE管理程序器需要9M之巨,不由感到沮丧,真有点自己的努力被糟蹋的感觉。不过也不必太沮丧,只要肯尝试,还是有办法来精简BDE的。

  首先来看看BDE目录中的文件,所有文件确实有近9M大吧。不过有些可能是用不到的,关键文件的作用可参见Bde32.HLP中“Introduction to Borland Database 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了,比原来的应用系统减少了不少吧。

  以上程序在PWIN98+DELPHI3.0下调试通过。

 
我比较同意 amsea 的方法。给出一点例子(SQL SERVER,本地数据库大同小异):
MyList:TStringList;
BDEInfoList:TStringList;

MyList:=TStringList.Create;
BDEInfoList:=TStringList.Create;
// 读取 BDE 信息
try
Session1.GetAliasParams('别名',BDEInfoList);
finally
DatabaseNameEdit.Text:=BDEInfoList.Values['DATABASE NAME'];
HostNameEdit.Text:=BDEInfoList.Values['HOST NAME'];
CacheEdit.Text:=BDEInfoList.Values['SCHEMA CACHE DIR'];
ServerNameEdit.Text:=BDEInfoList.Values['SERVER NAME'];
SQLTypeEdit.Text:=BDEInfoList.Values['SQLQRYMODE'];
UserNameEdit.Text:=BDEInfoList.Values['USER NAME'];
end;

// 动态别名,与程序同在,程序退出后,别名释放
try
Session1.DeleteAlias('别名');
finally
try
with MyList do
begin
Clear;
Add('DATABASE NAME='+DatabaseNameEdit.Text);
Add('HOST NAME='+HostNameEdit.Text);
Add('SCHEMA CACHE DIR='+CacheEdit.Text);
Add('SERVER NAME='+ServerNameEdit.Text);
Add('SQLQRYMODE='+SQLTypeEdit.Text);
Add('USER NAME='+UserNameEdit.Text);
end;
Session1.AddAlias('别名','MSSQL',MyList);
Session1.Active:=True;
finally

end;

// 将建立的别名保存
Session1.SaveConfigFile;


最后,我记得如果你要数据库安装后跟你开发时一样的话,好像只要把 BDE 下的
*.cnf 文件打包进安装程序中。(不过不确定,因为我解决过,但记不是很清楚了,
DELPHI5.0 + SQL SERVER 2000 + InstallShield For Delphi5)
 
后退
顶部