使用Powerbuilder 9.0和ASA 8.0写了一个简单的软件包管理系统,在发布的过程中遇到很多问题,花一上午时间得以解决。记录之,以备后查。
数据库移植
首先,将所要移植的数据库日志文件(*.log)的路径改为相对于数据文件(*.db)的相对路径,而不是使用绝对路径。只有如此修改,数据库文件才可拷贝至其他位置并设置为数据源,否则在连接数据库时会提示“Unable to connect database server:Specified database is invalid”。具体步骤如下:
Sybase Central –> Tools –> Adaptive Server Anywhere 8 –> Change Log File Settings
在此修改路径,如原路径为“D:/SPMS/spms.log”,现可修改为“spms.log”,即表示spms.log应与spms.db在同一文件夹下。
亦可设置为不生成日志文件,但不推荐。因为,若数据库因意外(机器断电)等引起数据故障,系统会自动利用日志文件来恢复数据库。
将前述两文件拷贝至他处,并设置为数据源,测试程序是否能正常连接。
数据库运行环境搭建
上述操作均在开发环境下进行,而我们同样需要在应用环境下不安装ASA服务器端/客户端,而连接到数据库。
Adaptive Server Anywhere 8.0 数据库的正常运行需要6个文件的支持,为dbcon8.dll、dbctrs8.dll、dbeng8.exe、dblgen8.dll、 dbodbc8.dll、dbserv8.dll,将这6个文件与数据库文件一起拷贝到应用环境中。
我的程序是使用ODBC与ASA数据库相连,则还需在注册表中设置ODBC用户数据源。
注册表示例可在此浏览,其中{app}应替换为应用环境中实际拷贝的位置。导入注册表项后,测试数据库是否可正常工作(Test Connection)。
可执行文件生成
Powerbuilder工程生成可执行文件一般是通过Application Wizard来完成的,这点在大部分讲述PB基础的书籍中都有详细解释,此处不再赘述,仅将我遇到的两个问题解释下。
1. 如何修改PB生成的可执行文件图标?
在应用程序对象(Application)的属性界面(Properties –> Additional Properties –> Icon)设置图标,建议使用相对路径。
2. 如何使用资源文件(*.pbr)?
方法很简单,将所需要用到的图标、图像文件等的文件名按照每行一个的格式保存至一个txt中(可使用命令 dir /b > list.txt 将某文件夹下的所有文件名输出到list.txt中),修改后缀名为pbr,并在Resource File Name中选择该资源文件,Deploy即可。
注意:此处写入pbr的文件名应与程序中调用的文件名完全一致,比如pbr中写有search.gif,则在menu的toolbar中icon路径应写为search.gif,而不是绝对路径。
PB程序运行环境搭建
Powerbuilder 9.0 数据库的正常运行需要4个文件的支持,为libjcc.dll、pbdwe90.dll、pbodb90.dll、pbvm90.dll,将这4个文件与可执行文件一起拷贝到应用环境中。
若运行应用程序提示“dbms odbc is not supported in your current installation”,则应检查pbodb90.dll(ODBC接口连接用动态链接库)是否存在。
生成安装文件
我使用的是Inno Setup配合ISTool来生成安装文件的,此工具具有图形化设置界面,操作简便,功能强大,推荐使用。这是我生成的脚本,可供参考。
需注意的有一点,桌面快捷方式的Flag应选中“Use app paths”,以避免应用程序使用GetCurrentDirectory()等函数时无法获得正确的执行路径。
至于其他的打包程序网上多有资料介绍,按照帮助慢慢实验即可完成。