install shierld的脚本

//===========================================================================
//
//  File Name:    Setup.rul
//
//  Description:  Blank setup main script file
//
//  Comments:     Blank setup is an empty setup project. If you want to
//      create a new project via. step-by step instructions use the
//      Project Assistant.
//
//===========================================================================

// Included header files ----------------------------------------------------
#include "ifx.h"
#include "utils.rul"
// Note: In order to have your InstallScript function executed as a custom
// action by the Windows Installer, it must be prototyped as an
// entry-point function.

// The keyword export identifies MyFunction() as an entry-point function.
// The argument it accepts must be a handle to the Installer database.
   
/* export prototype MyFunction(HWND); */

//---------------------------------------------------------------------------
// The Installing event is sent just before the feature
// 组件\WebServer is installed.
//---------------------------------------------------------------------------

//===========================================================================

#define BES   TARGETDIR^"Server\\BES\\BEventServer.exe"   
#define BAS   TARGETDIR^"Server\\BAS\\BAppServer.exe"   
#define BNMS   TARGETDIR^"Server\\BNMS\\NetManagerServer.exe"

#define ACSDAG  '"'+TARGETDIR^"Server\\ACS_DAG\\ACSDAGServer.exe"+'" '+'"'+"-service"+ '"'       
#define CCSDAG  '"'+TARGETDIR^"Server\\CCS_DAG\\CCSDAGServer.exe"+'" '+'"'+"-service"+ '"'      
#define ECSDAG  '"'+TARGETDIR^"Server\\ECS_DAG\\ECSDAGServer.exe"+'" '+'"'+"-service"+ '"'   
#define SERVER_PORT_FILE SUPPORTDIR^"ServerPort.dll"//判断端口是否被占用的库

BOOL bRequire; //标记必备组件安装情况
BOOL bBES;  //标记事件服务器安装情况
BOOL bBAS;  //标记行业服务器安装情况
BOOL bVRM;  //标记VRM安装情况
BOOL bNVR;  //标记PCNVR安装情况
BOOL bVMS;  //标记电视墙服务器安装情况
BOOL bStream; //标记流媒体服务器安装情况
BOOL bManager; //标记网管服务器的安装情况
BOOL bKPS;  //标记键盘代理服务器的安装情况    
BOOL bPSS;  //标记图片管理服务器安装情况
BOOL bGENDAG; //标记通用服务器安装情况     
BOOL bACSDAG; //标记门禁服务器安装情况   
BOOL bCCSDAG; //标记消费服务器安装情况
BOOL bECSDAG; //标记消费服务器安装情况 
BOOL bMAG;  //标记移动网关安装情况   
BOOL bVAG;  //标记视频接入网关安装情况
BOOL bInstallPostgrel;    //标记是否要安装Postgrel数据库

string szCmsIp;//平台地址

string szPort;//服务器端口


string szSqlIp;//sql地址
string szSqlPort;//sql端口
string szSqlUser;//sql用户名
string szSqlPwd;//sql密码

NUMBER iIsOracleSql;//1为是oracle数据库

 prototype   ServerPort.Init();//库的初始化
 prototype   ServerPort.UnInit();//库的反初始化
 prototype   BOOL ServerPort.ServerPortTest(BYREF STRING, INT); //检测端口是否占用
 prototype   BOOL ServerPort.HikKillProcess(BYREF STRING);  //根据进程名称,杀进程
 
export prototype BOOL CheckPort(NUMBER, STRING);//判断指定端口是否被占用 
export prototype BOOL CheckServer(NUMBER, STRING);//判断指定端口是否被占用
export prototype BOOL KillProcess(STRING);//判断指定端口是否被占用 
//检查程序是否正在运行,如果正在运行将其关闭。
prototype CheckProgramRun(STRING);  

function   CheckProgramRun(szProgramName)//返回0,没有运行,1正在运行,
INT   nRet;  
HWND   nHwnd;  
begin  
 if(szProgramName   =   "")   then  
  nRet   =   0;  
  return   nRet;  
 endif;  
 //得到句柄  
 nHwnd   =   FindWindow("",szProgramName);  
 if(nHwnd   !=   NULL)   then        
  nRet   =   1;  
  //发消息关闭程序  
  //SendMessage(nHwnd,   WM_SYSCOMMAND,   SC_CLOSE,   0);  
 else  
  nRet   =   0;  
 endif;  
 return   nRet;  
end;  

prototype CheckOrtherSql(); 
function   CheckOrtherSql()// 1  选择为Oracle数据库
INT   nRet; 
begin  

     if (AskYesNo("数据库选择为Oracle数据库", YES) = YES) then
        //MessageBox("选择数据库为Oracle数据库", SEVERE);  
        nRet = 1;
     else
        //MessageBox("不选择数据库为Oracle数据库", SEVERE);      
  nRet = 0;
     endif;

 iIsOracleSql = nRet;
 return   nRet;  
 
