(源自網絡)PB及ASA的打包說明

一.安裝步驟
一般地說發佈一個PB應用除應用程式部件本身外,還應該包含如下檔及相關操作:
1. PowerBuilder運行時動態連結程式庫( Runtime Library )。
2. 資料庫介面:一方面包括PB提供的資料庫專用介面或ODBC介面程式,另一方面包括不同資料庫廠商提供的ODBC資料庫驅動程式。
3. ODBC資料源的配置。
二.PowerBuilder運行時動態連結程式庫( Runtime Library )。
不同版本的PB所需要的運行時動態連結程式庫檔不盡相同,但庫名有相似的地方,這些DLL都必須包含在應用程式目錄或系統目錄當中:
PB6.5所需文件:
必需 PBVM60.DLL PowerBuilder 虛擬機
可選 PBDWE60.DLL DataWindow 資料視窗引擎
可選 PBRTC60.DLL 超文本控制項
可選 PBTRA60.DLL 資料庫訪問跟蹤
可選 PBODB60.DLL PB的ODBC介面
可選 PBIN760.DLL INFORMIX 介面
可選 PBMSS60.DLL Microsoft SQL Server介面
可選 PBSYC60.DLL Sybase SQL Server介面
可選 PBO7360.DLL/PBO7260.DLL Oracle Version介面
PB7.0所需文件:
必需 PBVM70.DLL PowerBuilder 虛擬機
必需 LIBJCC.DLL PowerBuilder 庫管理
可選 PBDWE70.DLL DataWindow 資料視窗引擎
可選 PBRTC70.DLL 超文本控制項
可選 PBTRA70.DLL 資料庫訪問跟蹤
可選 PBODB70.DLL PB的ODBC介面 
可選 PBIN770.DLL INFORMIX 介面
可選 PBMSS70.DLL Microsoft SQL Server介面
可選 PBSYC70.DLL Sybase SQL Server介面
可選 PBO7370.DLL/PBO8470.DLL Oracle Version介面
PB8.0所需文件:
必需 PBVM80.DLL PowerBuilder 虛擬機
必需 LIBJCC.DLL PowerBuilder 庫管理
可選 PBDWE80.DLL DataWindow 資料視窗引擎
可選 PBRTC80.DLL 超文本控制項
可選 PBTRA80.DLL 資料庫訪問跟蹤
可選 PBODB80.DLL PB的ODBC介面 
可選 PBIN780.DLL INFORMIX 介面
可選 PBMSS80.DLL Microsoft SQL Server介面
可選 PBSYC80.DLL Sybase SQL Server介面
可選 PBO7380.DLL/PBO8480.DLL/PBO9080.DLL Oracle Version介面
以上檔可以在C:\Program Files\Sybase\Shared\PowerBuilder取得。

