• 当前位置:首页>>PowerBuilder>>PowerBuilder运行环境>>PB8.0应用程序编译发布技术研究
  • PB8.0应用程序编译发布技术研究
  •    摘要:本文主要讨论基于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文件中必须包含数据窗口对象,格式如:

    myapp.pbl(dw_infodisplay)

      其中:myapp.pbl为应用程序库,dw_infodisplay为数据窗口对象,一般是在当前目录或指定路径。在执行时,若引用资源,PowerBuilder首先检查可执行文件,找不到再在.pbd文件中、文件查询路径的目录中查找。

      在工程画笔中建立工程对象时可以为可执行文件或每一个动态库指定它使用的资源文件,也可以在库管理画笔中建立动态库时使用。

      配置PowerBuilder 8.0应用程序

      一般来说发布一个PowerBuilder 8.0应用程序,除提交应用程序可执行文件(.exe)、应用程序的动态库(.pbd或.dll)外,还应包含如下文件:

      1、PowerBuilder 8.0应用程序运行时的支持文件

      PowerBuilder 8.0应用程序运行时的支持文件(.dll)应放在与应用程序相同的目录中或放在搜索路径中的目录中。

      以上文件可以在C:\Program Files\Sybase\Shared\PowerBuilder取得。

      2、数据库接口

      所有数据库接口文件及驱动程序(PBTRA80.DLL、PBODB80.DLL和PBODB80.INI)必须放在应用程序目录或系统目录中。

      以上文件可以在C:\Program Files\Sybase\Shared\PowerBuilder取得。我们把他们复制到应用程序目录或系统目录中。如果使用专用数据库接口以及activeX,所需复制的文件参考PowerBuilder的OnlineBook。

      3、Microsoft ODBC驱动程序和DLLs

      DS16GT.DLL,DS32GT.DLL,ODBC32.DLL,ODBC32GT.DLL,ODBCAD32.EXE,ODBCCP32.CPL,_
      ODBCCP32.DLL,ODBCCR32.DLL,ODBCINST.CNT,ODBCINST.HLP,ODBCINT.DLL,ODBCTRAC.DLL

      以上文件可以在Window的系统目录system32取得,具体路径随操作系统不同而不同。我们把他们复制到应用程序目录或系统目录中。

      4、Adaptive Server Anywhere的ODBC数据库驱动程序及其支持文件
    PBBAS15.dll,PBFLT15.dll, PBUTL15.dll,PBTRN15.dll,IVPB.LIC,PBDRV15.CNT,PBDRV15.HLP。

      以上文件可以在C:\Program Files\Sybase\Shared\MerantODBC取得,我们把他们复制到应用程序目录或系统目录中。

      5、Adaptive Server Anywhere运行系统文件

    DBODBC7.DLL,DBBACKUP.EXE,DBCON7.DLL,DBISQLC.EXE,DBLGEN7.DLL,DBLIB7.DLL,DBODTR7.DLL,_
    DBTOOL7.DLL,DBUNLOAD.EXE,DBVALID.EXE,DBENG7.EXE,DBCTRS7.DLL,DBSERV7.DLL,DBWTSP7.DLL。

      以上文件可以在C:\Program Files\Sybase\SQL Anywhere 7\win32取得,我们把他们复制到应用程序目录或系统目录中。

      6、OLE系统文件

      如果应用程序中使用了OLE控件,那么终端用户的机器上应该有OLE系统文件,它们是:
    COMPOBJ.DLL,OLE2NLS.DLL,CTL3DV2.DLL,OLE2PROX.DLL,OLE2.DLL,STORAGE.DLL,OLE2CONV.DLL,_
    TYPELIB.DLL,OLE2DISP.DLL,TDOLE.TLB

      若它们不存在的话,我们把他们复制到应用程序目录或系统目录中。

      以上所列的所有支持文件不一定全部要把他们复制到应用程序目录或系统目录中,具体可根据情况灵活决定。在发布应用程序之前,为确定都需要包含哪些动态链接库,一种比较可行又可靠的方法是:

      (1)将生成的应用程序拷贝到另一台未装过PowerBuilder的计算机上并运行它。

      (2)找出应用程序提示的因找不到而不能运行的那个动态库。

      (3)从开发该应用程序的机器上将相应的动态库文件拷贝过来。

      (4)重复(2)(3)两步,直到所有动态链接库都包含进来。

      安装程序的制作

      在Windows平台上开发的应用程序不能象在DOS环境下经过简单的COPY就可发布和安装。因此,制作一个安装程序(Setup)就成为Windows平合应用程序发布的必不可少的重要一步。

      1、Setup的基本功能

      Setu
  • 上一篇:不用安装客户端连接sql server 2000
    下一篇:经过编译生成的pb程序需要的运行环境