//===========================================================================
//
// 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;