安装程序如何自动注册ODBC数据源
数据库应用系统不同于一般的应用程序,它的分发过程中应该直接实现ODBC数据源的注册与安装,所以它始终是一些初学者经常询问的问题。本文就以一个使用PB6.5开发的、以SQL
Any Where 5.5为数据库的应用为例,介绍如何使用InstallShield 6.0制作一个可以完成ODBC数据源注册的安装程序。
ODBC数据源的注册可以通过修改注册表来实现,从InstallShield 5.1以后版本都提供了注册表注册功能,你可以方便地在安装过程中实现注册表的添加与修改。具体方法如下:
首先假设qms.db、qms.log是系统使用的数据库文件(SQL Any Where 5.0),设置安装到〈TARGETDIR〉目录,也就是用户选择安装的路径,在InstallShied中用〈
TARGETDIR 〉表示。
启动数据库引擎所需的文件是:wtr50t.dll、wod50t.dll、wl50ent.dll、dbl50t.dll、dbeng50.exe等,设置安装到〈COMMONFILES〉\My
Shared目录下,也就是Program Files\Common Files\My Shared,这种文件存放位置比较符合规范,大家可以注意到Insprise、Microsoft等大公司的产品需要的共享文件都放在类似的路径下。

然后,在InstallShield中切换到“Resources"页,这里可以设置定量表、注册表、快捷方式等,在“Registry
Entries”上单击鼠标右键,选中“New Registry Set”,给它取个名字。然后就可以像在注册表中添加一样添加内容了,如下图所示。如果你使用的是5.1版本,就必须一次写到底,例如创建“HKEY—LOCAL—MACHINE\Software\ODBC\ODBC.INI\Qms"主键时就必须在“HKEY—LOCAL—MACHINE"下添加“Software\ODBC\ODBC.INI\Qms",然后在它下面添加字符串值、二进制值或者DWORD值。
类似下面的方法添加字符串值:
//让系统知道已经安装了SQL Any Where 5.0
[HKEY—LOCAL—MACHINE\Software\ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0]
″Driver″=〈COMMONFILES〉\My Shared\WOD50T.DLL″
″Setup″=″〈COMMONFILES〉\My Shared\WOD50T.DLL″
//添加SQL Any Where 5.0的数据源
[HKEY—LOCAL—MACHINE\Software\ODBC\ODBC.INI\Qms]
//设置驱动,假设WOD50T.DLL、dbeng50.exe等文件安装到〈COMMONFILES〉\My
Shared目录下
″Driver″=″〈COMMONFILES〉\My Shared\WOD50T.DLL″
//缺省用户名,一般不能加上PASSWORD的具体值
″UID″=″DBA″
″Password″=″″
//你可以修改后面的参数,例如″-Q c512″等
″Start″=″〈COMMONFILES〉\My Shared\dbeng50.exe -Q″
″DatabaseFile″=″〈TARGETDIR〉\Qms.db″
//Qms就是需要生成的ODBC数据源名字,程序中是使用的DSN
″DatabaseName″=″Qms″
″AutoStop″=″yes″
//设置其他参数…
//指明Qms使用的是Sybase SQL Anywhere 5.0数据库
[HKEY—LOCAL—MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources]
″Qms″=″Sybase SQL Anywhere 5.0″
好了,这样就可以实现一个使用Sybase SQL Anywhere 5.0数据库的名为Qms的ODBC数据源的注册了。
注意:安装程序必须将上面所需要的文件一起打包安装。