STRING szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 ;
NUMBER bvOpt1 , bvOpt2 ;
NUMBER bShowUpdateServiceDlg ;
STRING szWaitText ;
STRING szServiceName ;
NUMBER svServiceState ;
STRING szMsde2000 , szCmdLine , szStartServiceArgs ;
begin
// 如果安装程序以“维护”模式启动
if (MAINTENANCE) then
goto EndProcess ;
endif ;
// 检查系统是否安装了 MSDE 2000 SP4
szWaitText = " 正在检查系统是否安装了 MSDE2000 SP4 ……. " ;
SdShowMsg( szWaitText , TRUE) ;
szServiceName = " MSSQLSERVER " ;
if(ServiceGetServiceState(szServiceName , svServiceState) < ISERR_SUCCESS) then
// 没有安装 MSDE,转安装处理
goto InstallMSDE ;
endif ;
goto StartMSDE ;
InstallMSDE: // 安装数据库服务
szWaitText = " 正在安装 MSDE2000 SP4。这个过程需要几分钟,请稍等 " ;
SdShowMsg(szWaitText , TRUE) ;
szMsde2000 = SRCDIR ^ " MSDE " ^ " setup.exe " ;
// 将 MSDE 2000 SP4 安装到系统 Program File 目录下
szCmdLine = " TARGETDIR= "" + PROGRAMFILES + " " /q " ;
if(LaunchAppAndWait(szMsde2000 , szCmdLine , LAAW_OPTION_WAIT|LAAW_OPTION_MAXIMIZED) < 0 ) then
MessageBox ( " 安装 MSDE2000 SP4 失败,请联系系统管理员! " , SEVERE) ;
goto EndProcess ;
endif ;
StartMSDE: // 启动 MSDE2000 服务
szWaitText = " 正在启动 MSDE2000 SP4 ……. " ;
SdShowMsg( szWaitText , TRUE) ;
// 安装了 MSDE 2000 , 试着启动服务
szStartServiceArgs = "" ;
if(svServiceState ! = SERVICE_RUNNING) then
if (ServiceStartService (szServiceName , szStartServiceArgs) < ISERR_SUCCESS ) then
MessageBox ( " 启动服务 " + szServiceName + " 出错。 " , SEVERE) ;
goto EndProcess ;
endif ;
endif ;
// 加载用户数据库
szWaitText = " 正在创建所需数据库. " ;
SdShowMsg(szWaitText , TRUE) ;
Delay( 2 ) ;
// 先试着分离先前已经加载的数据库
szCmdLine = " -E -Q " exec exec sp_detach_db GEChargeLicence "" ;
if(LaunchAppAndWait( " osql.exe " , szCmdLine , LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN) < 0 ) then
MessageBox ( " 分离原来的数据库失败!请确认系统中已安装 MSDE 2000 SP4 并且服务已启动。如问题仍无法解决,请与联系统管理员联系! " , SEVERE) ;
endif ;
// 将数据文件复制到程序安装目录
CreateDir( TARGETDIR ^ " Data " ) ;
CopyFile( SRCDIR ^ " Data " ^ " GEChargeLicence.mdf " , TARGETDIR ^ " Data " ^ " GEChargeLicence.mdf " ) ;
CopyFile( SRCDIR ^ " Data " ^ " GEChargeLicence.ldf " , TARGETDIR ^ " Data " ^ " GEChargeLicence.ldf " ) ;
// 附加数据库
szCmdLine = " -E -Q " exec sp_attach_db 'GEChargeLicence' , ' " + TARGETDIR ^ " Data " ^ " GEChargeLicence.mdf' , ' " + TARGETDIR ^ " Data " ^ " GEChargeLicence.ldf' "" ;
if (LaunchAppAndWait( " osql.exe " , szCmdLine , LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN) < 0 ) then
MessageBox ( " 数据库创建失败!请确认系统中已安装 MSDE 2000 SP4 并且服务已启动。如问题仍无法解决,请与联系统管理员联系! " , SEVERE) ;
endif ;
SdShowMsg(szWaitText , FALSE) ;
EndProcess:
// 以下代码是系统自动插入的
ShowObjWizardPages(NEXT) ;
szTitle = "" ;
szMsg1 = "" ;
szMsg2 = "" ;
szOpt1 = "" ;
szOpt2 = "" ;
bvOpt1 = FALSE ;
bvOpt2 = FALSE ;
// Set this to true if you have the update service enabled , and if you want to check for updates.
// Note: the ISUS Starter Edition does not support checking for updates programatically. So ,
// only set this to true if you have at least the ISUS Professional Edition.
bShowUpdateServiceDlg = FALSE ;
//{{IS_SCRIPT_TAG(Dlg_SdDinishEx)
if ( BATCH_INSTALL ) then
SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 ) ;
else
// If the update service is enabled , show finish dialog that includes
// update check option.
if( bShowUpdateServiceDlg && ( ENABLED_ISERVICES & SERVICE_ISUPDATE ) ) then
if( SdFinishUpdateEx( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , TRUE ) ) then
// Don't check for updates in silent mode.
if( MODE ! = SILENTMODE ) then
UpdateServiceCheckForUpdates( "" , FALSE ) ;
endif ;
endif ;
else
SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bvOpt1 , bvOpt2 ) ;
endif ;
endif ;
//}}IS_SCRIPT_TAG(Dlg_SdDinishEx)
end ;
按F7 制作安装影像。生成的安装影像文件位于 [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1
5、向影像中添加 MSDE 2000 SP4 的安装文件。
请先参照 MSDE 2000 ReadmeSql2k32desksp4.htm 中《4.1 再分发 MSDE 2000 SP4》的说明。
打开文件夹 [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1, 然后创建两个子文件 MSDE 和 Data 。
[盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1\MSDE 用于存放 MSDE 2000 SP4 安装文件;
[盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1\Data 用于存放你要安装的数据库文件;
说明:MSDE 2000 ReadmeSql2k32desksp4.htm 中《4.1 再分发 MSDE 2000 SP4》中的说明并太确切。实际上,为了让 MSDE 2000 SP4 的Setup.exe 正确运行,还需要将所下载并解压 MSDE 2000 SP4 中 *.dll 和 *.rll 复制到 [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1\MSDE 中。
注意:这个检测脚本好象不能用在WebProject中 如果可以,大家谁告诉我怎么办 谢谢