end;  


prototype GetOrlcleAddr(); 
function   GetOrlcleAddr()
STRING szTitle, szMsg;
string  szField1, szField2;  
NUMBER nResult;
begin  
 //获取共享平台和一卡通应用平台的IP地址
  szTitle = "请输入OrlCle数据库配置的参数";
  szMsg  = "配置OrlCle数据库的IP地址和端口\r\n\r\nIP地址是自动获取的,请确认是否正确!";

     szField1 = "IP:";
     szField2 = "端口:";

     szSqlIp = szCmsIp;
     szSqlPort = "1521";


  // Get source and target folder names.
    nResult = SdShowDlgEdit2 (szTitle, szMsg, szField1, szField2, szSqlIp,  szSqlPort);
    return nResult;
end;  

prototype GetOrlcleUsrPwd(); 
function   GetOrlcleUsrPwd()
STRING szTitle, szMsg;
string  szField1, szField2;  
NUMBER nResult;
begin  
 //获取共享平台和一卡通应用平台的IP地址
  szTitle = "请输入OrlCle数据库的用户名密码";
  szMsg  = "配置OrlCle数据库的用户名和密码\r\n\r\n请确认是否正确!";

     szField1 = "用户名:";
     szField2 = "密码:";

     szSqlUser= "system";
     szSqlPwd = "manager";


  // Get source and target folder names.
    nResult = SdShowDlgEdit2 (szTitle, szMsg, szField1, szField2, szSqlUser,  szSqlPwd);
    return nResult;
end;  

export prototype CreateOrlcleCfgFile();
function CreateOrlcleCfgFile()

    STRING  szTitle, szMsg;
    NUMBER  nvFileHandle;

begin

 DeleteFile ( TARGETDIR^"WEB\\orlcleCfg.bat" );

    // Set the file mode to append.
    OpenFileMode (FILE_MODE_APPEND);

    // Create a new file and leave it open.
    if (CreateFile (nvFileHandle, TARGETDIR^"WEB\\", "orlcleCfg.bat") < 0) then
        // Report the error.
        MessageBox ("CreateFile orlcleCfg.bat failed.", SEVERE);
    else
        // Set the message to write to the file.
        szMsg = "This line was appended by an example InstallShield script.";
        // Append the message to the file.
        if (WriteLine(nvFileHandle, "@set sqlip=" + szSqlIp) < 0) then
            // Report the error.
            MessageBox ("WriteLine failed.", SEVERE);
        else
   WriteLine(nvFileHandle, "@set sqlport=" + szSqlPort);
   WriteLine(nvFileHandle, "@set sqluser=" + szSqlUser);
   WriteLine(nvFileHandle, "@set sqlpwd=" + szSqlPwd);   
  
            // Report success.
            /*szTitle = "CreateFile & WriteLine";
            szMsg   = "Successfully created and wrote to %s.";
            SprintfBox (INFORMATION, szTitle, szMsg, "orlcleCfg.bat");*/
        endif;
    endif;


    // Close the file.
    CloseFile (nvFileHandle);
end;

 

function BOOL CheckPort(nPort, szServer)
    STRING szLocalIP;
    BOOL   bExist;//端口是否被占用
    NUMBER nResult;
begin 
      
    szLocalIP = "127.0.0.1";
    //加载库
    nResult = UseDLL(SERVER_PORT_FILE);
    if(nResult < 0)then
        SprintfBox(SEVERE, "","无法自动检测地址:%s:%d 是否被占用\n请手动检查",szLocalIP, nPort);
    endif;
   
    Init();  //初始化动态库
   
    bExist = ServerPortTest(szLocalIP, nPort); //检查端口是否被占用
   
    if(bExist = TRUE) then
        SprintfBox(SEVERE, "", "端口%d已经被占用,%s服务无法正常运行\n请先卸载或停止相关程序!", nPort, szServer);
    endif;
   
    UnInit();  //卸载库
   
    if(UnUseDLL(SERVER_PORT_FILE) < 0) then
        MessageBox("动态库卸载失败", SEVERE);
    endif;  
   
    return bExist;
 end;
 
function BOOL KillProcess(processname)//杀进程
 NUMBER nResult;
begin
 UseDLL(SERVER_PORT_FILE);
    HikKillProcess(processname);
    UnUseDLL(SERVER_PORT_FILE);
end;

function BOOL CheckServer(nPort, szServer)
    BOOL   bExist;//端口是否被占用
 BOOL   bExit;
 string strDescribe;
