首先,据我所知,Borland/CodeGear没有发布过支持64bit windows的BDE安装包,如果你在网上看到了相关的BDE安装包,很有可能是使用者自己重新打包发布的。
无论是在32bit windows还是64bit windows下,发布BDE关键是以下几点
1:将BDE相关文件发布到目标机器上的特定文件夹下。
2:在目标机器上创建指定的注册表键值
3:在目标机器上创建BDEAdministrator的快捷方式和关联文件的打开方式
下面详细说一下其中每一步骤。
1:在发布BDE相关文件之前,首先你需要在自己的机器上获得BDE的文件。如果你本机已经安装了Delphi(这里,将以Delphi 7为例,在其他版本的Delphi中获得BDE文件的方式大致相同,但可能会有名称Borland与CodeGear之间的差别,实际遇到时,稍微注意即可),你可以在注册表 HKEY_LOCAL_MACHINESOFTWAREBorlandDatabase Engine 键值[DLLPath]下获得本机BDE的安装路径,默认情况下,BDE会被安装在 C:Program FilesCommon FilesBorland SharedBDE 。简单情况,只需要将该文件夹下所有文件都复制到目标机器上,即可保证目标机器上就拥有了BDE所有必需文件。
在目标机器上,BDE的安装文件夹是可选的,不一定要安装在%system%Program FilesCommon FilesBorland Shared(对于64bit OS也不一定要安装在 %system%Program Files(x86)Common FilesBorland Shared)。由于BDE驱动和BDE administrator能否正确被调用是依赖于注册表的键值,所以只需要在目标机器的注册表 HKEY_LOCAL_MACHINESOFTWAREBorlandDatabase Engine 键值[DLLPath]下指定BDE文件所在的绝对路径即可(这里就是绝对路径,不考虑32/84bit OS下访问系统文件可能出现的重定向)。
2:在目标机器上创建注册表键,既可以通过注册表文件自动导入,也可以通过安装程序来创建。
如果,只是希望简单的获得注册表文件的话,可以在一台已经安装了Delphi或BDE的机器上,导出注册表 [HKEY_LOCAL_MACHINESOFTWAREBorlandDatabase Engine] 下所有键,然后将导出的注册表文件手工或在安装程序中自动导入到目标机器上即可。
注意,在目标机器上导入注册表键时,32bit OS和64bit OS是有区别的。对于64bit OS,应该将注册表文件导入到 HKEY_LOCAL_MACHINESOFTWAREWow6432Node 键下,因为32bit应用程序只能访问 [Wow6432Node] 下的键值。这个区别可能会影响到你在使用安装包创建注册表的方式,如果没有创建在正确的路径之下,则会影响到当你试图打开BDE config文件时,寻找不到正确的BDE Administrator程序。
在创建完注册表键值后,不要忘记在目标机器上打开注册表编辑器,设置相关登陆账号的使用权限。
3:在目标机器上创建BDE Administrator和关联BDE config文件打开方式。
如果目标机器是64bit系统的话,请不要添加BDE administrator的快捷方式添加到control panel icon,因为32bit下的cpl文件在64bit下可能不能正常工作,你可以选择将其添加到开始菜单栏,开始菜单的位置在%allusersprofile%start menudeadmin.lnk。
另外,对于64bit系统你还需要特别做如下设置。
打开 Control Panel Administrative Tools Local Security Policy Security Options 找到 [User Account Control: Virtualize file and registry write failures to per-user locations] ,将这一项设置为 enable 。这一步很重要,因为如果不重要设置的话,你在切换BDE文件的时候,BDEAdmin总是打开错误的BDE CFG文件,其值被存储在注册表中一个虚拟存储键值下,而不是BDE的键值。
以上三步安装步骤完成后,如果你使用的是64bit OS,当你需要创建一个ODBC的alias时,你首先需要打开的时候32bit 版本的ODBC Administrator,该版本的ODBC程序可以在以下目录找到 C:WindowsSysWOW64odbcad32.exe。在你配置ODBC的DSN时有一点需要注意一下,就是DSN分为system DSN和user DSN两类,如果创建为user DSN时,则该DSN只能在当前系统账号下可被访问到,当切换账号时,则不可访问,如果你所配置说道BDE config文件中有alias用到user DSN,则当切换系统账号后,很有可能该BDE config文件中的alias不可用。如果希望BDE config文件中的alias可以用在多个系统账号下,则将其使用到的DSN创建为system DSN即可。