//全局变量
STRING szSQLServiceName; //数据库服务器名
STRING szSQLServiceName1; //数据库服务器名(缓存)
STRING szSQLServiceFilePath; //数据库服务器执行文件路径
STRING szSQLServiceDataRootPath; //数据库服务器数据库根路径
STRING szSQLServiceFileRootPath; //数据库服务器文件根路径
STRING szStartServiceArgs; //启动参数总和
STRING szSQLServiceRunData0 ; //数据库服务器启动参数1
STRING szSQLServiceRunData1 ; //数据库服务器启动参数2
STRING szSQLServiceRunData2 ; //数据库服务器启动参数3
NUMBER szServiceState; //数据库服务启动状态 
//安装开始时检查
function OnBegin()
STRING szMsg;
STRING sKey,sKeyArg,sValue,sData;
STRING szKey;
NUMBER nType, nSize;
NUMBER nResult;
STRING szWaitTxt;
begin
if !MAINTENANCE then
SdShowMsg("正在检查软件运行环境...请稍候",TRUE);
Delay(1);
// 判断系统是否安装Microsoft SQL Server或MSDE
sKey = "Software/Microsoft/Microsoft SQL Server";
szMsg = "Micorsoft SQL Server 或 MSDE没有安装,请先安装Micorsoft SQL Server 或 MSDE.";
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
nResult = RegDBGetKeyValueEx ( sKey, "InstalledInstances", nType, sData, nSize );
if ( nResult < 0 )then
SdShowMsg("正在安装MSDE2000,请稍等...",TRUE);
Delay(1);
if(LaunchAppAndWait("msde/setup.exe", "",LAAW_OPTION_WAIT|LAAW_OPTION_MAXIMIZED)< 0) then
SdShowMsg("",FALSE);
MessageBox("安装MSDE2000失败,请手动执行安装光盘MSDE目录下的setup.exe安装MSDE2000引擎. 如仍无法解决,请联系系统供应商!",SEVERE);
abort;
endif;
endif;
//获取服务器名称
nResult=RegDBGetKeyValueEx( sKey, "InstalledInstances", nType, szSQLServiceName1, nSize );
if(nResult < 0) then
//MessageBox ("获取数据库服务器名称失败!",INFORMATION);
szSQLServiceName="MSSQL" ;
else
if(szSQLServiceName1="") then
szSQLServiceName="MSSQL";
elseif(szSQLServiceName1!="MSSQLSERVER") then
szSQLServiceName="MSSQL$"+szSQLServiceName1;
else
szSQLServiceName=szSQLServiceName1;
endif;
endif;
//获取数据库文件根路径
if(szSQLServiceName1!="MSSQLSERVER") then
sKey="Software/Microsoft/Microsoft SQL Server/"+szSQLServiceName1+"/Setup";
else
sKey="Software/Microsoft/"+szSQLServiceName1+"/MSSQLServer/Setup";
endif;
RegDBGetKeyValueEx( sKey, "SQLDataRoot", nType, szSQLServiceDataRootPath, nSize ); //数据库根路径
RegDBGetKeyValueEx( sKey, "SQLDataRoot", nType, szSQLServiceFileRootPath, nSize ); //文件根路径
//数据库启动文件路径
szSQLServiceFilePath=szSQLServiceFileRootPath+"/Binn/sqlservr.exe";
//获取数据库服务器启动参数
if(szSQLServiceName1!="MSSQLSERVER") then
sKeyArg="Software/Microsoft/Microsoft SQL Server/"+szSQLServiceName1+"/MSSQLServer/Parameters";
else
sKeyArg="Software/Microsoft/"+szSQLServiceName1+"/MSSQLServer/Parameters";
endif;
RegDBGetKeyValueEx( sKey, "SQLArg0", nType, szSQLServiceRunData0, nSize );
RegDBGetKeyValueEx( sKey, "SQLArg1", nType, szSQLServiceRunData1, nSize );
RegDBGetKeyValueEx( sKey, "SQLArg2", nType, szSQLServiceRunData2, nSize );
szStartServiceArgs=" -c "+ szSQLServiceRunData0 +" "+szSQLServiceRunData1+" "+szSQLServiceRunData2;
//检测数据库服务是否启动
if(ServiceGetServiceState(szSQLServiceName, szServiceState)< ISERR_SUCCESS) then
//加载
ServiceAddService (szSQLServiceName, szSQLServiceName, szSQLServiceName, szSQLServiceFilePath, TRUE,szStartServiceArgs);
endif;
//启动数据库服务
if (ServiceStartService(szSQLServiceName,"")< ISERR_SUCCESS ) then
SdShowMsg("",FALSE);
SetDialogTitle ( DLG_MSG_INFORMATION, "数据库服务启动出错" );
MessageBox("数据库服务"+szSQLServiceName+"启动错误!请手动开启数据库服务后再执行软件安装程序。如仍无法解决,请联系系统供应商!",INFORMATION);
abort;
endif;
endif;
end;
本文介绍了一段用于检查并自动安装 Microsoft SQL Server 或 MSDE 的安装脚本,包括检查系统是否已安装 SQL Server、获取数据库服务器名称、路径及启动参数等关键步骤。
4607

被折叠的 条评论
为什么被折叠?