begin
 bExist = TRUE;
 bExit = FALSE;
    repeat
  bExist = CheckPort(nPort, szServer);
  if(bExist = TRUE) then
   Sprintf(strDescribe, "检测到端口%d冲突,请选择:\n是(Y):重试\n否(N):跳过", nPort);
   if(AskYesNo(strDescribe, YES) = YES) then
       ;
   else
       Sprintf(strDescribe, "跳过操作后服务运行异常,需手动修改服务[%s]端口[%d]", szServer, nPort);
    MessageBox(strDescribe, SEVERE);
    bExit = TRUE;
   endif;
  else
   bExit = TRUE; 
  endif;
 until(bExit = TRUE);
 
 return bExist;
end;

//---------------------------------------------------------------------------
// The Installed event is sent after the feature 必备组件
// is installed.
//---------------------------------------------------------------------------
export prototype Feature_Installed();
function Feature_Installed()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin

 //获取系统时间
 GetSystemInfo(DATE, nTmp, strDate);
 GetSystemInfo(TIME, nTmp, strTime);
 //打印日志
 strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 开始安装必备组件" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
 LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       
 if(!bRequire)  then
  //SetStatusExStaticText("安装程序运行必备组件VC_x86Runtime.exe");
  //安装程序运行必备组件VC_x86Runtime.exe
  if ( LaunchAppAndWait(TARGETDIR ^ "WatchDog\\Microsoft Visual C++ 2008 SP1 Redistributable Package.exe", "/q",   WAIT) < 0) then
    SprintfBox(MB_OK, "VC运行库安装", "安装程序运行所必须的系统组件VC_x86Runtime失败,请手动安装!"); 
  endif;
   
  bRequire = TRUE;

 endif;
end;          

//---------------------------------------------------------------------------
// The UnInstalling event is sent just before the feature
// 必备组件 is uninstalled.
//---------------------------------------------------------------------------
export prototype Feature_UnInstalling();
function Feature_UnInstalling()
begin
 if(!bRequire)  then
  //SetStatusExStaticText("正在卸载windows VC X86 运行时库");
  //LaunchAppAndWait(TARGETDIR ^"WatchDog\\VC_x86Runtime.exe", "/qu",   WAIT);
  bRequire = TRUE;
 endif;
end;  
 
export prototype WebServer_Installing();
function WebServer_Installing()
string  strDescribe;
begin 
    //SetStatusExStaticText("正在安装WEB服务");
    //CheckServer(8081, "Tomcat"); //判断Tomcat的8081端口是否被占用
    //Sprintf(strDescribe, "检测tomcat端口[%d]", 8081);
 //MessageBox(strDescribe, SEVERE);
    //CheckServer(61618, "ActiveMQ"); //判断ActiveMQ的61618端口是否被占用
    //Sprintf(strDescribe, "检测ActiveMQ端口[%d]", 61618);
 //MessageBox(strDescribe, SEVERE);
end;

