首先,據我所知,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_MACHINE\SOFTWARE\Borland\Database Engine 鍵值[DLLPath]下獲得本機BDE的安裝路徑,默認情況下,BDE會被安裝在 C:\Program Files\Common Files\Borland Shared\BDE 。簡單情況,只需要將該文件夾下所有文件都復制到目標機器上,即可保證目標機器上就擁有了BDE所有必需文件。
在目標機器上,BDE的安裝文件夾是可選的,不一定要安裝在%system%\Program Files\Common Files\Borland Shared(對於64bit OS也不一定要安裝在 %system%\Program Files(x86)\Common Files\Borland Shared)。由於BDE驅動和BDE administrator能否正確被調用是依賴於注冊表的鍵值,所以只需要在目標機器的注冊表 HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine 鍵值[DLLPath]下指定BDE文件所在的絕對路徑即可(這里就是絕對路徑,不考慮32/84bit OS下訪問系統文件可能出現的重定向)。
2:在目標機器上創建注冊表鍵,既可以通過注冊表文件自動導入,也可以通過安裝程序來創建。
如果,只是希望簡單的獲得注冊表文件的話,可以在一台已經安裝了Delphi或BDE的機器上,導出注冊表 [HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine] 下所有鍵,然后將導出的注冊表文件手工或在安裝程序中自動導入到目標機器上即可。
注意,在目標機器上導入注冊表鍵時,32bit OS和64bit OS是有區別的。對於64bit OS,應該將注冊表文件導入到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node 鍵下,因為32bit應用程序只能訪問 [Wow6432Node] 下的鍵值。這個區別可能會影響到你在使用安裝包創建注冊表的方式,如果沒有創建在正確的路徑之下,則會影響到當你試圖打開BDE config文件時,尋找不到正確的BDE Administrator程序。
在創建完注冊表鍵值后,不要忘記在目標機器上打開注冊表編輯器,設置相關登陸賬號的使用權限。
3:在目標機器上創建BDE Administrator和關聯BDE config文件打開方式。
如果目標機器是64bit系統的話,請不要添加BDE administrator的快捷方式添加到control panel icon,因為32bit下的cpl文件在64bit下可能不能正常工作,你可以選擇將其添加到開始菜單欄,開始菜單的位置在%allusersprofile%\start menu\bdeadmin.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:\Windows\SysWOW64\odbcad32.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即可。
