摘要:本文主要討論基于Windows平臺的PowerBuilder 8.0應用程序編譯發布關鍵問題和解決方法,包括執行文件的建立、資源文件的創建、安裝程序的建立及添加數據源和SQL anywhere 數據庫移動處理等問題。
關鍵字:軟件開發、PowerBuilder 8.0、應用程序發布、Setup程序制作。
引言
PowerBuilder+ODBC+SQL anywhere是目前開發數據庫應用程序非常流行的模式。但PowerBuilder本身僅是一個開發工具,當一個應用程序被開發并完成調試后,我們還需對其建立可執行文件并移植到終端用戶的機器上,其中ODBC的配置和SQL anywhere的安裝是難點,本文論述基于Windows平臺的PowerBuilder 8.0應用程序編譯發布關鍵技術問題和解決辦法。
執行文件的建立
1、編譯格式的選擇
PowerBuilder 8.0對生成可執行文件提供了兩種編譯格式:偽代碼(Pcode,即pseudocode的縮寫)和機器代碼(Machinecode)。偽代碼是一種在所有PowerBuilder 平臺上支持的解釋性語言,它的格式與PowerBuilder 運行庫(.pbl)一樣,在可執行狀態下保存單個對象,其優點是方便和可移植;機器代碼則是真正的完全脫離PowerBuilder 環境的可執行文件,其優點是速度快,但文件容量比較大。選擇編譯代碼格式一般基于以下三個方面:
①速度。若目標是優化運行速度和應用強化腳本處理,則選擇機器代碼。要是代碼中較多地使用了循環結構、浮點運算或整數算法及函數調用,機器代碼將比偽代碼做得更好。但偽代碼的編譯速度比機器代碼快,特別是開發人員要快速地創建測試用的可執行文件時非常便利;
②大小。偽代碼生成的文件比機器代碼的小。如運行應用程序的終端機器容量緊張的話,就需要放棄較快的機器代碼而選擇偽代碼;
③移植。偽代碼對于跨平臺的應用非常有用。它可以方便地跨平臺(PowerBuilder 支持)使用,包括:Microsoft Windows (16位和32位)、AppleMacintosh和UNIX。機器代碼是依賴于平臺的,也就是說要求生成和可執行應用平臺一致,不過它可以獲得更好的性能。
2、動態庫的建立
發布PowerBuilder 8.0應用可以將一些對象不放到可執行文件中,而放到動態庫中在運行時裝入,這樣可以將應用程序分割成更小的模塊便于管理和維護。
選擇偽代碼(Pcode)編譯方式生成PowerBuilder動態庫(.pbd文件),選擇機器代碼(Machinecode)方式在Windows和UNIX平臺上生成動態鏈接庫(.dll文件,如將test.pbl編譯成test.dll),在machine平臺上生成平臺支持的共享庫(如test.lib)。如果在Windows上有兩個應用,那么編譯成的.pbd包含一個調用全局外部函數的用戶對象,為了保證正確調用函數必須為每個應用單獨編譯和發布.pbd文件。
當建立動態庫時,將源庫(.pbl文件)中所有對象的編譯版本拷貝到動態庫中。為了在某些庫中只使用所需的對象,可以將它們放到一個標準的PowerBuilder庫(.pbl)中。
在建立動態庫時,PowerBuilder并不檢查所有對象,只是簡單地去掉對象的源格式,因此,對于一些在畫筆或腳本中指定了使用資源(圖形、圖標或指針)的對象,若不想提供單獨的資源,則必須在資源文件(.pbr)中羅列出這些資源,這樣才能保證在建立動態庫時包含這些資源。
動態庫的建立有兩種途徑:一是在庫管理畫筆中建立;二是在工程畫筆中建立工程對象時一起建立。
3、資源文件的使用
可執行文件或動態庫中可以包含一些資源(圖形、圖標或指針),也可以將它們作為單獨的資源文件(.pbr文件)保存。
(1)單獨的分布資源
若某資源不包含在可執行文件或動態庫中,則在執行應用程序引用它時,PowerBuilder按查詢路徑查找該資源,因此,必須將它與應用程序一起放在查詢路徑下。
Windows的查詢路徑為:當前目錄,Windows目錄,Windows的System目錄和PATH環境變量中設置的所有目錄。
(2)資源文件
可以使用PowerBuilder資源文件(.pbr)替代單獨的資源,其中列出所有的動態分配的資源也可以包含動態分配的數據窗口對象。PowerBuilder將這些資源編譯后放入可執行文件或.pbd文件中,這些資源在執行時可直接使用。
若給數據窗口控件動態分配數據窗口對象,則必須創建一個資源文件,且在可執行文件或動態庫文件中包含該對象,或在一個單獨的動態庫中包含它。
資源文件(.pbr)是一個ASCII碼文件,在其中列出了應用程序要有到的各種資源(如.bmp、.cur、.ico、.rle和.wmf文件)和數據窗口對象。使用文本編輯器(如Windows的記事本)創建一個文本文件,其中列出在應用中動態引用的資源文件,一行列出一個資源,格式如:
appico.ico
appbmp1.bmp
appbmp2.bmp
……
以上文件和對象都假設是在當前目錄中,如果存在于另一個目錄中,則必須包含所在路徑,格式如:
e:/myapp/test.jpg。
在.pbr文件中指定的文件名必須與在腳本中引用的資源匹配,若引用時包含路徑,則在.pbr文件中也必須包含同一路徑,否則因PowerBuilder在執行時只是簡單地進行字符串比較而導致無法發現該資源。
若應用程序中包含有動態引用的數據窗口,則在.pbr文件中必須包含數據窗口對象,格式如:
yapp.pbl(dw_infodisplay)
其中:myapp.pbl為應用程序庫,dw_infodisplay為數據窗口對象,一般是在當前目錄或指定路徑。在執行時,若引用資源,PowerBuilder首先檢查可執行文件,找不到再在.pbd文件中、文件查詢路徑的目錄中查找。
在工程畫筆中建立工程對象時可以為可執行文件或每一個動態庫指定它使用的資源文件,也可以在庫管理畫筆中建立動態庫時使用。
新聞熱點
疑難解答