export prototype WebServer_UnInstalling();
function WebServer_UnInstalling()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin
       //卸载WebServer服务
  SetStatusExStaticText("正在卸载WEB服务");
  //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
        //打印日志
        strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 开始卸载tomcat服务器" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
     ServiceStopService("HikEMS") ;
   
        //卸载tomcat
        strcmdline = "cmd.exe /c cd \"" + TARGETDIR^"WEB\\tomcat\\bin\""  + " &&  \"" + TARGETDIR^"WEB\\tomcat\\bin\\UninstallService.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
        LaunchAppAndWait ("", strcmdline , LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 卸载tomcat服务器成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       

    //删除MQ服务
  ServiceStopService("ActiveMQ");
    
     strcmdline="cmd.exe /c cd \"" + TARGETDIR^"WEB\\apache activemq-5.10.0\\bin\"" + " && \"" + TARGETDIR^"WEB\\apache activemq-5.10.0\\bin\\win32\\UninstallService.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
     
     if LaunchAppAndWait ("", strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] MQ服务删除失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  else
          GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] MQ服务删除成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  endif;
      
 
  //删除数据
  strcmdline = "cmd.exe /c cd \"" + TARGETDIR^"WEB\""  + " && \"" + TARGETDIR^"WEB\\Oracle_Uninstall.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
  SetStatusExStaticText("正在删除数据");
  if LaunchAppAndWait ("", strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
    //MessageBox("批处理删除数据库脚本失败",WARNING);
    GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理删除数据库失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  else
    GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理删除数据库成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  endif; 

end;

//---------------------------------------------------------------------------
// The Installed event is sent after the feature 组件\WebService
// is installed.
//---------------------------------------------------------------------------
 
export prototype WebService_Installed();
function WebService_Installed()
NUMBER nResult;
string strcmdline;
string strDate;
string strTime;
string xmlparam;
NUMBER nTmp;
begin
       //安装必备组件
       Feature_Installed();

       if(iIsOracleSql == 1) then
   CreateOrlcleCfgFile(); 
   //执行Oracle数据库初始化脚本
   SetStatusExStaticText("正在执行Oracle数据库初始化脚本。。。");
   strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"WEB\""  + " && \"" + TARGETDIR^"WEB\\Oracle_Install.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
   if LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             MessageBox("执行Oracle数据库初始化脚本失败",WARNING);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 执行Oracle数据库初始化脚本失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   else
    GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 执行Oracle数据库初始化脚本成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   endif;
       endif;
      
      
   //创建平台和服务器参数的配置文件
 
      //解压tomcat ROOT.war
   SetStatusExStaticText("正在解压WEB\\tomcat\\webapps\\ROOT.war...");
   strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"tools\\haozip\"" +
               "&&  HaoZipC.exe x ..\\..\\WEB\\tomcat\\webapps\\ROOT.war -o..\\..\\WEB\\tomcat\\webapps\\ROOT -y" +
                ">>\"" + TARGETDIR^"tools\\install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  
  
  strcmdline = "cmd.exe /c echo ===================安装WEB服务服务器=============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       SetStatusExStaticText("正在安装Web服务");
   
  //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
        //打印日志
        strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 开始安装WEB服务" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       

  //注册mq服务

   SetStatusExStaticText("正在安装MQ"); 

   strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"WEB\\apache activemq-5.10.0\""  + " && \"" + TARGETDIR^"WEB\\apache activemq-5.10.0\\bin\\win32\\InstallService.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
  
   if LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
   MessageBox("安装MQ脚本失败",WARNING);
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 安装MQ脚本失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   else
   GetSystemInfo(DATE, nTmp, strDate);
   GetSystemInfo(TIME, nTmp, strTime);
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 安装MQ脚本成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   ServiceStartService("ActiveMQ","");
   endif;
  
  
          
        //创建平台和服务器参数的配置文件
  strcmdline = "cmd.exe /c echo CMSIP=" + szCmsIp +  ">\"" + TARGETDIR^"tools\\servercfg.ini\"";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT| LAAW_OPTION_HIDDEN);
  strcmdline = "cmd.exe /c echo ServerPORT=" + szPort + ">>\"" + TARGETDIR^"tools\\servercfg.ini\"";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT| LAAW_OPTION_HIDDEN);
  strcmdline = "cmd.exe /c echo installdir=" + TARGETDIR + ">>\"" + TARGETDIR^"tools\\servercfg.ini\"";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT| LAAW_OPTION_HIDDEN);
  //修改服务器的配置文件中的平台和服务地址
  LaunchAppAndWait(TARGETDIR^"tools\\tomcatPort.bat", "" , LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
     strcmdline = "cmd.exe /c echo server.xml修改成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  
  if szPort = "80"  then
   SetStatusExStaticText("检查并停止http服务,防止占用80端口");   
   LaunchAppAndWait(TARGETDIR^"tools\\stopHttpSvr.bat", "" , LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   strcmdline = "cmd.exe /c echo 检查并停止http服务,防止占用80端口" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  endif;
  
  
       //安装tomcat服务
       SetStatusExStaticText("正在安装HikEMS服务");
       if(ServiceExistsService("HikEMS") = TRUE)then
         strcmdline = "cmd.exe /c echo 正在卸载HikEMS服务" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   LaunchAppAndWait (TARGETDIR^"WEB\\tomcat\\bin\\UninstallService.bat", "", LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
    endif;
   
     strcmdline = "cmd.exe /c echo 下步正在安装tomcat服务" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   
  //SetStatusExStaticText("正在安装tomcat服务");
     strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"WEB\\tomcat\\bin\""  + " &&  \"" + TARGETDIR^"WEB\\tomcat\\bin\\InstallService.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";

  if LaunchAppAndWait ("", strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
   MessageBox("InstallService.bat 程序执行失败",WARNING);
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装tomcat失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
     else
   GetSystemInfo(DATE, nTmp, strDate);
   GetSystemInfo(TIME, nTmp, strTime);
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装tomcat成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  endif;
  
  strcmdline = "cmd.exe /c echo ===============================================================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN); 
end;

//---------------------------------------------------------------------------
// The UnInstalled event is sent after the feature 组件\WebServer
// is uninstalled.
//---------------------------------------------------------------------------
 
export prototype WebServer_UnInstalled();
function WebServer_UnInstalled()
begin
    DeleteDir( TARGETDIR^"WEB", ALLCONTENTS);
end;

//---------------------------------------------------------------------------
// The PostgreSQL_UnInstalling event is sent after the feature 组件\PostgreSQL_UnInstalling
// is uninstalled.
//---------------------------------------------------------------------------
 
export prototype PostgreSQL_UnInstalling();
function PostgreSQL_UnInstalling()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin
  //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
       

  //删除数据
  strcmdline = "cmd.exe /c cd \"" + TARGETDIR^"WEB\\PostgreSQL\""  + " && \"" + TARGETDIR^"WEB\\PostgreSQL\\Uninstall.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
  SetStatusExStaticText("正在删除数据");
     if LaunchAppAndWait ("", strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             //MessageBox("批处理删除数据库脚本失败",WARNING);
             GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理删除数据库失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  else
          GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理删除数据库成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  endif; 
  
  //删除数据库
  strcmdline = "cmd.exe /c cd \"" + TARGETDIR^"WEB\\PostgreSQL\\9.0\\bin\""  + " && \"" + TARGETDIR^"WEB\\PostgreSQL\\9.0\\bin\\UninstallService.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
     if LaunchAppAndWait ("", strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理删除数据库失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  else
          GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理删除数据库成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  endif;
end;


//---------------------------------------------------------------------------
// The Installed event is sent after the feature 组件\PostgreSQL_Installed
// is installed.
//---------------------------------------------------------------------------
 
export prototype PostgreSQL_Installed();
function PostgreSQL_Installed()
NUMBER nResult;
string strcmdline;
string strDate;
string strTime;
string xmlparam;
NUMBER nTmp;
begin
  //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
       
  strcmdline = "cmd.exe /c echo ===================安装PostgreSQL =============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
     LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       SetStatusExStaticText("正在安装PostgreSQL服务");
  
   //判断 PG 是否安装
   if(ServiceExistsService("PostgreSQL") = TRUE)then
  bInstallPostgrel = FALSE;
  else
     bInstallPostgrel = TRUE;//安装新的Postgrel服务
  endif;
   
    if(bInstallPostgrel = FALSE) then//有老的PostgreSQL,不需要安装新的Postgrel,删除卸载文件
           //执行数据库安装脚本
           //打印日志
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 数据库服务已安装,安装数据库初始化脚本" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   
   strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"PostgreSQL\""  + " &&  \"" + TARGETDIR^"PostgreSQL\\Install.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
   if LaunchAppAndWait ("" , strcmdline,  LAAW_OPTION_WAIT) < 0 then
             MessageBox("批处理安装数据库脚本失败",WARNING);
             GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装数据库脚本失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   endif;
   
   //删除卸载文件
   DeleteFile( TARGETDIR^"PostgreSQL\\9.0\\bin\\UninstallService.bat");
   
    else//安装了新的Postgrel服务
   //执行安装服务
   SetStatusExStaticText("正在安装PostgreSQL服务");
   strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 数据库服务未安装,安装数据库服务PostgreSQL--9.0---bin--InstallService.bat" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   
   strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"PostgreSQL\\9.0\\bin\""  + " && \"" + TARGETDIR^"PostgreSQL\\9.0\\bin\\InstallService.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
   if LaunchAppAndWait ("", strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             MessageBox("批处理安装数据库服务失败",WARNING);
             MessageBox("批处理安装数据库脚本失败",WARNING);
             GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装数据库服务失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   else
    GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装数据库服务成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   endif;
   
   //启动数据库服务器
   ServiceStartService("PostgreSQL","");
            strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 执行数据库安装脚本---begin...." + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
   LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   
      //执行数据库安装脚本
   SetStatusExStaticText("正在安装PostgreSQL数据库初始脚本。。。");
   strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"PostgreSQL\""  + " && \"" + TARGETDIR^"PostgreSQL\\Install.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
   if LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             MessageBox("批处理安装数据库脚本失败",WARNING);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装数据库脚本失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   else
    GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 批处理安装数据库脚本成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
   endif;
  endif;
end;

 

//---------------------------------------------------------------------------
// The Installing event is sent just before the feature
// 组件\WebServer is installed.
//---------------------------------------------------------------------------

 
export prototype EPDAG_Installing();
function EPDAG_Installing()
begin 
    //SetStatusExStaticText("正在安装环保数据接入网关");
end;

//---------------------------------------------------------------------------
// The Installed event is sent after the feature 组件\WebService
// is installed.
//---------------------------------------------------------------------------
 
export prototype EPDAG_Installed();
function EPDAG_Installed()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
string strFile;
begin
       
  strcmdline = "cmd.exe /c echo ===================安装环保数据接入网关=============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       
        SetStatusExStaticText("正在安装环保数据接入网关");
       
        //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
        //打印日志
        strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 开始安装环保数据接入网关" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       
        strcmdline = "cmd.exe /c echo %cd% && cd /d \"" + TARGETDIR^"EPDAG\""  + " &&  \"" + TARGETDIR^"EPDAG\\install.bat\"" + " >> \"" + TARGETDIR^"install.log\" " + " 2>>&1";
       
        if LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN) < 0 then
             MessageBox("批处理安装EPDAG失败",WARNING);
             GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
             strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 环保数据接入网关安装失败" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  else
          GetSystemInfo(DATE, nTmp, strDate);
    GetSystemInfo(TIME, nTmp, strTime);
    strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 环保数据接入网关安装成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
    LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
     endif;
    
     strcmdline = "cmd.exe /c echo =============================================================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
end;

//---------------------------------------------------------------------------
// The UnInstalled event is sent after the feature 组件\WebServer
// is uninstalled.
//---------------------------------------------------------------------------
 
export prototype EPDAG_UnInstalled();
function EPDAG_UnInstalled()
begin
     //删除记录日志
 DeleteDir( TARGETDIR^"EPDAG", ALLCONTENTS);
end;


export prototype EPDAG_UnInstalling();
function EPDAG_UnInstalling()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin

        strcmdline = "cmd.exe /c echo ===================卸载环保数据接入网关=============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
        //卸载AMS
       SetStatusExStaticText("正在卸载环保数据接入网关"); 
  KillProcess("EPDAG.exe");
  
   //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
        //打印日志
        strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 开始卸载环保数据接入网关" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       
        ServiceStopService("EPDAG");
        ServiceRemoveService("EPDAG"); 
       
        strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 环保数据接入网关卸载成功" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
    
  
  
end;

//---------------------------------------------------------------------------
// OnAppSearch
//
// The OnAppSearch event is called after OnBegin and can be used to search
// for previous versions of the current application. This event is called
// only when the setup is running in first install mode.
//---------------------------------------------------------------------------
function OnAppSearch()
begin
end;

//---------------------------------------------------------------------------
// OnFilterComponents
//
// The OnFilterComponents event is called by the framework to filter out
// components in each feature by language and platform, override this
// event to perform custom filtering.
//
// Note: This event will not be called automatically in a
// program...endprogram style setup.
//---------------------------------------------------------------------------
function OnFilterComponents()
begin


    // Filter file groups by current platform.
    FeatureFilterOS(MEDIA, 0, ISOSL_ALL, TRUE);
    FeatureFilterOS(MEDIA, 0, SYSINFO.nISOSL, FALSE);
 
    // Filter file groups by current language.
    FeatureFilterLanguage(MEDIA, ISLANG_ALL, TRUE);
    FeatureFilterLanguage(MEDIA, STANDARD_SELECTED_LANGUAGE, FALSE);
   

end;

//---------------------------------------------------------------------------
// OnFirstUIBefore
//
// The OnFirstUIBefore event is called by the framework when the setup is
// running in first install mode. By default this event displays UI allowing
// the end user to specify installation parameters.
//---------------------------------------------------------------------------
function OnFirstUIBefore()
    NUMBER nResult, nSetupType, nvSize, nUser;
    STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile;
    STRING szLicenseFile;
 BOOL bCustom, bIgnore1, bIgnore2;
 
  string strcmdline;
 string strDate;
 string strTime;
 NUMBER nTmp;
 string  szField1, szField2;
begin

    // TO DO: if you want to enable background, window title, and caption bar title                                                                  
    // SetTitle( @PRODUCT_NAME, 24, WHITE );                                       
    // SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION );                   
    // Enable( FULLWINDOWMODE );        
    // Enable( BACKGROUND );        
    // SetColor(BACKGROUND,RGB (0, 128, 128));       

    // Added in InstallShield 15 - Show an appropriate error message if
    // -removeonly is specified and the product is not installed.
    if( REMOVEONLY ) then
        Disable( DIALOGCACHE );
  szMsg = SdLoadString( IDS_IFX_ERROR_PRODUCT_NOT_INSTALLED_UNINST );
     SdSubstituteProductInfo( szMsg );
  MessageBox( szMsg, SEVERE );
  abort;
    endif;
   
 nSetupType = TYPICAL; 

   
 //获取系统时间
 GetSystemInfo(DATE, nTmp, strDate);
 GetSystemInfo(TIME, nTmp, strTime);
 
 strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "]  ===================开始安装=============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
 LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
       
       
Dlg_SdWelcome:
    szTitle = "";
    szMsg   = "";
    nResult = SdWelcome(szTitle, szMsg);
    if (nResult = BACK) goto Dlg_SdWelcome;
 
 szTitle   = "";
 svName    = "";
    svCompany = "";

Dlg_SdRegisterUser:
    szMsg = "";
    szTitle = "";
    nResult = SdRegisterUser( szTitle, szMsg, svName, svCompany );
    if (nResult = BACK) goto Dlg_SdWelcome;

Dlg_SetupType:
    szTitle = "";
    szMsg   = "";
    nSetupType = TYPICAL;
    nResult = SetupType2(szTitle, szMsg, "", nSetupType, 0);
    if (nResult = BACK) then
        goto Dlg_SdRegisterUser;
    else
     nSetupType = nResult;
        if (nSetupType != CUSTOM) then
         nvSize = 0;
         FeatureCompareSizeRequired(MEDIA, INSTALLDIR, nvSize);
         if (nvSize != 0) then     
             MessageBox(szSdStr_NotEnoughSpace, WARNING);
             goto Dlg_SetupType;
            endif;
   bCustom = FALSE;
   goto Dlg_SQL;
  else
   bCustom = TRUE;
        endif;
    endif;   

Dlg_SdAskDestPath:     
    nResult = SdAskDestPath(szTitle, szMsg, INSTALLDIR, 0);
    if (nResult = BACK) goto Dlg_SetupType;

Dlg_SdFeatureTree:
    szTitle    = "";
    szMsg      = "";
   
    if (nSetupType = CUSTOM) then
  nResult = SdFeatureTree(szTitle, szMsg, INSTALLDIR, "", 2);
  if (nResult = BACK) goto Dlg_SdAskDestPath; 
    endif;


      // Display the user's selections.
      //SprintfBox (INFORMATION, szTitle, "svEdit1: %s\n\nsvEdit2: %s",

      //            szCmsIp, szServerIp);
Dlg_SQL:
    nResult = OnSQLLogin( nResult );
    if( nResult = BACK ) then
     if (!bCustom) then
      goto Dlg_SetupType;   
     else
      goto Dlg_SdFeatureTree;
     endif;
    endif;

   
Dlg_SdStartCopy:

 //获取本机的IP地址
  szCmsIp = GetLocalIP();

 if( CheckOrtherSql() = 1 )then
  if( GetOrlcleAddr() == BACK) then
   goto Dlg_SQL;
  endif;
  if( GetOrlcleUsrPwd() == BACK) then
   goto Dlg_SQL;
  endif;
 endif;

 //获取共享平台和一卡通应用平台的IP地址
  szTitle = "请输入配置的参数";
  szMsg  = "配置加油站平台的IP地址和端口\r\n\r\nIP地址是自动获取的,请确认是否正确!";
     szField1 = "平台IP:";
     szField2 = "平台端口:";
     szPort = "80";
    
  // Get source and target folder names.
     nResult = SdShowDlgEdit2 (szTitle, szMsg, szField1, szField2, szCmsIp,  szPort);
    if (nResult = BACK)  then //后退

      goto Dlg_SQL;

    endif;
    
    szTitle = "";
    szMsg   = "";
    nResult = SdStartCopy2( szTitle, szMsg );   
 
    if (nResult = BACK) then
       goto Dlg_SQL;;
    endif;

    // Added in IS 2009 - Set appropriate StatusEx static text.
    //SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_FIRSTUI ) );

    // setup default status
    Enable(STATUSEX);
 
    return 0;
end;

 

 

 


export prototype Servers_Installing();
function Servers_Installing()
string strDate;
string strTime;
NUMBER nTmp;
string strcmdline;
begin 
    GetSystemInfo(DATE, nTmp, strDate);
 GetSystemInfo(TIME, nTmp, strTime);
 //打印日志
 strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "] 开始安装服务组件" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
 LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
end;

export prototype Servers_UnInstalling();
function Servers_UnInstalling()
begin
      
      
end;

//---------------------------------------------------------------------------
// The Installed event is sent after the feature 组件\WebService
// is installed.
//---------------------------------------------------------------------------
 
export prototype Servers_Installed();
function Servers_Installed()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin

 //获取系统时间
 
    //安装必备组件
    Feature_Installed();
   
   
  //创建平台和服务器参数的配置文件
  strcmdline = "cmd.exe /c echo CMSIP=" + szCmsIp +  ">\"" + TARGETDIR^"tools\\servercfg.ini\"";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT| LAAW_OPTION_HIDDEN);
  strcmdline = "cmd.exe /c echo ServerPORT=" + szPort + ">>\"" + TARGETDIR^"tools\\servercfg.ini\"";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT| LAAW_OPTION_HIDDEN);
  strcmdline = "cmd.exe /c echo installdir=" + TARGETDIR + ">>\"" + TARGETDIR^"tools\\servercfg.ini\"";
  LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT| LAAW_OPTION_HIDDEN);
 //修改服务器的配置文件中的平台和服务地址
  LaunchAppAndWait(TARGETDIR^"tools\\configtool.bat", "", LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
  
    if ( LaunchAppAndWait(TARGETDIR ^ "WatchDog\\ServiceWatchdog.exe", "",   NOWAIT) < 0) then
  SprintfBox(MB_OK, "看门狗", "启动看门狗失败,请手动安装!"); 
 endif;
end;

//---------------------------------------------------------------------------
// The UnInstalled event is sent after the feature 组件\WebServer
// is uninstalled.
//---------------------------------------------------------------------------
 
export prototype Servers_UnInstalled();
function Servers_UnInstalled()
begin

    //删除记录日志
 DeleteDir( TARGETDIR^"Server", ALLCONTENTS);
end;
//---------------------------------------------------------------------------
// OnBegin
//
// The OnBegin event is called directly by the framework after the setup
// initializes.
//---------------------------------------------------------------------------
function OnBegin()
begin
 // TO DO: you may change default non-UI setting, for example
 //
 // You may also perform your custom initialization steps, check requirements, etc. 
 // You may also perform your custom initialization steps, check requirements, etc.
end;

//---------------------------------------------------------------------------
// OnMaintUIBefore
//
// The OnMaintUIBefore event is called by the framework when the setup is
// running in maintenance mode. By default this event displays UI that
// allows the end user to add or remove features, repair currently
// installed features or uninstall the application.
//---------------------------------------------------------------------------
function OnMaintUIBefore()
 NUMBER nResult, nType;
 STRING szTitle, szMsg, svDir, svResult, szCaption;
begin
 // TO DO: if you want to enable background, window title, and caption bar title           
 // SetTitle( @PRODUCT_NAME, 24, WHITE );     
 // SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION );     
 // SetColor(BACKGROUND,RGB (0, 128, 128));     
 // Enable( FULLWINDOWMODE );      
 // Enable( BACKGROUND );       
 //if (CheckProgramRun("Watchdog") = 1) then
  //LaunchAppAndWait("", "taskkill /f /im ServiceWatchdog.exe", LAAW_OPTION_HIDDEN|WAIT );     
  //Delay(2);
  //MessageBox ("在执行操作之前,请先停止服务管理程序ServiceWatchdog.", SEVERE); 
  //KillProcess("ServiceWatchdog.exe");
  LaunchAppAndWait("", "taskkill /f /im ServiceWatchdog.exe", LAAW_OPTION_HIDDEN|WAIT );     
 //endif;  
Dlg_Start:

    // Added in Version 9.5 - Support for REMOVEONLY option.
    if( !REMOVEONLY ) then
  // In standard mode show maintenance dialog
  Disable(BACKBUTTON);
  nType = SdWelcomeMaint(szTitle, szMsg, MODIFY);
  Enable(BACKBUTTON);
 else
        // Hide the initial progress dialog as otherwise the user can
        // click on it, and hide the MessageBox.
        Disable( DIALOGCACHE );

        // In RemoveOnly mode, set to remove.
        nType = REMOVEALL;
    endif;
 
 // Show Uninstall Confirmation Dialog
    if ( nType = REMOVEALL ) then
  nResult = MessageBox( SdLoadString( IFX_MAINTUI_MSG ), MB_YESNO );
  if (nResult != IDYES ) then
           
            if( REMOVEONLY ) then
                // In REMOVEONLY mode, abort the setup.
                abort;
            else
                // In non-REMOVEONLY mode, redisplay the previous dialog.
       goto Dlg_Start;
            endif;

  endif;
 endif;

 nResult = NEXT;

Dlg_SdFeatureTree:
 if (nType = MODIFY) then
  szTitle = "";
  szMsg = "";
  nResult = SdFeatureTree(szTitle, szMsg, INSTALLDIR, "", 2);
  if (nResult = BACK) goto Dlg_Start;
 endif;

 switch(nType)
        case REMOVEALL:
       
            ComponentRemoveAll();

            // Added in IS 2009 - Set appropriate StatusEx static text.
            SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_MAINTUI_REMOVEALL ) );

        case REPAIR:
       
            ComponentReinstall();

            // Added in IS 2009 - Set appropriate StatusEx static text.
            SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_MAINTUI_REPAIR ) );


        case MODIFY:

            // Added in IS 2009 - Set appropriate StatusEx static text.
            SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_MAINTUI_MODIFY ) );

    endswitch;
   
 Enable(STATUSEX);

end;

 
export prototype WatchDog_UnInstalled();
function WatchDog_UnInstalled()
begin

    //删除记录日志
 DeleteDir( TARGETDIR^"WatchDog", ALLCONTENTS);
end;

 

//---------------------------------------------------------------------------
// The Installing event is sent just before the feature
// 组件\WebServer is installed.
//---------------------------------------------------------------------------

 
export prototype Door_Installed();
function Door_Installed()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin
        //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
       
  strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "]  ===================安装结束=============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
end;


//---------------------------------------------------------------------------
// OnEnd
//
// The OnEnd event is called at the end of the setup. This event is not
// called if the setup is aborted.
//---------------------------------------------------------------------------
function OnEnd()
string strcmdline;
string strDate;
string strTime;
NUMBER nTmp;
begin
        //获取系统时间
        GetSystemInfo(DATE, nTmp, strDate);
        GetSystemInfo(TIME, nTmp, strTime);
       
  strcmdline = "cmd.exe /c echo [" + strDate + " " + strTime + "]  ===================安装结束=============================" + ">>\"" + TARGETDIR^"install.log\"" + " 2>>&1";
        LaunchAppAndWait ("" , strcmdline, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值