敬业的IT人 >> 编程开发 >> PowerBuilder >> 定制PB与SQL Anywhere的程序发布

定制PB与SQL Anywhere的程序发布

敬业的IT人 互联网 佚名 2008-1-4 11:57:04

  用PB开发程序,并以SQL Anywhere作为后台数据库,这是PB的一种典型应用。通常情况下,要将程序发布给用户,就先要分别为这两者安装驱动,这样做既麻烦而且效果也不好——占用的空间太大,总共需要近十多二十兆。现在的我们的目标是,如何脱离PB开发环境以及SQL Anywhere数据库接口,发布自己的程序,并且身段"苗条"。经过多次测试,本人发现了一个只需3M左右的解决方案,并在Pwin98/Ewin98/PwinMe下调试通过。

一 选择必要的支持文件

1. PB主程序涉及的动态链接库(Runtime Library),以PB6.x(PB6.0、PB6.5)为例:

(1) PBVM60.DLL (PB虚拟机; 必需)
(2) PBDWE60.DLL (PB程序的DataWindow控件引擎; 可选)
(3) PBRTC60.DLL (RichText控件; 可选)
(4) PBTRA60.DLL (跟踪调用; 可选)
(5) PBODB60.DLL (ODBC接口; 可选)

在我编制的一个程序中,使用了DataWindow控件、ODBC数据接口,因此选择(1)、(2)、(5) 这三个文件;

2. SQL Anywhere 的ODBC接口,以SQL Anywhere 5.0 /5.5为例,至少要包含这些文件:

DBENG50.EXE、DBL50T.DLL、WL50ENT.DLL、WTR50T.DLL、WOD50T.DLL;以上这些是准备必要的文件,但是要使程序能够真正运行起来,还不能缺少数据接口的支持。进入讨论组讨论。 二 定制SQL Anywhere 数据接口

1. 修改文件:

修改Windows目录中的ODBC.INI文件,加入下列两行:
  [Pzgl] //假设数据源名称为pzgl (下同)
  Driver32=C:\pzgl\Wod50t.dll //假设程序运行路径为C:\pzgl

用PB进行以上修改,涉及到PB的内部函数和Win32API函数调用:
  API: getwindowsdirectory() //得到Windows的具体路径
  PB: PB中打开、写入和关闭文件的函数分别是:
  fileopen()、filewrite()、fileclose()。

2. Windows注册表支持:

在"Hkey_Current_User\Software\ODBC\ODBC.INI\Pzgl\" 和"Hkey_Users\.Default\ Software\ODBC\ODBC.INI\Pzgl\" 这两个分支下分别创建以下字符串(左边引号内为键名,右边引号内为字串值):

  a. "AutoStop" = "Yes"
  b. "DatabaseFile" = "c:\pzgl\pzgl.db"
  c. "DatabaseName" = "Pzgl"
  d. "Driver" = "c:\pzgl\wod50t.dll"
  e. "UID" = "dba"
  f. "PWD" = "sql"
  g. "Start" = "c:\pzgl\dbeng50.exe"

  顺便说一下,PB对注册表的操作要涉及到一下函数:

  registryget() //从注册表中取值
  registryset() //创建修改键或键值
  registrydelete() //删除键或分支

  综上所述,通过发布必要的支持文件、并进行数据接口的准备,这个PB数据库程序就可以独立运行了。虽然上述文件规模都不小,但我们将其压缩一下,不过才3M左右。若使用CreateInstall (一个小巧的安装文件制作工具),把所需文件都一起包含进去,制作成一个单独的安装程序,这样看起来不就更专业了吗 ^_^。 (需要实例程序的朋友,可以email给我:rjc@ah163.com)进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com