證)
簡(jiǎn)介PowerBuilder 9.0 安裝包及配套說明面向需要搭建經(jīng)典PB開發(fā)環(huán)境的高校學(xué)生、開發(fā)人員與上機(jī)考試備考者重點(diǎn)解決舊版工具獲取、部署及兼容性確認(rèn)等問題。壓縮包共69個(gè)文件、約282.22MB以exe、cab、ex_等安裝程序與數(shù)據(jù)組件為主輔以ini、inf、lbl等配置介質(zhì)文件以及sql腳本、txt和docx說明、教程文檔、zip組件兼顧安裝介質(zhì)完整性與后續(xù)查閱。包內(nèi)附有安裝說明并針對(duì)Windows 10環(huán)境整理了注意事項(xiàng)便于在課程實(shí)驗(yàn)或備考前核對(duì)安裝條件。已有2454人學(xué)習(xí)下載在PB9學(xué)習(xí)與上機(jī)場(chǎng)景中具有一定參考價(jià)值。需要復(fù)現(xiàn)舊版開發(fā)環(huán)境、查閱常用函數(shù)或數(shù)據(jù)庫連接示例的讀者可借助文檔與腳本快速定位材料也可通過教程補(bǔ)充基礎(chǔ)操作與開發(fā)思路適合作為環(huán)境搭建和入門復(fù)習(xí)的資料合集。1. 一份 PowerBuilder 9.0 安裝包能解決什么問題三種還在跑老工程的現(xiàn)場(chǎng)接手一套十幾年前的管理系統(tǒng)源碼齊全、數(shù)據(jù)庫還在跑唯獨(dú)開發(fā)環(huán)境搭不起來這種局面在維護(hù)型項(xiàng)目里并不少見。PowerBuilder 9.0 安裝包下載這件事表面上是找一個(gè)幾百兆的安裝文件實(shí)際要解決的是「如何在一臺(tái) Win10/Win11 機(jī)器上復(fù)現(xiàn)出 2003 年前后的開發(fā)環(huán)境」。它面向的人群很明確接手遺留系統(tǒng)維護(hù)的外包團(tuán)隊(duì)、要把老 PB 應(yīng)用的數(shù)據(jù)遷移到新系統(tǒng)的工程師、需要讀老 PBL 源碼做邏輯還原的人。這不是新項(xiàng)目選型而是一次純粹的維護(hù)性投入安裝包能不能裝、裝完能不能連庫、跑起來會(huì)不會(huì)在某個(gè)畫筆上翻車決定了后面所有工作的起點(diǎn)?;谶@幾個(gè)約束條件我一般按「先拆結(jié)構(gòu)、再走安裝、最后驗(yàn)運(yùn)行時(shí)」三步來做。2. 安裝包里到底有什么六個(gè)部件與補(bǔ)丁級(jí)別的甄別很多人在拿到包之后直接雙擊 setup.exe 一路回車裝完發(fā)現(xiàn) ODBC 接口沒了、示例庫連不上再回頭重裝。原因不復(fù)雜PB9 的安裝包不是一個(gè)單體程序而是六個(gè)互相獨(dú)立的部件捆在一起組件勾選頁面一旦默認(rèn)取消掉項(xiàng)后面就得靠補(bǔ)裝才能補(bǔ)回來。所以動(dòng)手之前先看清包里到底裝的是什么比裝快十分鐘更重要。2.1 六個(gè)部件與它們各自的職責(zé)一個(gè)完整的 PB9 安裝介質(zhì)解壓出來常見結(jié)構(gòu)大致是這樣的PB9/ ├─ setup.exe 安裝引導(dǎo)程序InstallShield 打包 ├─ DISK1/ … 主安裝數(shù)據(jù) ├─ SHARED/ 共享組件ODBC 驅(qū)動(dòng)、幫助、注冊(cè)工具 ├─ ASA/ 本地?cái)?shù)據(jù)庫引擎與示例庫 └─ DOC/ 聯(lián)機(jī)幫助與示例代碼對(duì)應(yīng)的功能部件可以按下面這張表來理解裝不裝取決于你要干什么部件典型目錄或文件是否必裝作用PowerBuilder IDE主程序 pb90.exe必裝畫筆、調(diào)試器、PBL 庫管理數(shù)據(jù)庫 native 接口pbodb90.dll、pbmss90.dll 等按需ODBC 與各類數(shù)據(jù)庫的 PB 專用驅(qū)動(dòng)ASA 本地引擎ASA 目錄建議裝自帶示例庫用于脫離生產(chǎn)庫做驗(yàn)證InfoMakerIM 目錄按需報(bào)表制作老系統(tǒng)常單獨(dú)發(fā)報(bào)表工具運(yùn)行時(shí) DLLpbvm90.dll、pbdwe90.dll 等必裝編譯出的 exe 在目標(biāo)機(jī)運(yùn)行所需示例與幫助Code Examples建議裝查 DataWindow 語法和舊寫法我自己的習(xí)慣是IDE、native 接口、ASA、示例代碼這四項(xiàng)全勾InfoMaker 看項(xiàng)目里有沒有 .pbl 報(bào)表需求再?zèng)Q定。PowerDynamo 那一類 Web 部署組件基本都是空的勾了只是多占幾百兆磁盤空間。2.2 補(bǔ)丁級(jí)別比安裝包版本更關(guān)鍵PB9 在生命周期里出過多個(gè)補(bǔ)丁級(jí)別同一個(gè)「9.0」字樣下面可能對(duì)應(yīng)不同的小版本。維護(hù)老工程時(shí)最怕的是生產(chǎn)環(huán)境跑的是打過補(bǔ)丁的運(yùn)行時(shí)本地裝的是最初版本編譯出來的 pbd 在客戶機(jī)上直接報(bào)版本不匹配。判斷手上這份包是哪一檔裝完之后最直接的辦法是打開 IDE看 Help → About 里的版本串通常形如9.0.x (Build xxxx)。注冊(cè)表里也有一份記錄# 只讀檢查確認(rèn)安裝落點(diǎn)和版本鍵 $paths ( HKLM:\SOFTWARE\WOW6432Node\廠商\PowerBuilder\9.0, HKLM:\SOFTWARE\廠商\PowerBuilder\9.0 ) foreach ($p in $paths) { if (Test-Path $p) { Get-ItemProperty $p | Format-List } }這段腳本里廠商是安裝時(shí)顯示的產(chǎn)品廠商名不同打包來源寫法可能不一致所以兩個(gè)路徑都探一遍。WOW6432Node這一支必須查因?yàn)?PB9 是純 32 位程序在 64 位系統(tǒng)上安裝信息會(huì)被重定向到這里。提示把裝好的這份注冊(cè)表分支導(dǎo)出成 .reg 留檔以后換機(jī)器或者和同事對(duì)版本直接比對(duì)鍵值比肉眼翻界面快得多。2.3 拿到包先做一次校驗(yàn)與歸檔下載來源不可控的時(shí)候別急著裝。先算一遍哈希和發(fā)布方提供的值對(duì)一下沒有提供值的至少把哈希記下來方便日后確認(rèn)「我這臺(tái)機(jī)器上裝的是不是同一份」。# 計(jì)算安裝包哈希并記錄到歸檔清單 $iso D:\pkg\PB9\setup.exe $h Get-FileHash -Algorithm SHA256 -Path $iso {0} {1} -f $h.Hash, $h.Path | Tee-Object -Append D:\pkg\PB9\sha256.txt-Algorithm建議用 SHA256MD5 在老資料里常見但碰撞風(fēng)險(xiǎn)高做歸檔校驗(yàn)已經(jīng)不太合適。Tee-Object -Append的作用是同一份清單可以累積多個(gè)文件以后整包遷移時(shí)一眼能看出哪幾個(gè)文件被替換過。歸檔我一般留三樣?xùn)|西原始安裝介質(zhì)的只讀副本、裝完后導(dǎo)出的注冊(cè)表分支、安裝目錄下的 pb.ini 與 pbodb90.ini。前兩個(gè)用于重裝后兩個(gè)用于排查「為什么同事的機(jī)器能連庫我的不能」——老 PB 項(xiàng)目里很大一部分連接問題最后都落在 ini 文件的差異上。2.4 安裝前的磁盤與權(quán)限確認(rèn)PB9 的安裝目錄最大會(huì)吃掉 1G 以上加上示例庫和幫助文檔留 3G 空間比較穩(wěn)妥。路徑本身有兩條必須遵守的限制全英文、無空格。C:\Program Files\PowerBuilder 9.0這種默認(rèn)路徑在部分老打包腳本里會(huì)被截?cái)喑蒀:\Program編譯時(shí)引用資源就會(huì)莫名其妙失敗。我一般直接把根目錄定成C:\PB9短、無空格、權(quán)限簡(jiǎn)單。權(quán)限方面安裝過程必須用管理員身份裝完之后的 IDE 首次啟動(dòng)最好也用管理員跑一次讓它把用戶級(jí)的配置寫全。之后再切回普通權(quán)限使用避免長(zhǎng)期用管理員開 IDE 帶來的文件所有者混亂。3. 在 Win10/Win11 上裝 PB9兼容模式、組件勾選與注冊(cè)表落點(diǎn)PB9 出廠年代對(duì)應(yīng)的是 Windows 2000/XP直接在現(xiàn)代系統(tǒng)上雙擊 setup.exe十有八九會(huì)卡在某一步要么安裝程序在「Updating System Configuration」停住要么裝完 IDE 雙擊沒反應(yīng)進(jìn)程在任務(wù)管理器里一閃就消失。這些問題都不是安裝包壞了而是兼容層沒有提前鋪好。3.1 裝之前先給安裝程序打上兼容標(biāo)記最省事的做法是給 setup.exe 單獨(dú)設(shè)兼容性而不是給整個(gè)系統(tǒng)降級(jí)。圖形界面路徑是右鍵屬性 → 兼容性 → 勾選「以兼容模式運(yùn)行這個(gè)程序」并選擇 Windows XP (Service Pack 3)同時(shí)勾選「以管理員身份運(yùn)行此程序」。批量部署時(shí)可以用注冊(cè)表直接寫# 給安裝程序?qū)懭爰嫒菪詷?biāo)記XP SP3 管理員 $exe D:\pkg\PB9\setup.exe $key HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers if (-not (Test-Path $key)) { New-Item -Path $key -Force | Out-Null } $value ~ WINXPSP3 RUNASADMIN New-ItemProperty -Path $key -Name $exe -Value $value -PropertyType String -ForceWINXPSP3指定兼容層版本RUNASADMIN讓系統(tǒng)在啟動(dòng)時(shí)彈 UAC 提權(quán)~是這一串標(biāo)記的分隔前綴缺了它系統(tǒng)不會(huì)識(shí)別。這條設(shè)置寫在HKCU下只對(duì)當(dāng)前用戶生效換賬戶要重寫一遍。安裝過程中如果卡在進(jìn)度條某處超過十分鐘先別急著強(qiáng)殺。打開任務(wù)管理器看setup.exe是否還有 CPU 占用完全沒有占用的話多半是安裝程序在等某個(gè) 16 位子進(jìn)程回調(diào)此時(shí)強(qiáng)殺再重來通常無效得先清掉%TEMP%下的 InstallShield 殘留目錄再裝。3.2 組件勾選頁面的取舍走到組件選擇那一步默認(rèn)勾選往往不全。按前面的部件表我的勾法是這樣的組件勾選建議不勾的后果PowerBuilder必勾沒有 IDEODBC 接口必勾連庫報(bào) DBMS 不支持Native 數(shù)據(jù)庫接口按生產(chǎn)庫類型勾只能走 ODBC性能差一截ASA / 示例庫建議勾缺一個(gè)可離線驗(yàn)證的庫InfoMaker看項(xiàng)目報(bào)表 .pbl 打不開Web 部署組件一般不勾無影響只占空間有個(gè)細(xì)節(jié)容易被忽略安裝程序會(huì)問是否安裝「共享組件」到公共目錄這一步選是。PB9 的 OCX 控件和 ODBC 驅(qū)動(dòng)會(huì)注冊(cè)到系統(tǒng)級(jí)選否的話同一臺(tái)機(jī)器上其他賬戶登錄后可能找不到驅(qū)動(dòng)。3.3 高分屏下的界面與 DPI 設(shè)置Win10 之后默認(rèn)縮放經(jīng)常是 125% 或 150%PB9 的畫筆界面是按 96 DPI 畫的縮放后按鈕被裁、DataWindow 設(shè)計(jì)區(qū)尺寸失真。處理方式是給主程序單獨(dú)關(guān)掉 DPI 縮放# 關(guān)閉 pb90.exe 的高 DPI 縮放避免畫筆界面錯(cuò)位 $exe C:\PB9\pb90.exe $key HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers New-ItemProperty -Path $key -Name $exe -Value ~ HIGHDPIAWARE -PropertyType String -ForceHIGHDPIAWARE告訴系統(tǒng)這個(gè)進(jìn)程自己處理縮放實(shí)際效果是把界面按 100% 渲染字體略小但布局不再錯(cuò)亂。代價(jià)是在 4K 屏上字會(huì)比較小通常配合把顯示器縮放臨時(shí)調(diào)到 100% 使用。3.4 注冊(cè)表與配置文件的實(shí)際位置裝完之后配置并不只存在一個(gè)地方。IDE 的界面布局、最近打開的工程記在用戶目錄的 ini 里數(shù)據(jù)庫接口的參數(shù)在安裝目錄的 pbodb90.ini而安裝信息、組件注冊(cè)在注冊(cè)表。三處不一致時(shí)就會(huì)出現(xiàn)「設(shè)置明明改了卻不生效」的玄學(xué)現(xiàn)象。排查順序我固定為先看安裝目錄 pb.ini 的[Database]段再看用戶目錄是否有同名文件覆蓋最后查注冊(cè)表分支。用戶目錄的 ini 優(yōu)先級(jí)高于安裝目錄這一點(diǎn)在多人共用一臺(tái)機(jī)器時(shí)特別容易出問題——A 改了連接參數(shù)B 登錄后用的還是自己的那份。注意不要把安裝目錄做成網(wǎng)絡(luò)共享給多人同時(shí)開發(fā)pb.ini 會(huì)被并發(fā)寫壞PBL 庫文件也可能因?yàn)槲募i出現(xiàn)只讀。要么每人本地一份要么走源碼管理導(dǎo)出。4. 連庫與第一個(gè) DataWindow事務(wù)對(duì)象、驅(qū)動(dòng)和 PB.INI 的配合環(huán)境裝完只是把工具擺上桌真正驗(yàn)證這套環(huán)境可用是讓 IDE 連上數(shù)據(jù)庫、拖出一個(gè) DataWindow 并成功檢索出數(shù)據(jù)。這一步過了后面讀代碼、改邏輯、編譯發(fā)布才有意義。PB 的數(shù)據(jù)庫訪問模型和現(xiàn)在的 ORM 完全不同它圍繞一個(gè)叫事務(wù)對(duì)象Transaction Object的全局變量轉(zhuǎn)全局默認(rèn)的那個(gè)叫 SQLCA。4.1 三種連接方式怎么選方式DBParm 里的 DBMS 寫法適用場(chǎng)景主要代價(jià)ODBCODBC快速驗(yàn)證、冷門數(shù)據(jù)庫多一層驅(qū)動(dòng)性能略低Native 接口按庫類型如MSS Microsoft SQL Server生產(chǎn)環(huán)境常規(guī)選擇需要對(duì)應(yīng) DLL 已安裝直連 ASASYC Sybase Adaptive Server Anywhere本地示例庫驗(yàn)證僅限 ASA維護(hù)老系統(tǒng)時(shí)我建議先用 ODBC 打通確認(rèn)賬號(hào)、網(wǎng)絡(luò)、庫名都沒問題再切到 native 接口調(diào)優(yōu)。反過來的順序會(huì)讓你在驅(qū)動(dòng)層和網(wǎng)絡(luò)層之間反復(fù)懷疑浪費(fèi)大量時(shí)間。4.2 用腳本設(shè)置 SQLCA 并連接在應(yīng)用對(duì)象的 Open 事件里寫連接邏輯是最常見的落地位置。下面這段可以直接抄改// 應(yīng)用 open 事件配置事務(wù)對(duì)象并連接數(shù)據(jù)庫 SQLCA.DBMS ODBC SQLCA.AutoCommit False SQLCA.DBParm ConnectStringDSNeasdemo9;UIDdba;PWDsql CONNECT USING SQLCA; IF SQLCA.SQLCode 0 THEN // SQLCode: 0 成功, 100 未找到, -1 出錯(cuò) MessageBox(數(shù)據(jù)庫連接失敗, SQLCA.SQLErrText) HALT CLOSE END IFDBMS決定走哪個(gè)接口寫錯(cuò)會(huì)直接報(bào)「DBMS xxx is not supported in your current installation」這基本等價(jià)于「安裝時(shí)沒勾對(duì)應(yīng)驅(qū)動(dòng)」。AutoCommit False是老項(xiàng)目里更安全的默認(rèn)值意味著更新后必須顯式COMMIT好處是出錯(cuò)能回滾壞處是忘了提交會(huì)鎖表。DBParm里的ConnectString是 ODBC 專用寫法換成 native 接口時(shí)要改成Database、ServerName、LogId、LogPass這些分散屬性。SQLCode的三種取值要記牢0 是成功100 是沒查到記錄不是錯(cuò)誤-1 才是真出錯(cuò)。很多老代碼把 100 當(dāng)失敗處理導(dǎo)致空表場(chǎng)景下一進(jìn)界面就彈錯(cuò)誤框。4.3 SetTrans 與 SetTransObject 的區(qū)別新手最常踩的一個(gè)坑是分不清SetTrans和SetTransObject。前者讓 DataWindow 自己用內(nèi)部事務(wù)連接數(shù)據(jù)庫用完即斷后者共享外部傳入的事務(wù)對(duì)象連接復(fù)用。// 推薦共享應(yīng)用級(jí)事務(wù)性能好、可統(tǒng)一提交 dw_1.SetTransObject(SQLCA) dw_1.Retrieve() // 不推薦在循環(huán)里用每次 Retrieve 都可能新建連接 // dw_1.SetTrans(SQLCA)SetTrans不是不能用它在單次查詢、不需要事務(wù)控制的場(chǎng)景下反而簡(jiǎn)單。但只要涉及多條 DataWindow 聯(lián)動(dòng)更新就必須用SetTransObject否則每條 DataWindow 各自提交一條失敗一條成功數(shù)據(jù)就臟了。4.4 更新、提交與回滾的標(biāo)準(zhǔn)寫法檢索出來只是第一步能不能正確寫回才是關(guān)鍵。DataWindow 的 Update 返回值約定是1 表示成功0 表示沒有行需要更新-1 表示失敗。// 保存按鈕更新并顯式提交 Long ll_rc ll_rc dw_1.Update() IF ll_rc 1 THEN COMMIT USING SQLCA; IF SQLCA.SQLCode 0 THEN ROLLBACK USING SQLCA; MessageBox(提交失敗, SQLCA.SQLErrText) END IF ELSEIF ll_rc -1 THEN ROLLBACK USING SQLCA; MessageBox(更新失敗, SQLCA.SQLErrText) END IF這段代碼的價(jià)值在于它覆蓋了Update成功但COMMIT失敗的情況——數(shù)據(jù)庫連接中斷、死鎖、約束沖突都可能發(fā)生在提交階段此時(shí)必須回滾否則會(huì)留下懸掛事務(wù)把表鎖住。老項(xiàng)目里經(jīng)常見到只判斷Update返回值、不判斷COMMIT結(jié)果的寫法線上偶發(fā)的「表被鎖住」大多來自這里。要讓 Update 正確生成 SQLDataWindow 還得配好三件事更新屬性里選擇目標(biāo)表、指定主鍵列、勾選可更新列。主鍵選錯(cuò)會(huì)導(dǎo)致更新影響 0 行卻返回成功這是最隱蔽的一類問題。5. 五類現(xiàn)場(chǎng)排查裝不上、打不開、連不通、亂碼、打印崩這些問題我在不同機(jī)器上反復(fù)遇到過下面按「現(xiàn)象 → 原因 → 解決」寫方便對(duì)照排查。5.1 安裝程序卡在進(jìn)度條不動(dòng)現(xiàn)象setup.exe 跑到一半停住進(jìn)度條長(zhǎng)期不動(dòng)CPU 占用接近零。原因老版 InstallShield 在處理系統(tǒng)配置回調(diào)時(shí)會(huì)等待一個(gè) 16 位兼容子進(jìn)程現(xiàn)代系統(tǒng)上該進(jìn)程無法正常創(chuàng)建也可能殘留了上一次中斷安裝的臨時(shí)文件。解決先清理%TEMP%下以_is或{開頭的殘留目錄再確認(rèn) setup.exe 已加 XP SP3 兼容標(biāo)記和管理員權(quán)限然后重啟機(jī)器重新安裝。仍然卡住的話改用解壓工具把安裝介質(zhì)里的 DISK1 內(nèi)容攤平到本地目錄從里面的 data 目錄直接手工拷貝文件再補(bǔ)跑共享組件的注冊(cè)腳本。5.2 裝完雙擊圖標(biāo)沒反應(yīng)現(xiàn)象pb90.exe 雙擊后進(jìn)程一閃而過沒有任何窗口和報(bào)錯(cuò)。原因主程序缺少兼容性設(shè)置或者安裝時(shí)依賴的 VC 運(yùn)行庫、MSXML 組件沒注冊(cè)成功。解決給 pb90.exe 加 XP SP3 兼容標(biāo)記并以管理員身份運(yùn)行一次確認(rèn)安裝目錄下 pbvm90.dll、pbshr90.dll 等運(yùn)行時(shí)文件都在用依賴查看工具看 pb90.exe 是否缺少某個(gè)系統(tǒng) DLL缺什么補(bǔ)什么。5.3 連庫報(bào) DBMS 不支持現(xiàn)象腳本里寫SQLCA.DBMS ODBC運(yùn)行時(shí)提示該 DBMS 在當(dāng)前安裝中不受支持。原因安裝時(shí) ODBC 接口組件被取消勾選或者 pbodb90.dll 沒有注冊(cè)到系統(tǒng)。解決重跑安裝程序只勾選數(shù)據(jù)庫接口組件做補(bǔ)裝補(bǔ)裝后確認(rèn)安裝目錄下存在 pbodb90.dll并在 ODBC 數(shù)據(jù)源管理器里能看到對(duì)應(yīng) DSN。DSN 是 32 位的64 位系統(tǒng)默認(rèn)打開的是 64 位數(shù)據(jù)源管理器要專門找 32 位那個(gè)版本。5.4 中文數(shù)據(jù)檢索出來是亂碼或問號(hào)現(xiàn)象庫里存的中文DataWindow 檢索出來顯示成方框、問號(hào)或亂碼。原因數(shù)據(jù)庫字符集和 PB 連接的 NLS 設(shè)置不一致或者客戶端字體缺失。解決先確認(rèn)數(shù)據(jù)庫端的字符集再在 pbodb90.ini 里調(diào)整對(duì)應(yīng)的 NLS 配置項(xiàng)ODBC 連接串里也可以顯式帶上字符集參數(shù)。改完必須完全退出 IDE 再重進(jìn)ini 只在啟動(dòng)時(shí)讀取一次。字體問題則是另一回事DataWindow 里指定了系統(tǒng)不存在的字體時(shí)會(huì)退化成符號(hào)字體換成通用中文字體即可。5.5 打印預(yù)覽空白或打印時(shí)報(bào)錯(cuò)現(xiàn)象DataWindow 打印預(yù)覽一片白或者點(diǎn)打印直接拋異常。原因系統(tǒng)默認(rèn)打印機(jī)是虛擬打印機(jī)PDF 打印機(jī)、OneNote 之類老版打印邏輯無法正確獲取設(shè)備上下文。解決把一臺(tái)真實(shí)物理打印機(jī)設(shè)為默認(rèn)或者裝一個(gè)穩(wěn)定的 PDF 打印機(jī)驅(qū)動(dòng)并確保它能正常打印測(cè)試頁再檢查 DataWindow 的打印規(guī)格里紙張尺寸是否與驅(qū)動(dòng)支持的尺寸匹配自定義紙張?jiān)诶向?qū)動(dòng)上經(jīng)常不被識(shí)別。6. 運(yùn)行時(shí)打包與版本共存怎么確認(rèn)這次裝的是真能用IDE 能開、能連庫不等于交付的 exe 在客戶機(jī)上能跑。PB9 的運(yùn)行時(shí)是一組 DLL缺一個(gè)就是啟動(dòng)即報(bào)錯(cuò)而且報(bào)錯(cuò)信息往往只有一句模糊的「找不到組件」。所以裝完環(huán)境之后我還會(huì)再走一遍運(yùn)行時(shí)驗(yàn)證確認(rèn)這套安裝是完整的。6.1 最小運(yùn)行時(shí)清單文件作用是否必須pbvm90.dllPowerBuilder 虛擬機(jī)解釋執(zhí)行 pbd必須pbshr90.dll公共函數(shù)庫必須pbdwe90.dllDataWindow 引擎有 DataWindow 就必須pbtrs90.dll事務(wù)與數(shù)據(jù)庫接口管理連庫就必須pbodb90.dllODBC 接口實(shí)現(xiàn)走 ODBC 就必須libjcc.dllJava 支持底層庫部分版本啟動(dòng)即依賴清單的用法很簡(jiǎn)單把編譯出來的 exe、pbd 和上表文件放進(jìn)同一個(gè)目錄在一臺(tái)沒裝過 PB 的干凈機(jī)器上雙擊。能起來、能連庫、能出數(shù)據(jù)才算交付成立。用注冊(cè)表或 PATH 去找 DLL 的做法不要用在交付機(jī)上路徑污染導(dǎo)致的版本錯(cuò)亂極難排查。6.2 多版本共存時(shí)的順序問題機(jī)器上同時(shí)裝 9.0 和更高版本時(shí)沖突主要發(fā)生在兩處一是 OCX 控件的 CLSID 注冊(cè)后裝的高版本會(huì)覆蓋低版本注冊(cè)項(xiàng)導(dǎo)致老工程打開時(shí)控件加載失敗二是 PATH 里運(yùn)行時(shí) DLL 的搜索順序exe 優(yōu)先加載同目錄其次才是 PATH所以同目錄自查最可靠。真要共存我給每個(gè)版本單獨(dú)裝目錄、單獨(dú)配快捷方式PATH 里一個(gè)都不加靠 exe 同目錄的 DLL 決定實(shí)際版本。6.3 四步驗(yàn)收法新建一個(gè)空 Application拖一個(gè)窗口寫上面那段連接腳本連上庫后建一個(gè) DataWindow 檢索十行數(shù)據(jù)最后編譯成 exe 拷到干凈機(jī)器跑一遍。四步全過說明這次安裝包下載到的介質(zhì)是完整的、組件是全的、運(yùn)行時(shí)是配套的。從那以后我每次裝完 PB9都會(huì)強(qiáng)制走一遍這四步哪怕當(dāng)時(shí)只是要打開一個(gè)老 PBL 看一眼代碼。花十分鐘換來的是不用在客戶現(xiàn)場(chǎng)對(duì)著「找不到 xxx.dll」發(fā)呆。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取