- ·上一篇内容:PowerBuilder中实现数据窗口中记录颜色的隔行显示
- ·下一篇内容:在PB中制作特殊形状数据窗口和按钮
PB8.0应用程序编译发布技术研究
安装程序的制作
在Windows平台上开发的应用程序不能象在DOS环境下经过简单的COPY就可发布和安装。因此,制作一个安装程序(Setup)就成为Windows平合应用程序发布的必不可少的重要一步。
1、Setup的基本功能
Setup程序的唯一目的就是安装应用程序,应该由它来完成对安装过程的处理,Setup程序应具备以下基本功能:
(1)传送文件。将需要安装的应用程序及有关的支持文件传送到目标机器上,并处理传送过程中的错误。此乃Setup程序最基本的功能。
(2)询问终端用户有关必要的信息,如用户名、产品序列号、目标路径等,并响应用户输入。
(3)给用户以改变想法的机会,如改变安装路径、取消安装等。
(4)注册表访问。如设置应用程序查找路径键、创建应用程序信息键等。
(5)卸载功能,对安装的文件及对注册表的设置应有卸载登记功能,以便用户在取消安装或在不需要时顺利卸载应用程序并改回注册表。
(6)安装完毕应给用户以完成提示。
2、应用程序的安装规则
当把应用程序安装到机器上时,有许多规则应当遵从,其中大多数是常识性的。它们使用户的应用程序维护更加容易,而且较少产生由文件复制而引起的问题。
(l)应避免把任何文件拷贝到系统目录中,除非正在升级由外部的应用程序使用的常用文件(例如,ODBC或本机数据库驱动程序)。这有助于避免由于改变了这些区域的文件而使操作系统的性能降级。
(2)如果文件是一个仅在单个用户的应用程序之间共享的通用文件,就应在Program Files的子目录Common Files中建立一个入口。
(3)在 Windows中,应把用户自己的应用程序放在Program Flies下自己的目录中。
(4) 对于 Windows应把支持文件( .hlp、.dll等)分布在称为System用户自己的应用程序的一个子目录中。然后将它的位置注册在应用程序的HKEY_LOCALMACHINE\software入口处的AppPathS子键的注册表中。
(5)应使用注册表存储有关应用程序的所有必需信息,而不应该修改system.ini、win.ini或应用程序的INI文件。
(6)在操作系统的启动引擎中制作一个入口,提供对用户应用程序的访问。对于Windows,应把应用程序的一个快捷图标放在桌面或在开始菜单的程序文件夹中。
(7)用户放在系统目录中的任何文件都应注册于HKEY_LOCALMACHINE的sharedll子键中。
3、安装程序制作工具的选择
Installshield是InstallShield软件公司开发的著名的安装程序制作软件。Installshield提供了易于使用的向导和一个集成环境来帮助创建应用程序安装程序。但是InstallShield的使用比较复杂,InstallShield并不是zi you软件,而是一个有版权的商业化软件。绝大部分PowerBuilder 8.0书籍资料在谈及发布应用程序时极其简单地提示使用InstallShield制作安装程序。而介绍InstallShield使用的资料又非常少。因而常会碰到不少困难。
在制作中安装程序时比较常用的安装制作工具是CreateInstall 2000。它是一个共享软件,支持中文。能在www.Gentee.com下载到。没有注册的话会在制作好的安装盘运行时出现提示信息,但是功能是没有限制的。
另一个比InstallShield更加方便好用的安装制作工具是GP-Install。GP-Install是一个用Delphi编制的zi you软件。虽然是zi you软件,但不是说它的功能就比较少,或者不够强。正好相反,一个安装软件应该有的功能它一个不少,而且相当方便、实用。整个软件安装以后大约有2M,只是InstallShield的零头。InstallShield有的功能GP-Install基本都有,生成的安装程序界面也非常相似,但GP-Install更加让人感到亲切。GP-Install还有一个最大的特点就是允许生成带有多国语言的安装程序,在一个安装程序中就包含了多种国家的语言,并且你在安装时选择了什么语言,在反安装(卸载)时也会显示出什么语言。这对于希望把自己的程序向其他国家、地区推广的程序员来说是非常有用处的。GP-Install主页:http://www.qsc.co.uk,你可以在那里下载一个最新的版本,目前最新版本是5.0.2.57。
其它还有一些比较常用的可用来制作安装程序的软件有Setup Factory 等。
4、添加注册表信息
这是最关键的!涉及到ODBC的安装和数据源的配置。千万不能搞错,否则前功尽弃。
添加注册表信息的方法有两种:
(1) 直接添加,主要见于手工添加数据源或创建安装程序时。一般只须对下列项进行设置即可:
根键 子键 值名称 值
HKEY_CURRENT_USER Software\ODBC\ODBC.INI\demo(替换成你自己的数据源名称) AutoStop Yes
HKEY_CURRENT_USER 同上 DatabaseName Demo(替换成你自己的数据库名称)
HKEY_CURRENT_USER 同上 DatabaseFile demo.db(替换成你自己的数据库文件)
HKEY_CURRENT_USER 同上 Driver C:\Program Files\Sybase\SQL Anywhere 7\win32\dbodbc7.dll
HKEY_CURRENT_USER 同上 PWD Sql
HKEY_CURRENT_USER 同上 UID Dba
有时还须对下列项进行设置:
根键 子键 值名称 值
HKEY_CURRENT_USER Software\ODBC\ODBC.INI\demo(替换成你自己的数据源名称) Description 我的数据库(替换成你对自己数据库的描述,可以是中文)
HKEY_CURRENT_USER 同上 EngineName 我的数据库(替换成自己的数据引擎描述,可以是中文)
HKEY_CURRENT_USER 同上 Start C:\Program Files\Sybase\SQL Anywhere 7\win32\dbeng7.exe -c 8m,0
HKEY_LOCAL_MACHINE software\ODBC\ODBC Drivers Adaptive Server Anywhere 7.0 Installed
HKEY_LOCAL_MACHINE software\ODBC\Adaptive Server Anywhere 7.0 Driver C:\Program Files\Sybase\SQL Anywhere 7\win32\dbodbc7.dll
HKEY_LOCAL_MACHINE software\ODBC\Adaptive Server Anywhere 7.0 Setup C:\Program Files\Sybase\SQL Anywhere 7\win32\dbodbc7.dll
HKEY_CURRENT_USER software\ODBC\ODBC.INI\ODBC Data Sources 你自己的数据源名称如:demo Adaptive Server Anywhere 7.0
HKEY_LOCAL_MACHINE software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe(替换成自己的可执行文件名) Path C:\Program Files\sybase\shared\PowerBuilder;
c:\program files\sybase\SQL Anywhere 7\win32\;C:\Program Files\Sybase\Shared\MerantODBC
HKEY_LOCAL_MACHINE software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe(替换成自己的可执行文? Default MyApp.exe(替换成自己的可执行文件名)
以上各项为注册可执行文件和搜索路径。你也可以改变为另外的路径。具体情况在制作安装程序时灵活决定。
(2) 在PowerBuilder中用程序来动态添加ODBC数据源,主要是利用 PowerBuilder对注册表操作函数 RegistrySet(),再就是利用 PowerBuilder的ProfileString()函数和SetProfileString()函数读取和设置INI配置文件中预先定义好的参数。
RegistrySet( Key,Valuename,Valuetype,Value)
功能:在PowerBuilder程序中设置注册表中的信息。
Key表示主键; Valuename表示键值名; Valuetype表示键值类型;Value表示键值。
Profilestring(Filename,Section,Key,Value)
功能:在PowerBuilde程序中读取INI配置文件中的信息。
Filename表示文件名;Section表示段名;Key表示关键字;Value表示关键字值。
SetProfileString(Filename,Section,Key,Value)
功能:在PowerBuilde程序中设置INI配置文件中的信息。
Filename表示文件名;Section表示段名;Key表示关键字;Value表示关键字值。
至此,ODBC和数据源就配置好了。 对不同的数据库管理系统而言,上面的方法和语句会有所不同,但用户可用以下方法作为用程序添加ODBC数据源的依据:①在控制面板中打开ODBC数据源管理器,手动添加一数据源。②运行Regedit,打开注册表编辑器,找到刚才添加的数据源,记下其各键值的值。③在安装程序中或在PowerBuilder程序中用 RegistSet()函数把各键值的值写入注册表。当然,某些键值肯定会不同,比如数据库的具体路径等。
5、数据库文件(.db)的移动处理
在PowerBuilder 8.0中,SQL anywhere 数据库由后缀分别为.db和.log两个文件组成,其中.db的文件是用来存放数据库信息(包括表结构、视图、数据等)。而.log文件是个日志文件,用来记录用户每一次对数据库有影响的操作,例如创建或删除表、视图、触发器等对象,插入、删除、修改表中的数据等。当我们建立一个SQL anywhere 数据库时,除生成一个库文件(.db)外,还默认建立相应的.log文件。
移动SQL anywhere 数据库时首先将.db文件和.log文件一同复制,配置ODBC, 再在PowerBuilder中设置Profile即可连通。但日志文件(.log)经常会带来一些麻烦,使数据库不能方便地移动到别的机器上使用。因为如果SQL anywhere在创建数据库的时候把日志文件的路径信息存放到了数据库中,那么你把数据库拷贝到另外一台机子上时,如果目录不一样,则数据库就连不上了。
一般的解决方法是:在终端用户机器上建立一个对应的目录。即如果在建立该库时的.log文件路径为:H:\Pb8.0\share\myapp.log,则在终端用户机器上先建立一个盘号为H:的虚拟盘,再建立相应的目录,将myapp.log拷贝到该目录中(也可不拷,则重新建立.log日志文件),即可打开并调用数据库了。另一种解决办法是:重新注册.log文件,在DOS模式下进入SQL anywhere 的Win32目录, 运行DBLOG -T X1:\PATH1\XXX.LOG X2:\PATH2\XXX.DB。其中X1:\PATH1\XXX.LOG是生成的新.log文件要放的路径和名称。X2:\PATH2\XXX.DB是你现在应用程序要使用的.db文件。注意不要搞错了。
一般情况下,若不是要求太高,可省略掉.log文件,即在建库时不要附带.log文件,这样库文件移动起来也就方便一些。
突然断电或不正常关机或你不小心操作都有可能破坏SQLAnywhere的数据,由此造成很大的损失,如果只损坏了.db文件而.log还正常,则可以恢复被破坏的数据库的的大部分数据,只要把.log文件的内容转换成一条条的SQL语句,然后再建一个空的数据库,再执行这些SQL语句,则恢复数据的问题就解决了。Sybase公司提供了几个实用程序来完成以上功能。
现假设数据库系统文件分别名为myapp.db和myapp.log。如果myapp.db已被破坏。现在创建一个新的数据库,假设文件分别名为new.db和new.log。
用Sybase提供的dbtranw.exe,db32w.exe,rtsqlw.exe等实用程序来完成恢复工作,步骤如下:
1.dbtranw -r-k-y myapp.log db.sql // 把.log文件的内容转换成的SQL语句
2.attrib -r myapp.db // 修改只读文件myapp.db的属性为可写
3.attrib-r myapp.log // 修改只读文件myapp.log的属性为可写
4.copy new.db myapp.db // 用新的空库文件覆盖被破坏的旧库文件
5.copy new.log myapp.log // 用新的日志文件覆盖旧的日志文件
6.db32w.exe -d myapp.db // 启动数据库SQLAnywhere
7.rtsqlw-q-c "userid=dba;password=sql " read db.sql // 执行从.log文件中倒出来的SQL语句
其中第一步的功能是把旧的日志文件转换成SQL语句,并放在一个名为db.sql的文件中,特别注意它只能在第五步之前操作,否则日志文件会被new.log所覆盖,而导致无法恢复数据。最后一步的功能是从文件db.sql中读取SQL语句并执行,假设数据库的用户名为dba,而口令为sql。有关各个ming令及参数据的更详细的用法可以查看相应的帮助。注意:.log文件不能随便删除,否则恢复的数据就不完整。
结束语
本文就基于Windows平台的的PowerBuilder 8.0应用程序编译发布的关键问题进行了分析,并给出了详细的解决方法,主要包括开发PowerBuilder 8.0应用程序时,执行文件的建立、资源文件的创建、安装程序的建立及添加数据源和SQL anywhere 数据库移动处理等问题。该方法并不限于Powerbuilder,对其它开发工具同样有借鉴意义。所论技术已在广西师大计算机系研究生综合管理系统MPS开发中得到验证。同时,该技术已应用于多个管理信息系统中,收到了良好的效果。
翔宇亭IT乐园提醒您:本文来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。(www.biye5u.com)