`
jayjayjays
  • 浏览: 215409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

检测SQL的InstallShield脚本 通用于最新的 12

阅读更多
 
//全局变量
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;
分享到:
评论

相关推荐

    Installshield 脚本:检查安装环境

    ### Installshield 脚本:检查安装环境 在软件开发领域,确保软件可以在目标系统上顺利运行至关重要。本文将深入探讨一个具体的安装脚本案例——使用Installshield进行环境检查,特别是针对.NET框架的存在与否。 #...

    Installshield 脚本:安装脚本集合

    Installshield 脚本:CheckRequirements.txt 附加数据库.txt 禁用uac.txt 输入用户名密码.txt 卸载杀死进程.txt IISConfig.rul(配置IIS的脚本) Asp.net Version.txt(获取asp.net的版本这个难找哦) IIS安装.rar...

    打包软件之InstallShield脚本集锦

    6. **依赖管理**:脚本可以帮助检测并处理系统依赖,例如检查已安装的库、框架或驱动,确保软件的运行环境。 7. **错误处理和日志记录**:通过脚本,你可以设置错误处理机制,以便在安装出错时提供有用的反馈。同时...

    InstallShield脚本语言的编写参考

    InstallShield脚本语言是一种基于C语言的编程语法,主要用于创建安装和卸载应用程序的脚本。以下是关于InstallShield脚本语言的详细知识点: 1. 变量类型: - BOOL:布尔类型,值为TRUE(1)或FALSE(0)。 - ...

    Installshield 脚本代码:卸载时杀掉进程

    ### Installshield 脚本代码:卸载时杀掉进程 在软件开发和部署过程中,安装程序(如Installshield)的脚本编写是一项重要的技能。本文将深入探讨一个具体的脚本示例,该脚本旨在在卸载软件时终止特定进程。通过...

    INSTALLSHIELD脚本.pdf

    【INSTALLSHIELD脚本.pdf】文件中的内容主要涉及两种技术:InstallShield脚本和系统检测。InstallShield是一款流行的应用程序安装制作工具,它允许开发者创建Windows安装程序。在这个脚本中,作者展示了如何使用...

    InstallShield脚本

    InstallShield脚本语言类似于C语言,使用InstallShield的向导或模板可以生成基本的脚本程序框架,然后可以根据需要进行修改和添加。 一、变量 InstallShield脚本中有多种变量类型,包括: * BOOL:布尔型值,为 ...

    InstallShield脚本示例.rar_gis_installshield

    【InstallShield脚本示例.rar_gis_installshield】是一个与GIS(地理信息系统)相关的InstallShield安装脚本资源包。InstallShield是一款广泛使用的软件安装和部署工具,它允许开发者创建交互式的Windows安装程序,...

    InstallShield教程+脚本API教程+经验

    InstallShield是一款广泛应用于软件安装和部署的工具,它允许开发者创建专业的安装程序,为用户提供顺畅的软件安装体验。本教程将深入探讨InstallShield的核心概念、功能以及如何利用其脚本API进行高级定制。 首先...

    installshield脚本介绍

    InstallShield脚本是一种基于C语言风格的编程语言,主要用于创建安装和配置软件的脚本程序。以下是关于InstallShield脚本的详细知识: 1. **变量类型**: - `BOOL`:布尔类型,值为TRUE(1)或FALSE(0)。 - `...

    InstallShield脚本语言的编写

    InstallShield脚本语言是一种类似于C语言的编程语法,它被用于创建安装程序,主要用于软件部署和打包。这个语言提供了丰富的数据类型、操作符以及函数,使得开发者能够自定义安装过程中的各种行为。 1. **数据类型*...

    InstallShield2008脚本安装制作方法Setup

    ### InstallShield2008脚本安装制作方法详解 #### 核心概念解析 InstallShield是业界广泛使用的软件包制作工具之一,它提供了一种高效、便捷的方式来创建专业的Windows安装程序。在各种版本中,InstallShield2008以...

    Installshield脚本:禁用UAC

    ### Installshield脚本:禁用UAC #### 知识点概述 在现代操作系统中,用户账户控制(User Account Control,简称UAC)是一项重要的安全功能,它可以在潜在的恶意程序试图对系统进行更改时提醒用户,并要求管理员...

    installshield辅助小程序_部署Mysql数据库

    - 接着,集成"db.sql"脚本:在安装过程中,可以通过InstallShield的定制动作来执行这个脚本。这可能涉及到创建一个预安装或后安装脚本,调用MySQL命令行客户端(如`mysql.exe`),并传递数据库连接信息和SQL脚本...

    Inno Setup执行SQL脚本的方法.zip_inno setup_执行sql_脚本

    比如对于在安装过程中连接数据库并执行SQL脚本这样的需求,使用InstallShield应该会简单地多,而Inno却不支持直接操作数据库,并且相关的资料说明少之又少,还不如NSIS丰富,以至于我踏破铁鞋无觅处,最终却在NSIS的...

    installshield12离线安装

    描述中提到的"installshield12离线安装时所必须的补丁"是指在进行离线安装时,需要确保包含所有最新的补丁和更新。这些补丁可能包括安全性修复、功能增强或兼容性改进,以确保InstallShield 12在安装时是最新且稳定...

    Installshield6.22安装脚本文件样例

    ### Installshield6.22安装脚本文件样例解析 #### 概述 在软件部署过程中,使用安装脚本可以极大地提升安装效率并确保安装的一致性和稳定性。本篇文章将详细解析一个关于`Installshield6.22`的安装脚本文件样例,...

    InstallShield 12 中文教程

    附带的文档《附]Installshield入门指南.doc》和《Installshield12应用教程.doc》将深入讲解这些步骤,并提供实际操作的指导。学习这些文档可以帮助你更有效地使用InstallShield 12,理解如何将J2EE应用与数据库集成...

Global site tag (gtag.js) - Google Analytics