三. SQL Anywhere ODBC資料庫驅動程式。
SQL Anywhere 5.0:
DBTL50T.DLL 資料庫工具
DBL50T.DLL 資料庫介面
WODBC.HLP 幫助文檔
WOD50T.DLL ODBC 驅動
WL50ENT.DLL 英文字串
WTR50T.DLL ODBC翻譯
DBENG50.EXE 資料庫引擎
SQL Anywhere 6.0:
DBL60T.DLL,WODBC.HLP,WOD60T.DLL,WL60ENT.DLL,WTR60T.DLL,DBENG60.EXE
SQL Anywhere 7.0:
DBODBC7.DLL,DBLIB7.DLL,DBWTSP7.DLL,DBLGEN7.DLL,DBODTR7.DLL,DBENG7.EXE
四. ODBC資料源配置。
在包含以上檔之後,還必需對使用ODBC資料庫方式的應用進行ODBC資料源的配置,以便在安裝完畢後應用程式可以直接訪問用戶資料源。
下面以使用SQL Anywhere 5.0資料庫創建的用戶資料庫為例來說明如何使用資料源管理器進行ODBC的手工配置及如何在安裝程式中自動修改系統註冊表,其他資料庫可以參考SQL Anywhere 5.0進行操作。
1.使用資料源管理器配置用戶資料源。
1.1. 安裝SQL Anywhere資料庫驅動程式,使資料源管理器中的"ODBC驅動程式"頁增加一行SQL Anywhere的驅動說明。
1.2. 在"用戶DSN"一頁選擇"添加",然後選擇SQL Anywhere資料源,出現資料源的配置資訊表後,將資料源名(Data Source Name),資料庫名(Database File),用戶ID號(User ID),用戶密碼(Password)等資訊添齊,選擇"OK"確認,此時在"用戶資料源"的視窗中就會增加用戶的資料庫的ODBC驅動,選擇"確認"後退出資料源管理器。
進行以上兩步以後重新啟動系統,用戶就可以在運行應用程式後使用SQL Anywhere資料庫。
2. 修改系統註冊表配置用戶資料源。
(以下注:C:\YourApp為用戶應用程式目錄,C:\YourApp\Sqlany50為應用套裝程式含的SQL Anywhere資料庫驅動檔目錄,YourDB.DB為用戶資料庫。)
在HKEY_LOCAL_MACHINE\software\ODBC\ODBC Drivers下,增加字串鍵值:
Sybase SQL Anywhere 5.0 = "Installed"
在HKEY_LOCAL_MACHINE\software\ODBC\Sybase SQL Anywhere 5.0下,增加字串鍵值:
Driver = "C:\YourApp\Sqlany50\WOD50T.DLL"
Setup = "C:\YourApp\Sqlany50\WOD50T.DLL"
在HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Source下,增加字串鍵值:
TestDB = "Sybase SQL Anywhere 5.0"
在HKEY_CURRENT_USER\Software\ODBC\ODBC.INI下,增加主鍵:TestDB,並分別加入鍵值如下:
Autostop = "yes"
Databasefile = "C:\YourApp\YourDB.DB
Databasename = "TestDB"
Driver = "C:\YourApp\Sqlany50\WOD50T.DLL"
PWD = "sql"
Start = "C:\YourApp\Sqlany50\dbeng50.exe -d -c1024 -Q"
UID = "dba"
在用戶的安裝程式中將以上步驟加入,可以使用戶的應用程式在不必安裝SQL Anywhere資料庫驅動下,也能直接訪問用戶資料源,從而實現用戶應用程式的獨立發佈。
integer rc
string ls_dir,is_dbfile,is_datasource
ulong ls_buf
is_datasource="graduate"
ls_buf=256
ls_dir=space(ls_buf)
GetCurrentdirectoryA(ls_buf,ls_dir)
is_dbfile=ls_dir+'\graduate.db'
rc=profileint("first.ini","start","first",0)
if rc=1 then
if RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 7.0","Driver",RegString!,"dbodbc7.dll")=1 then
messagebox("恭喜你","資料源已註冊成功!")
end if
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 7.0","Setup",RegString!,"dbodbc7.dll")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources","graduate",RegString!,"Adaptive Server Anywhere 7.0")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"Driver",RegString!,"dbodbc7.dll")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"UID",RegString!,"dba")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"PWD",RegString!,"sql")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"DatabaseFile",RegString!,is_dbfile)
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"AutoStop",RegString!,"Yes")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"Integrated",RegString!,"No")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"DatabaseName",RegString!,"graduate.db")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"Debug",RegString!,"No")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+is_datasource,"DisableMultiRowFetch",RegString!,"No")
setprofilestring("first.ini","start","first","0")
end if
只需要把datasource等幾個地方改一下就可以了
其中的graduate是我的資料庫名
if RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 7.0","Driver",RegString!,"dbodbc7.dll")=1
這一句就是driver的配置
上述連接為代碼實現,下面的是由打包程式實現的註冊表項
有兩中連接
1.本地連接
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ASA 8.0 Sample]
"Driver"="C:\\Program Files\\Sybase\\SQL Anywhere 8\\win32\\dbodbc8.dll"
"Description"="Adaptive Server Anywhere Sample Database"
"UID"="dba"
"PWD"="sql"
"EngineName"="asademo8"
"DatabaseFile"="C:\\Program Files\\Sybase\\SQL Anywhere 8\\asademo.db"
"Start"="C:\\Program Files\\Sybase\\SQL Anywhere 8\\win32\\dbeng8.exe  -c 8m"
"AutoStop"="yes"
START項有許多參數,“-C 8M”設置初始快取記憶體大小8M,一般建議64M。“-Q”安靜模式 — 取消輸出,就是系統拖盤中不顯示資料庫引擎圖表。‘-D’禁用非同步 I/O [Windows NT 、NetWare]。‘-M’對於所有資料庫,在每個檢查點之後截斷事務日誌。
2.網路連接
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ASA 8.0 Client Sample]
"Driver"="C:\\Program Files\\Sybase\\SQL Anywhere 8\\win32\\dbodbc8.dll"
"Description"="Adaptive Server Anywhere Sample Client"
"UID"="dba"
"PWD"="sql"
"EngineName"="asademo8"
"CommLinks"="TCPIP{}"
"AutoStop"="yes"
注意:如果你要在WINDOWS的ODBC中看到的分發的資料庫,還要以下的資訊
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"ASA 8.0 Client Sample"="Adaptive Server Anywhere 8.0"(網路連接)
"ASA 8.0 Sample"="Adaptive Server Anywhere 8.0"(本地連接)
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0]
"Driver"="C:\\Program Files\\Sybase\\SQL Anywhere 8\\win32\\dbodbc8.dll"
"Setup"="C:\\Program Files\\Sybase\\SQL Anywhere 8\\win32\\dbodbc8.dll"
該註冊項為你分發DLL的實際路徑。