Пример #1
0
        public static void OpenDaemon()
        {
            DirectoryInfo dir = GetDir_FromDeploy("TOEC_Daemon", false);

            if (dir != null)
            {
                FileInfo fi = new FileInfo(dir.FullName + "\\Start.bat");
                if (File.Exists(fi.FullName))
                {
                    if (!Helper_Service.Server_IsOpen("TOEC_Daemon"))
                    {
                        Process p = Process.Start(fi.FullName);
                        p.WaitForExit(15000);
                        report.Add("守护进程已经开启", "成功");
                    }
                    else
                    {
                        report.Add("守护进程已经开启", "成功");
                    }
                }
                else
                {
                    report.Error("未找到守护进程服务的Start.bat");
                }
            }
            else
            {
                report.Add("未安装守护进程");
            }
        }
Пример #2
0
        /// <summary>
        /// 部署
        /// </summary>
        /// <returns></returns>
        public override void Deploy(string stnm, string tcode, string ip)
        {
            bool flag = false;

            try
            {
                //服务是否存在
                if (Helper_Service.Service_IsExisted(name))
                {
                    report.Add(comment + "升级...");
                    flag = Update();//升级
                }
                else
                {
                    report.Add(comment + "安装...");
                    flag = Install_DB(stnm, tcode, ip);//安装
                }
            }
            catch (Exception e)
            {
                report.Error("部署" + comment + "异常", e);
            }
            finally
            {
                report.Add("部署-" + comment, flag ? "成功" : "失败");
            }
        }
Пример #3
0
 /// <summary>
 /// 关闭守护进程
 /// </summary>
 /// <returns></returns>
 public static bool CloseDaemon()
 {
     if (Helper_Service.Service_IsExisted("TOEC_Daemon"))
     {
         if (Helper_Service.Server_Close("TOEC_Daemon"))
         {
             report.Add("守护进程已经停止");
             return(true);
         }
         else
         {
             report.Error("守护进程关闭异常");
             return(false);
         }
     }
     else
     {
         report.Add("未安装守护进程");
         return(true);
     }
 }
Пример #4
0
        /// <summary>
        /// 部署
        /// </summary>
        /// <param name="stnm"></param>
        /// <param name="tcode"></param>
        /// <param name="ip"></param>
        public override void Deploy(string stnm, string tcode, string ip)
        {
            bool flag = false;

            try
            {
                //特殊处理:清理老版不规范的服务
                Delete_Old_Software();

                //判断服务是否存在
                if (Helper_Service.Service_IsExisted(name))
                {
                    #region 升级
                    report.Add(comment + "升级...");
                    if (!Helper_Service.Server_Close(name)) //先关闭服务
                    {
                        report.Error(name + "服务关闭失败");
                    }
                    else
                    {
                        Thread.Sleep(5000);
                        report.Add(name + "服务已关闭");

                        report.Add("检查残留进程...");
                        if (Helper_Process.CheckProcessExists(name))
                        {
                            if (Helper_Process.KillProcess(name))
                            {
                                report.Add("进程已经被强制结束");
                            }
                            else
                            {
                                report.Error("进程强制结束失败");
                            }
                        }
                        flag = Update(stnm, tcode, ip);
                    }
                    #endregion
                }
                else
                {
                    //安装
                    report.Add(comment + "安装...");
                    flag = Install(stnm, tcode, ip);//安装
                }

                //部署后自动开启
                if (AutoStart)
                {
                    DirectoryInfo dir = GetDir_FromDeploy(name);
                    if (dir != null)
                    {
                        FileInfo fi_start = new FileInfo(dir.FullName + "\\Start.bat");
                        if (File.Exists(fi_start.FullName))
                        {
                            Process.Start(fi_start.FullName);
                            report.Add(name + "已开启");
                        }
                        else
                        {
                            report.Add(fi_start.FullName + "未找到");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                report.Error("部署" + comment + "异常", e);
            }
            finally
            {
                report.Add("部署-" + comment, flag ? "成功" : "失败");
            }
        }
Пример #5
0
        /// <summary>
        /// 升级
        /// </summary>
        /// <returns></returns>
        private bool Update()
        {
            try
            {
                //检查服务是否正常
                if (Helper_Service.Server_IsOpen(name))
                {
                    report.Add("检测到数据库服务正常,准备执行脚本");
                }
                else
                {
                    report.Add("检测到数据库服务未启动,尝试启动");
                    if (Helper_Service.Server_Open(name))
                    {
                        report.Add("启动成功");
                    }
                    else
                    {
                        report.Error("启动失败"); return(false);
                    }
                }
                //备份
                if (!Backup(name))
                {
                    return(false);
                }

                //找到压缩包
                FileInfo zip = GetZipFile_FromSource(name_sql);
                if (zip == null)
                {
                    return(false);
                }

                //解压缩 至 源目录
                report.Add("解压缩...");
                if (Helper_Zip.UnZip(zip.FullName, dir_source.FullName, "", true))
                {
                    report.Add("脚本解压成功");
                }
                else
                {
                    report.Error("脚本解压失败"); return(false);
                }

                //执行脚本
                DirectoryInfo SQLDir = new DirectoryInfo(zip.FullName.TrimEnd(".zip".ToCharArray()));
                if (Directory.Exists(SQLDir.FullName))
                {
                    //获去当前数据库版本号
                    string dbv = GetDBVersion(con);
                    if (!string.IsNullOrWhiteSpace(dbv))
                    {
                        report.Add("数据库当前版本:" + dbv);
                        foreach (FileInfo s in SQLDir.GetFiles("*.sql"))
                        {
                            try
                            {
                                string BatVersion = Path.GetFileNameWithoutExtension(s.FullName).ToUpper().Replace("UPDATE_", "").Split("_".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0];
                                if (long.Parse(BatVersion) > long.Parse(dbv))
                                {
                                    string ErrorInfo = ExecSQLFile(s.FullName, con);
                                    if (ErrorInfo != "")
                                    {
                                        report.Error(s.Name + "【" + ErrorInfo + "】");
                                    }
                                    else
                                    {
                                        report.Add(s.Name, "成功");
                                    }
                                }
                            }
                            catch (Exception ex) { report.Error("【执行异常】" + s.Name, ex); continue; }
                        }
                    }
                    else
                    {
                        report.Error("无法获取当前数据库版本");
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                report.Error("数据库升级异常", e);
                return(false);
            }
        }