delphi+access
程序的打包用小颖
但是数据库要配置odbc
我怎么在安装程序的同时配置odbc呢?谁给我一份install shield的使用教材,感激不尽啊!!!
[email protected]

解决方案 »

  1.   

    转贴
    -------------------------------------------
    InstallShield应用中SetupRegistry()完整脚本
    作者:(暂缺)
    --------------------------------------------------------------------------------
       最近多数网友询问怎样在注册表中注册Access ODBC 及DBASE ODBC,下面版主将自己的InstallShield应用中一段SetupRegistry()完整脚本上载供大家参考,不足之处请高手指正! 
    下面是SetupRegistry()///////////////////////////////////////////////////////////////////////////////
    // //
    // Function: SetupRegistry //
    // //
    // Purpose: This function makes the registry entries for this setup. //
    // //
    ///////////////////////////////////////////////////////////////////////////////
    function SetupRegistry()
    STRING svDBprofile,svDB,szDriver,szSetup,svDBFile;
    STRING svAccess,svDBASE,svSourceDB;
    STRING svMStranslator,svMStransdriver;
    STRING szXbdagl;
    STRING szCommand, szCmdLine,svMsg;
    begin
    svMsg="正在更新注册表......";
    SdShowMsg(svMsg,TRUE);
    szXbdagl="SOFTWARE\\"+@COMPANY_NAME+"\\"+@PRODUCT_NAME+"\\"+@PRODUCT_VERSION;
    //MessageBox(szXbdagl,INFORMATION);
    RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);//注册ODBC有关内容
    if (ComponentIsItemSelected(MEDIA,"ODBC Driver") ) then
    svMStranslator="MS Code Page Translator";
    svMStransdriver=WINSYSDIR+"mscpxl32.dll";
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Core" , "" , REGDB_STRING , "" , -1 );RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svMStranslator , "Setup" , REGDB_STRING , svMStransdriver , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svMStranslator , "Translator" , REGDB_STRING , svMStransdriver , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Translators" , svMStranslator , REGDB_STRING , "Installed" , -1 );//不用改
    endif;//注册Access数据库
    if (ComponentIsItemSelected(MEDIA,"MS Access ODBC Driver") ) then
    svDBprofile="MS Access Database for gzgl";
    svDB="SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile;
    svDBFile = TARGETDIR+"\\dbms\\gzgl.mdb";//
    szDriver = WINSYSDIR+"odbcjt32.dll";
    svAccess="Microsoft Access Driver (*.mdb)";
    RegDBSetDefaultRoot ( HKEY_CURRENT_USER );
    RegDBSetKeyValueEx ( svDB , "DBQ" , REGDB_STRING , svDBFile , -1 );
    RegDBSetKeyValueEx ( svDB , "Driver" , REGDB_STRING , szDriver , -1 );
    RegDBSetKeyValueEx ( svDB , "FIL" , REGDB_STRING , "MS Access;" , -1 );
    //RegDBSetKeyValueEx ( svDB , "DriverId" , REGDB_STRING , "25" , -1 );
    RegDBSetKeyValueEx ( svDB , "DriverId" , REGDB_NUMBER , "25" , -1 );
    RegDBSetKeyValueEx ( svDB , "SafeTransactions" , REGDB_STRING , "0" , -1 );
    RegDBSetKeyValueEx ( svDB , "UID" , REGDB_STRING , "Admin" , -1 );
      

  2.   


    RegDBSetKeyValueEx ( svDB +"\\Engines\\Jet" , "ImplicitCommitSync" , REGDB_STRING , "" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Jet", "UserCommitSync" , REGDB_STRING , "Yes" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Jet", "MaxBufferSize" , REGDB_NUMBER , "512" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Jet" , "PageTimeout" , REGDB_NUMBER , "5" , -1);
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Jet", "Threads" , REGDB_NUMBER , "3" , -1 );RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources",svDBprofile, REGDB_STRING , svAccess, -1 );//注册Access ODBC Driver
    RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "APILevel" , REGDB_STRING , "1" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "ConnectFunctions" , REGDB_STRING , "YYN" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "Driver" , REGDB_STRING , szDriver , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "DriverODBCVer" , REGDB_STRING , "02.50" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "DSN" , REGDB_STRING , svDBprofile , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "FileExtns" , REGDB_STRING , "*.mdb" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "FileUsage" , REGDB_STRING , "2" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "Setup" , REGDB_STRING , szDriver , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "SQLLevel" , REGDB_STRING , "0" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "UID" , REGDB_STRING , "Admin" , -1 );//不用改
    //RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "UsageCount" , REGDB_NUMBER , 4 , -1 );//不用改RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers" , svAccess , REGDB_STRING , "Installed" , -1 );//不用改
    endif;
    //注册Hhctrl.OCX控件
    if (ComponentIsItemSelected(MEDIA,"CHM帮助支持文件") ) then
    szCommand = WINSYSDIR+APPLICATION_REG;
    szCmdLine = WINSYSDIR+CMD_LINE_OCX;
    if (LaunchApp(szCommand, szCmdLine) < 0) then
    MessageBox("注册Hhctrl.ocx失败!", SEVERE);
    endif;
    endif;
    //注册DBASE数据库
    if (ComponentIsItemSelected(MEDIA,"DBASE ODBC Driver") ) then
    svDBprofile="dBASE Files for gzgl";
    svDB="SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile;
    svSourceDB = "c:\\gzgl";//原库的路径
    szDriver = WINSYSDIR+"odbcjt32.dll";
    szSetup=WINSYSDIR+"ODDBSE32.DLL";
    svDBASE="Microsoft dBase Driver (*.dbf)";
    RegDBSetDefaultRoot ( HKEY_CURRENT_USER );
    RegDBSetKeyValueEx ( svDB , "DefaultDir" , REGDB_STRING , svSourceDB, -1 );
    RegDBSetKeyValueEx ( svDB , "Driver" , REGDB_STRING , szDriver , -1 );
    RegDBSetKeyValueEx ( svDB , "DriverId" , REGDB_NUMBER , "277" , -1 );
    RegDBSetKeyValueEx ( svDB , "FIL" , REGDB_STRING , "dBase III", -1 );
    RegDBSetKeyValueEx ( svDB , "SafeTransactions" , REGDB_NUMBER , "0", -1 );
    RegDBSetKeyValueEx ( svDB , "UID" , REGDB_STRING , "" , -1 );RegDBSetKeyValueEx ( svDB +"\\Engines\\Xbase" , "CollatingSequence" , REGDB_STRING , "ASCII" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Xbase" , "Deleted" , REGDB_BINARY , "00" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Xbase" , "ImplicitCommitSync" , REGDB_STRING , "" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Xbase" , "PageTimeout" , REGDB_NUMBER , "5" , -1);
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Xbase" , "Statistics" , REGDB_BINARY , "00" , -1);
    RegDBSetKeyValueEx ( svDB +"\\Engines\\Xbase", "Threads" , REGDB_NUMBER , "3" , -1 );
    RegDBSetKeyValueEx ( svDB +"\\Engines\\XBase", "UserCommitSync" , REGDB_STRING , "Yes" , -1 );RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources",svDBprofile, REGDB_STRING , svDBASE, -1 );//注册DBASE ODBC Driver
    RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "APILevel" , REGDB_STRING , "1" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "ConnectFunctions" , REGDB_STRING , "YYN" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "Driver" , REGDB_STRING , szDriver , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "DriverId" , REGDB_STRING , "533" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "DriverODBCVer" , REGDB_STRING , "02.50" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "DSN" , REGDB_STRING , svDBprofile , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "FileExtns" , REGDB_STRING , "*.dbf,*.ndx,*.mdx" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "FileUsage" , REGDB_STRING , "1" , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "Setup" , REGDB_STRING , szSetup , -1 );//不用改
    RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svDBASE , "SQLLevel" , REGDB_STRING , "0" , -1 );//不用改
    //RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\"+svAccess , "UsageCount" , REGDB_NUMBER , 4 , -1 );//不用改RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers" , svDBASE , REGDB_STRING , "Installed" , -1 );//不用改
    endif;
    SdShowMsg(svMsg,FALSE);
    return 0;
    end;
      

  3.   

    install shield太难了
    我刚用过一个打包软件
    yinginstall特别简单
    你到网上搜一下
    就可以找到的
    操作超级简单
    功能也比较全
      

  4.   

    你用wise 或者delphi自带的install express 都很好用的,在打包过程中会有bde,ado,ODbc连接选项,你只要将相应的驱动程序包选中就可以了; 先试试在说吧....