******************************************************
*  用Install Shield制作PB8程序的安装盘(WIN2000) *
******************************************************
一、安装盘需要打包的文件
    1. PB运行环境动态连接库
      a. PB运行环境
        pbvm80.dll PB虚拟机,一定要有
        libjcc.dll
        pbdwe80.dll 对数据窗口的支持
      b. 必要的Microsoft接口(\winnt\system32目录下)
        Msvcrt.dll
        Msvcrt40.dll
        Olepro32.dll
      c.好象还需要以下DLL
        dblgen7.dll
        dbcon7.dll
        dbserv7.dll
        dbctrs7.dll
    2. PB8与数据库客户端的专用接口或ODBC接口
        pbodb80.dll
        pbodb80.ini pb ODBC 专用接口 (sql anywhere必须装)
    3. PB应用程序和相应的PBD或DLL
        就是应用程序编译后生成的EXE和PBD (DLL)。
    4. sql anywhere7相应的文件
       
        dblib7.dll
        dbodbc7.dll
        dbodtr7.dll
        dbcoen7.hlp
        这5个文件保证已经被创建的数据库可以正常运行
    5. sql anywhere7 DB文件
        只要包含*.db就可以了,*.log不要(加上*.log有时会出问题)
    6. 果安装应用程序的机器上没有装ODBC那么需要装这些文件:
        Ds16gt.dll
        Ds32gt.dll
        Odbc16gt.dll
        Odbc32.dll
        Odbc32gt.dll
       
        Odbccp32.cpl
        Odbccp32.dll
        Odbccr32.dll
        Odbcinstt
        Odbcinst.hlp
        Odbcint.dll
        Odbctrac.dll
       
       你可以把这些文件复制到任何一个包含在Path中的目录里,
        所有需要的动态连接库和文件路径都加入path中,在制作
        安装程序时,应用程序和相应的动态连接库位于同一个目
        录里,ODBC driver和sql anywhere位于单独的目录里。
        尽量不要把所有文件混在一起,因为查起来不太方便。
二、 用installshield要完成的工作
    1. 定制安装界面
    2. 复制文件
    3. 编写更改注册表、程序组等的脚本
    4. 生成setup文件
 
************************************************
*    在程序中用代码动态配置ODBC              *
************************************************
一、原 理
  Windows中所有的ODBC数据源在系统注册表中都有记载,因此只要编写相应的代码
对注册表中的项目进行相应的修改即可。Windows中与ODBC相关的键,主要有下面几项:
  HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER 记录所有已
安装的ODBC驱动程序;
  HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI 记录各种ODBC驱动程序的相关信息;
  HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources 记录各种数据源的类型;
  HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 记录各种数据源的详细信息。
二、实现(PB8,WIN2000) 
  为防止重复配置ODBC,可以设置一个配置文件记录是否已经做过此步骤,也可以在注册表中查是否有
相应的键值存在,本文采用配置文件的方法
//动态配置ODBC
int test
int rc
rc=profileint("C:\ABC_LOT\SQL_AnyWhere\abclot.ini","start","first",1)  //rc=1是初次运行该系统,进行注册
if rc=1 then
    //设置ODBC Drivers
    test = RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers",&
            "Adaptive Server Anywhere8.0",RegString!,"Installed");
        if test <> 1 then
            messagebox("ERROR","不能设置ODBC Drivers")
        end if
    //设置ODBCINST.INI
    test =RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere8.0",&
            "",RegString!,"")
        if test <> 1 then
            messagebox("ERROR","不能设置ODBCINST.INI")
        end if
    test =RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere8.0",&
            "Driver",RegString!,"C:\ABC_LOT\SQL_AnyWhere\dbodbc8.dll")
        if test <> 1 then
            messagebox("ERROR","不能设置ODBCINST.INI-Driver")
        end if
    test =RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere8.0","Setup",&
            RegString!,"C:\ABC_LOT\SQL_AnyWhere\dbodbc8.dll")
        if test <> 1 then
            messagebox("ERROR","不能设置ODBCINST.INI-Setup")
        end if
    //设置ODBC Data Sourses
    test =RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources","AbcLotdb",&
            RegString!,"Adaptive Server Anywhere8.0")
8gen2发布会
        if test <> 1 then
            messagebox("ERROR","不能设置ODBC Data Sourses")
        end if
    //将数据源名称"AbcLotdb"注册到"HKEY_CURRENT_USER\software\odbc\odbc.ini\odbc data sources"下
    test = registryset("HKEY_CURRENT_USER\software\odbc\odbc.ini\odbc data sources","AbcLotdb",&
            regstring!,"Adaptive Server Anywhere 8.0")
        if test <> 1 then
            messagebox("ERROR","不能设置current_user odbc data sources")
        end if
           
    /*"HKEY_CURRENT_USER\software\odbc\odbc.ini"下新增以该数据源名称为键名的子键*/
      test = registryset("HKEY_CURRENT_USER\software\odbc\odbc.ini\AbcLotdb","",&
            regstring!,"")
        if test <> 1 then
            messagebox("ERROR","不能设置HKEY_CURRENT_USER\software\odbc\odbc.ini\AbcLotdb")
        end if
    //创建连接到数据源所需的参数
    test = registryset("HKEY_CURRENT_USER\software\odbc\odbc.ini\AbcLotdb","AutoStop",&
            regstring!,"yes")
        if test <> 1 then
            messagebox("ERROR","不能设置AutoStop")
        end if
 
  test = registryset("HKEY_CURRENT_USER\software\odbc\odbc.ini\AbcLotdb","DatabaseFile",&
                regstring!,"C:\ABC_LOT\abclot.db")
        if test <> 1 then
            messagebox("ERROR","不能设置DatabaseFile")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。