[返回]
中国计算机报2000年第31期

安装程序如何自动注册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等大公司的产品需要的共享文件都放在类似的路径下。
pb149_1.jpg (18257 字节)
  然后,在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数据源的注册了。

  注意:安装程序必须将上面所需要的文件一起打包安装。