InstallShield使用——几个技术问题介绍

本文详细介绍了如何使用InstallShield进行数据库设置,包括命令行附加数据库和SQL Script创建方法。此外,还讲解了如何通过InstallScript调用动态运行库中的函数以及创建自定义窗体,以实现更复杂的安装程序功能。
摘要由CSDN通过智能技术生成

InstallShield使用——几个技术问题介绍

1         几个技术问题介绍

1.1       数据库设置

在安装程序中设置数据库,有两种方法:一种采用命令行附加数据库文件,一种是通过SQL Script脚本创建数据库,对于编写SQL Script过于复杂,或创建数据库时间过长时建议采用第一种方法。

1.1.1     命令行附加数据库

1.       将数据库文件(a_data.mdfa_log.ldf)插入Support Files中;

2.       定义变量:

STRING psvSQLsvr, psvSQLusr, psvSQLpwd;

BOOL bvWindowsLogin;

3.       定义CreateDataBase函数:

prototype CreateDataBase(STRING,STRING,STRING);

4.       编写CreateDataBase函数:

function CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd)

     STRING szWaitTxt,szdatabase,path,path3;

begin   

     path=TARGETDIR^"Data""a_data.MDF";

     path3=TARGETDIR^"Data""a_log.LDF";

     szWaitTxt=" 正在创建数据库....";

     SdShowMsg (szWaitTxt, TRUE);

     Delay(3);

     CopyFile(SUPPORTDIR^"a_data.MDF",path);

     CopyFile(SUPPORTDIR^"a_log.LDF",path3);

     szdatabase = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q ""exec sp_attach_db N'a' , N'"+path+"',N'"+path3+"'""";

     if (LaunchAppAndWait("osql.exe", szdatabase,WAIT)<0) then;

         MessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000."n如仍无法解决,请联系系统供应商!",SEVERE);

         SdShowMsg (szWaitTxt, FALSE);

         return -1;

     endif;    

end;       

5.       获取数据库的登录信息,如果没有创建数据库的脚本,安装程序不会弹出SQL登录验证界面,需要编写代码:

Prototype number SQLLogin(); //定义登录函数

function SQLLogin ()

     number nResult, nSize;

     STRING sMessage, sTemp;

begin

     Dlg_Sql:

SQLRTInitialize2 ();              

     nResult = SQLServerSelectLogin(psvSQLsvr, psvSQLusr, psvSQLpwd, bvWindowsLogin );  

     if (nResult = BACK) return BACK;  

     nSize=MAX_PATH;

     MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_STATUS", sTemp, nSize );

     if(sTemp!="0") then

         nSize = _MAX_PATH;

         MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_STATUS_ERROR", sMessage, nSize );

         if( nSize = 0 ) then

              sMessage = SdLoadString( IDS_IFX_SQL_ERROR_LOGIN_FAILED );

         endif;

         MessageBox( sMessage, MB_OK );    

         goto Dlg_Sql;

     endif;

     return 0;

end;

6.      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值