主站部署管理工具代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1195 lines
47 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
using Microsoft.Win32;
using System.Xml;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
using System.Threading;
using System.Globalization;
using MySql.Data.MySqlClient;
using Newtonsoft.Json.Linq;
using System.Net;
using System.Collections;
namespace ManageTools
{
public partial class Main : Form
{
//web工程的发布名称
string webName = "WebContent";
//判断系统版本
bool bit64 = Environment.Is64BitOperatingSystem;
//应用程序当前路径
string curPath;
//应用程序的上一级路径
string parentPath;
string rmsName = "";//抄表服务名
string rmsRun64 = "";//64位下时应用程序名
string rmsRun32 = "";//32位下时应用程序名
string GPRSName = "";//GPRS服务名
string GPRSRun64 = "";//64位下时GPRS程序名
string GPRSRun32 = "";//32位下时GPRS程序名
bool autoRun = false; //自动运行
//指定Sql Server提供者的连接字符串
string connString;
//建立连接对象
MySqlConnection mySqlConnection;
SqlConnection Sqlconn;
//为上面的连接指定Command对象
SqlCommand thiscommand;
//为指定的command对象执行DataReader
//SqlDataReader thisSqlDataReader;
public string language
{
set;
get;
}
System.ComponentModel.ComponentResourceManager res;
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "IsWindow")]
public static extern bool IsWindow(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId")]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, ref uint lpdwProcessId);
public Main()
{
InitializeComponent();
}
private void Main_Load(object sender, EventArgs e)
{
loadConfig();
curPath = System.Windows.Forms.Application.StartupPath;
parentPath = curPath.Substring(0, curPath.IndexOf("ManageTools"));
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
private void bt_test_Click(object sender, EventArgs e)
{
}
private void bt_stop_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
stopService(rmsName);
stopService(GPRSName);
stopService("Tomcat");
killProcess("3761");
killProcess("nginx");
killProcess("LiveNVR");
}
private void killProcess(string processName)
{
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
//得到所有打开的进程
try
{
foreach (Process thisproc in Process.GetProcessesByName(processName))
{
if (!thisproc.CloseMainWindow())
{
Console.WriteLine("| ================" + processName);
thisproc.Kill();
}
}
}
catch (Exception Exc)
{
MessageBox.Show(Exc.Message);
}
}
//启动web服务
private void bt_start_Click(object sender, EventArgs e)
{
/*
if (bit64)
{
startService("抄表事务服务", parentPath + "\\Release", "runJavaApp_64.bat");
startService("GPRS", parentPath + "\\GPRS服务", "IpServer_64.exe");
startService("Tomcat", parentPath + "\\tomcat-8.0-64\\bin", "startup.bat");
}
else
{
startService("抄表事务服务", parentPath + "\\Release", "runJavaApp_32.bat");
startService("GPRS", parentPath + "\\GPRS服务", "IpServer_32.exe");
startService("Tomcat", parentPath + "\\tomcat-8.0-32\\bin", "startup.bat");
}
* */
startServiceAll();
timer1.Enabled = true;
}
private void startServiceAll()
{
if (bit64)
{
// 启动集中器
startService(rmsName, "", parentPath + "\\Release", rmsRun64);
// 启动 GPRS
startService(GPRSName, "3761", parentPath + "\\GPRS-Service", GPRSRun64);
// 启动主站后端
startService("Tomcat","", parentPath + "\\apache-tomcat\\bin", "startup.bat");
// 启动 nginx
startService("nginx", "", parentPath + "\\nginx-1.18.0", "nginx.exe");
// 启动 流媒体
startService("LiveNVR", "", parentPath + "\\LiveNVR", "LiveNVR.exe");
}
else
{
startService(rmsName, "", parentPath + "\\Release", rmsRun32);
startService(GPRSName, "3761", parentPath + "\\GPRS-Service", GPRSRun32);
startService("Tomcat", "", parentPath + "\\apache-tomcat\\bin", "startup.bat");
// 启动 nginx
startService("nginx", "", parentPath + "\\nginx-1.18.0", "nginx.exe");
// 启动 流媒体
startService("LiveNVR", "", parentPath + "\\LiveNVR", "LiveNVR.exe");
}
}
//开启服务
private void startService(string windowName,string exeName,string appPath,string appName)
{
//IntPtr hWnd = FindWindow(null, windowName);
IntPtr hWnd = IntPtr.Zero;
Process[] MyProcesses = Process.GetProcesses();
foreach(Process MyProcess in MyProcesses)
{
// Console.WriteLine("| MyProcess.ProcessName: " + MyProcess.ProcessName);
if (exeName != "")
{
if (MyProcess.ProcessName == exeName)
{
return;
}
}
if (windowName != "")
{
if (MyProcess.ProcessName == windowName)
{
return;
}
}
if ((MyProcess.MainWindowTitle.IndexOf(windowName) > -1))
{
return;
}
}
if (hWnd == IntPtr.Zero)
{
if (File.Exists(appPath + "\\" + appName))
{
Directory.SetCurrentDirectory(appPath);
Process startProcess = new Process();
startProcess.StartInfo.FileName = appPath + "\\" + appName;
startProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
startProcess.Start();
Console.WriteLine("| appPath: " + appPath);
Console.WriteLine(appName + "启动成功!!!\n");
}
}
}
//调用 cmd
private string runDosCmd(string[] commandTexts)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = true;
string strOutput = null;
try
{
p.Start();
foreach (string item in commandTexts)
{
p.StandardInput.WriteLine(item);
}
}
catch (Exception e)
{
strOutput = e.Message;
}
return strOutput;
}
private void stopService(string windowName)
{
IntPtr hWnd = IntPtr.Zero;
Process[] MyProcesses = Process.GetProcesses();
foreach (Process MyProcess in MyProcesses)
{
// Console.WriteLine("| MyProcess.ProcessName: " + MyProcess.ProcessName);
if (MyProcess.MainWindowTitle.IndexOf(windowName) > -1)
{
MyProcess.CloseMainWindow();
Console.WriteLine("| " + windowName + "已经关闭");
break;
}
}
}
#region 参数加载
private void loadConfig()
{
String filePath = System.Windows.Forms.Application.StartupPath + "\\backup";
String fileName = System.Windows.Forms.Application.StartupPath;
fileName += "\\system.ini";
INIFile iniFile = new INIFile(fileName);
tb_Host.Text = iniFile.ReadValue("config", "tb_Host", "127.0.0.1");
tb_db.Text = iniFile.ReadValue("config", "tb_db", "samr");
tb_user.Text = iniFile.ReadValue("config", "tb_user", "sa");
mtb_pwd.Text = iniFile.ReadValue("config", "mtb_pwd", "sa");
tb_path.Text = iniFile.ReadValue("config", "tb_path", filePath);
frontend_ip.Text = iniFile.ReadValue("config", "frontend_ip", "127.0.0.1");
// dTP_time.Text = iniFile.ReadValue("config", "dTP_time", "22:00");
checkBox1.Checked = iniFile.ReadValue("config", "autoRun", false);
baseUrl.Text = iniFile.ReadValue("config", "baseUrl", "8.129.11.230:8083");
cameraUrl.Text = iniFile.ReadValue("config", "cameraUrl", "8.129.11.230:18010");
iniFile.WriteValue("config", "autoRun", checkBox1.Checked);
autoRun = checkBox1.Checked;
//服务启动
rmsName = iniFile.ReadValue("runserver", "rmsName", "Read-Service");
rmsRun64 = iniFile.ReadValue("runserver", "rmsRun64", "runJavaApp_64.bat");
rmsRun32 = iniFile.ReadValue("runserver", "rmsRun32", "runJavaApp_32.bat");
iniFile.WriteValue("runserver", "rmsName", rmsName);
iniFile.WriteValue("runserver", "rmsRun64", rmsRun64);
iniFile.WriteValue("runserver", "rmsRun32", rmsRun32);
GPRSName = iniFile.ReadValue("runserver", "GPRSName", "GPRS");
GPRSRun64 = iniFile.ReadValue("runserver", "GPRSRun64", "3761.exe");
GPRSRun32 = iniFile.ReadValue("runserver", "GPRSRun32", "3761.exe");
iniFile.WriteValue("runserver", "GPRSName", GPRSName);
iniFile.WriteValue("runserver", "GPRSRun64", GPRSRun64);
iniFile.WriteValue("runserver", "GPRSRun32", GPRSRun32);
this.language = iniFile.ReadValue("config", "language", "");
if (this.language != "")
cb1.Checked = true;
ApplyResource();
}
private void saveConfig()
{
String fileName = System.Windows.Forms.Application.StartupPath;
fileName += "\\system.ini";
INIFile iniFile = new INIFile(fileName);
iniFile.WriteValue("config", "tb_Host", tb_Host.Text);
iniFile.WriteValue("config", "tb_db", tb_db.Text);
iniFile.WriteValue("config", "tb_user", tb_user.Text);
iniFile.WriteValue("config", "mtb_pwd", mtb_pwd.Text);
iniFile.WriteValue("config", "tb_path", tb_path.Text);
// iniFile.WriteValue("config", "dTP_time", dTP_time.Text);
iniFile.WriteValue("config", "language", this.language);
iniFile.WriteValue("config", "autoRun", checkBox1.Checked);
iniFile.WriteValue("config", "baseUrl", baseUrl.Text);
iniFile.WriteValue("config", "cameraUrl", cameraUrl.Text);
iniFile.WriteValue("config", "frontend_ip", frontend_ip.Text);
}
#endregion
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
saveConfig();
}
//测试数据
private void bt_test_Click_1(object sender, EventArgs e)
{
String msg = connectDB();
if (msg.Trim() == "")
{
MessageBox.Show(Properties.Resources. + "!", Properties.Resources.);
mySqlConnection.Close();
}
else
{
MessageBox.Show(Properties.Resources. + "! \r\n"
+ connString + "\r\n"
+ msg , Properties.Resources.);
}
}
//数据库连接测试
private String connectDB()
{
String msg = "";
// SQL server 连接信息
// connString = "Data Source=" + tb_Host.Text +
// ";Initial Catalog=" + tb_db.Text +
// ";User id=" + tb_user.Text +
// ";Password=" + mtb_pwd.Text ;
// Console.WriteLine(connString);
// Sqlconn = new SqlConnection(connString);
// MySQL 连接信息
String connectStr = "server=" + tb_Host.Text +
";port=3306;user=" + tb_user.Text +
";password=" + mtb_pwd.Text +
";database=" + tb_db.Text + ";";
mySqlConnection = new MySqlConnection(connectStr);
try
{
mySqlConnection.Open();
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
//参数生效
private void btapply_Click(object sender, EventArgs e)
{
//需要关闭服务
if (MessageBox.Show(Properties.Resources. + "?", Properties.Resources., MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.No)
{
return;
}
//配置java环境变量 -----------------------------------------------------------------------------------------------------------------
try
{
setJavaParameter();
log("设置JAVA环境变量完成!");
}
catch(Exception ex)
{
log("设置JAVA环境变量时,出现异常:" + ex.Message);
}
//tomcat --------------------------------------------------------------------------------------------------------------------------------
String tempPath;
if (bit64)
tempPath = parentPath + "\\apache-tomcat\\webapps\\" + webName + "\\WEB-INF\\applicationContext.xml";
else
tempPath = parentPath + "\\apache-tomcat\\webapps\\" + webName + "\\WEB-INF\\applicationContext.xml";
log(tempPath);
XmlDocument dom = new XmlDocument();
dom.Load(tempPath);
String strValue;
foreach (XmlNode tempNode in dom.ChildNodes[1].ChildNodes[1])
{
Console.WriteLine("============" + tempNode);
if (tempNode.Attributes == null)
{
continue;
}
strValue = tempNode.Attributes.GetNamedItem("name").InnerText;
if (strValue == "url")
{
// tempNode.Attributes.GetNamedItem("value").Value = getUTF8String("jdbc:sqlserver://" + tb_Host.Text.Trim() + ":1433;databasename=" + tb_db.Text.Trim());
tempNode.Attributes.GetNamedItem("value").Value = getUTF8String("jdbc:mysql://" + tb_Host.Text.Trim() + ":3306/" + tb_db.Text.Trim() + "?useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true");
continue;
}
else if (strValue == "username")
{
tempNode.Attributes.GetNamedItem("value").Value = getUTF8String(tb_user.Text.Trim());
continue;
}
else if (strValue == "password")
{
tempNode.Attributes.GetNamedItem("value").Value = getUTF8String(mtb_pwd.Text.Trim());
continue;
}
}
dom.Save(tempPath);
// 修改 hibernate 事务配置文件
String hibernateConfigPath = parentPath + "\\apache-tomcat\\webapps\\" + webName + "\\WEB-INF\\classes\\hibernate.cfg.xml";
XmlReaderSettings settings = new XmlReaderSettings() {
ProhibitDtd = false,
XmlResolver = null
};
XmlDocument hibernateDom = new XmlDocument();
XmlReader xmlReader = XmlReader.Create(hibernateConfigPath, settings);
// hibernateDom.Load(hibernateConfigPath);
hibernateDom.Load(xmlReader);
String configValue;
foreach (XmlNode configNode in hibernateDom.ChildNodes[2].ChildNodes[0])
{
// Console.WriteLine("============" + configNode);
if (configNode.Attributes == null)
{
continue;
}
if (configNode.Attributes.GetNamedItem("name") == null)
{
continue;
}
configValue = configNode.Attributes.GetNamedItem("name").InnerText;
if (configValue == "hibernate.connection.url")
{
configNode.InnerText = getUTF8String("jdbc:mysql://" + tb_Host.Text.Trim() + ":3306/" + tb_db.Text.Trim());
continue;
}
if (configValue == "hibernate.connection.password")
{
configNode.InnerText = getUTF8String(mtb_pwd.Text.Trim());
continue;
}
if (configValue == "hibernate.connection.username")
{
configNode.InnerText = getUTF8String(tb_user.Text.Trim());
continue;
}
if (configValue == "hibernate.default_schema")
{
configNode.InnerText = tb_db.Text.Trim();
continue;
}
}
xmlReader.Close();
hibernateDom.Save(hibernateConfigPath);
//事件服务 --------------------------------------------------------------------------------------------------------------------------------
tempPath = parentPath + "\\GPRS-Service\\system.ini";
INIFile iniFileGPRS = new INIFile(tempPath);
// [system] 配置
IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];//获得当前IP地址
iniFileGPRS.WriteValue("system", "host", ipAddr.ToString());
// [config] 配置
iniFileGPRS.WriteValue("config", "server", tb_Host.Text.Trim());
iniFileGPRS.WriteValue("config", "dbname", tb_db.Text.Trim());
iniFileGPRS.WriteValue("config", "user", tb_user.Text.Trim());
iniFileGPRS.WriteValue("config", "pwd", mtb_pwd.Text.Trim());
iniFileGPRS.WriteValue("config", "language", this.language);
// [Connection] 配置
/*iniFileGPRS.WriteValue("Connection", "DBHost", tb_Host.Text);
iniFileGPRS.WriteValue("Connection", "DBPWD", mtb_pwd.Text);
iniFileGPRS.WriteValue("Connection", "DataBase", tb_db.Text);*/
log("抄表事件服务参数配置完成!");
//前置机 --------------------------------------------------------------------------------------------------------------------------------
try
{
tempPath = parentPath + "\\Release\\conn.properties";
FileStream aFile = new FileStream(tempPath, FileMode.Create);
StreamWriter sw = new StreamWriter(aFile);
sw.WriteLine("driver = com.mysql.jdbc.Driver");
sw.WriteLine("url = jdbc:mysql://" + tb_Host.Text.Trim() + ":3306/" + tb_db.Text.Trim() + "?connectTimeout=60&socketTimeout=6000&useSSL=false");
sw.WriteLine("user = " + tb_user.Text.Trim());
sw.WriteLine("pwd = " + mtb_pwd.Text.Trim());
sw.WriteLine("language = " + this.language);
sw.WriteLine("opcControl = false");
sw.WriteLine("MControlTiming15 = false");
sw.WriteLine("MControlTiming60 = false");
sw.WriteLine("ForWard485 = false");
sw.WriteLine("LampTiming = false");
sw.WriteLine("LampDay3761Timing =false");
sw.WriteLine("TerminalDay3761Timing =false");
sw.WriteLine("AnalysisOfTunnelElectricity=true");
sw.Close();
/*String releasePath = parentPath + "\\Release\\conn.properties";
String[] datas = Main.load(releasePath);
if (datas != null)
{
StringBuilder sb = new StringBuilder();
for (int c = 0; c < datas.Length; c++)
{
if (datas[c].Trim() == "")
{
continue;
}
if (datas[c].StartsWith("driver"))
{
datas[c] = "driver = com.mysql.jdbc.Driver";
}
if (datas[c].StartsWith("url"))
{
datas[c] = "url = jdbc:mysql://" + tb_Host.Text.Trim() + ":3306/" + tb_db.Text.Trim()
+ "?connectTimeout=60&socketTimeout=6000&useSSL=false";
}
if (datas[c].StartsWith("user"))
{
datas[c] = "user = " + tb_user.Text.Trim();
}
if (datas[c].StartsWith("pwd"))
{
datas[c] = "pwd = " + mtb_pwd.Text.Trim();
}
if (datas[c].StartsWith("language"))
{
datas[c] = "language = " + this.language;
}
sb.Append(datas[c].Trim()).Append(System.Environment.NewLine);
}
File.WriteAllText(releasePath, sb.ToString(), System.Text.Encoding.UTF8);
}*/
log("GPRS前置机参数配置完成!");
}
catch (Exception ex)
{
MessageBox.Show(Properties.Resources. + ":\r\n" + ex.Message.ToString());
return;
}
MessageBox.Show(Properties.Resources. + "," + Properties.Resources. + "!",Properties.Resources.);
}
public static string[] load(string file)
{
SortedList list = new SortedList();
string content = null;
try
{
content = File.ReadAllText(file, System.Text.Encoding.UTF8);
}
catch (Exception e)
{
return null;
}
return content.Split('\n');
}
private string getUTF8String(string s)
{
return s;
}
private void log(String str)
{
Console.WriteLine(str);
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
if (Sqlconn != null)
{
if (Sqlconn.State == System.Data.ConnectionState.Open)
{
Sqlconn.Close();
}
}
}
private void bt_choose_Click_1(object sender, EventArgs e)
{
FolderBrowserDialog dlgOpenFolder = new FolderBrowserDialog();
dlgOpenFolder.SelectedPath = Environment.CurrentDirectory;
dlgOpenFolder.ShowNewFolderButton = true;
if (dlgOpenFolder.ShowDialog(this) == DialogResult.OK)
{
tb_path.Text = dlgOpenFolder.SelectedPath;
}
}
private void bt_createtask_Click(object sender, EventArgs e)
{
if (connectDB().Trim().Length > 0)
{
MessageBox.Show(Properties.Resources. + "!",Properties.Resources.);
return;
}
String backupPath = tb_path.Text.Replace("\\", "/");
String startTime = dTP_time.Text.Replace(" ", "T");
// 备份 mysql 数据库
String batPath = parentPath + "\\DB\\mysql_backup.bat";
String[] datas = Main.load(batPath);
if (datas != null)
{
StringBuilder sb = new StringBuilder();
for (int c = 0; c < datas.Length; c++)
{
if (datas[c].Trim() == "")
{
continue;
}
if (datas[c].Contains("mysql_backup"))
{
datas[c] = "mysqldump -u" + tb_user.Text.Trim() + " -p" + mtb_pwd.Text.Trim() + " " + tb_db.Text.Trim()
+ " -R -E > " + backupPath + "/mysql_backup_%yMd%-%hms%.sql";
}
sb.Append(datas[c].Trim()).Append(System.Environment.NewLine);
}
File.WriteAllText(batPath, sb.ToString(), System.Text.Encoding.UTF8);
}
// 清理 7 天前的备份脚本
String cleanPath = parentPath + "\\DB\\mysql_backup_clean.bat";
String[] cleanDatas = Main.load(cleanPath);
if (cleanDatas != null)
{
StringBuilder sb = new StringBuilder();
for (int c = 0; c < cleanDatas.Length; c++)
{
if (cleanDatas[c].Trim() == "")
{
continue;
}
if (cleanDatas[c].Contains("forfiles"))
{
cleanDatas[c] = "forfiles /p \"" + tb_path.Text + "\" /m *.sql /d -7 /c \"cmd /c del @path\"";
}
sb.Append(cleanDatas[c].Trim()).Append(System.Environment.NewLine);
}
File.WriteAllText(cleanPath, sb.ToString(), System.Text.Encoding.UTF8);
}
try
{
SchTaskExt.CreateTaskScheduler("admin", "backup", batPath, "PT24H", startTime);
SchTaskExt.CreateTaskScheduler("admin", "backup_clean", cleanPath, "PT24H", startTime);
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message.Trim());
return;
}
/*String strtime = dTP_time.Text.Replace(":","");
//删除 sql
String sql1 = "IF OBJECT_ID ('dbo.proc_DBMaintaince') IS NOT NULL " +
"DROP PROCEDURE dbo.proc_DBMaintaince ";
//备份数据库 sql
String sql2 = "CREATE PROCEDURE proc_DBMaintaince AS " +
"BEGIN " +
"DECLARE @sql VARCHAR(1000) " +
"SET @sql='backup database " + tb_db.Text + " to disk=''" + tb_path.Text + "\\' +rtrim(convert(CHAR(10),getdate(),112))+'.bak''' " +
"EXEC(@sql) " +
"Print 'Backup operation is completed' " +
"SET @sql='del " + tb_path.Text + "\\' +rtrim(convert(CHAR(10),getdate()-30,112)) +'.bak' " +
"EXEC master..xp_cmdshell @sql " +
"Print 'Delete operation to complete' " +
"End ";
//备份任务 sql
String sql3 =
"BEGIN TRANSACTION " +
" DECLARE @JobID BINARY(16) DECLARE @ReturnCode INT " +
" SELECT @ReturnCode = 0 " +
" SELECT @JobID = job_id FROM msdb.dbo.sysjobs WHERE (name = N'SAMR database backup') " +
" IF (@JobID IS NOT NULL) " +
" BEGIN " +
" IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0))) " +
" BEGIN " +
" RAISERROR (N'Unable to import the homework“SAMR database backup”,Task name repetition。', 16, 1) " +
" GoTo QuitWithRollback " +
" End Else " +
" EXECUTE msdb.dbo.sp_delete_job @job_name = N'SAMR database backup' " +
" SELECT @JobID = NULL " +
" End " +
" EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'SAMR database backup', @owner_login_name = N'sa', @description = N'No description available。', @category_name = N'Database Maintenance', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0 " +
" IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback " +
" EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID , @step_id = 1, @step_name = N'No.1', @command = N'EXEC proc_DBMaintaince', @database_name = N'samr', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 4, @retry_attempts = 0, @retry_interval = 0, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2 " +
" IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback " +
" EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1 " +
" IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback " +
" EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'No.1-1', @enabled = 1, @freq_type = 4, @active_start_date = 20140101, @active_start_time = " + strtime + ", @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959 " +
" IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback " +
" EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' " +
" IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback " +
"COMMIT TRANSACTION " +
" GoTo EndSave " +
"QuitWithRollback: " +
" IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION " +
"EndSave: ";
try
{
thiscommand = new SqlCommand();
thiscommand.Connection = Sqlconn;
log(sql1);
thiscommand.CommandText = sql1;
thiscommand.ExecuteNonQuery();
thiscommand.Dispose();
log(sql2);
thiscommand.CommandText = sql2;
thiscommand.ExecuteNonQuery();
thiscommand.Dispose();
log(sql3);
thiscommand.CommandText = sql3;
thiscommand.ExecuteNonQuery();
thiscommand.Dispose();
Sqlconn.Close();
}
catch (Exception ex)
{
MessageBox.Show(Properties.Resources.数据库备份失败 + "!" + ex.Message, Properties.Resources.提示信息);
return;
}*/
MessageBox.Show(Properties.Resources. + "!");
}
private void bt_backup_Click(object sender, EventArgs e)
{
if (connectDB().Trim().Length > 0)
{
MessageBox.Show(Properties.Resources. + "!", Properties.Resources.);
return;
}
/*String sqlBackUp = "declare " +
"@filename nvarchar(100) set @filename='" + tb_path.Text + "\\'+convert(char(6),getdate(),112)+'.bak' " +
" backup database " + tb_db.Text + " to disk= @filename ";*/
try
{
/*thiscommand = new SqlCommand();
thiscommand.Connection = Sqlconn;
thiscommand.CommandText = sqlBackUp;
thiscommand.ExecuteNonQuery();
thiscommand.Dispose();
Sqlconn.Close();*/
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
//启动程序
p.Start();
String backupPath = tb_path.Text.Replace("\\", "/");
String sqlPath = backupPath + "/mysql_backup.sql";
//向cmd窗口发送输入信息
p.StandardInput.WriteLine("mysqldump --no-data -u" + tb_user.Text.Trim() + " -p" + mtb_pwd.Text.Trim() + " --databases samr > " + sqlPath);
p.StandardInput.AutoFlush = true;
//获取输出信息
// string strOuput = p.StandardOutput.ReadToEnd();
//等待程序执行完退出进程
// p.WaitForExit();
p.Close();
}
catch (Exception ex)
{
MessageBox.Show(Properties.Resources. + "!"
+ ex.Message
// + "\r\n " + sqlBackUp
,Properties.Resources.);
return;
}
MessageBox.Show(Properties.Resources. + "!");
}
private void setJavaParameter()
{
string jdkPath = string.Empty;
if (bit64)
{
jdkPath = parentPath + "\\Java\\jdk1.7_64";
}
else
{
jdkPath = parentPath + "\\Java\\jdk1.7_32";
}
SysEnvironment sysEnvironment = new SysEnvironment();
log(jdkPath);
//JAVA_HOME
sysEnvironment.SetSysEnvironment("JAVA_HOME", jdkPath);
//CLASSPATH
sysEnvironment.SetSysEnvironment("CLASSPATH", "%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar;");
//Path
sysEnvironment.SetPathAfter("%JAVA_HOME%\\bin");
log("JAVA_HOME");
log(sysEnvironment.GetSysEnvironmentByName("JAVA_HOME"));
log("CLASSPATH");
log(sysEnvironment.GetSysEnvironmentByName("CLASSPATH"));
log("PATH");
log(sysEnvironment.GetSysEnvironmentByName("PATH"));
}
private void button1_Click(object sender, EventArgs e)
{
setJavaParameter();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
}
/// <summary>
/// 取消开机启动,删除注册表中的值
/// </summary>
public void CancleAutoRun()
{
try
{
string filepath = Assembly.GetExecutingAssembly().Location;
string runName = Path.GetFileNameWithoutExtension(filepath);
RegistryKey hkml = Registry.LocalMachine;
RegistryKey runKeys = hkml.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
runKeys.DeleteValue(runName);
}
catch
{ }
}
/// <summary>
/// 写进注册表,以便开机启动
/// </summary>
private void SetAutoStar()
{
try
{
string filepath = Assembly.GetExecutingAssembly().Location;
string runName = Path.GetFileNameWithoutExtension(filepath);
RegistryKey hkml = Registry.LocalMachine;
RegistryKey runKey = hkml.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
runKey.SetValue(runName, filepath);
runKey.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Main_Shown(object sender, EventArgs e)
{
if (autoRun) //自动运行
{
timer1.Enabled = true;
// startServiceAll();
// MessageBox.Show("autoRun!!", "提示", MessageBoxButtons.OK);
}
}
private void checkBox1_Click(object sender, EventArgs e)
{
try
{
if (checkBox1.Checked)
//添加到注册表中
{
SetAutoStar();
//保存参数
}
else
//删除注册表信息
{
CancleAutoRun();
}
String fileName = Directory.GetCurrentDirectory();
fileName += "\\system.ini";
INIFile iniFile = new INIFile(fileName);
iniFile.WriteValue("config", "autoRun", checkBox1.Checked);
}
catch
{
}
}
private void cb1_CheckedChanged(object sender, EventArgs e)
{
if (cb1.Checked)
{
this.language = "en";
}
else
{
this.language = "";
}
ApplyResource();
saveConfig();
}
private void ApplyResource()
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(this.language);
res = new ComponentResourceManager(typeof(Main));
foreach (Control ctl in Controls)
{
res.ApplyResources(ctl, ctl.Name);
}
res.ApplyResources(this, "$this");
res.ApplyResources(bt_start, bt_start.Name);
res.ApplyResources(bt_stop, bt_stop.Name);
res.ApplyResources(label1, label1.Name);
res.ApplyResources(label2, label2.Name);
res.ApplyResources(label3, label3.Name);
res.ApplyResources(label5, label5.Name);
res.ApplyResources(bt_test, bt_test.Name);
res.ApplyResources(btapply, btapply.Name);
res.ApplyResources(label4, label4.Name);
res.ApplyResources(label6, label6.Name);
res.ApplyResources(label7, label7.Name);
res.ApplyResources(bt_backup, bt_backup.Name);
res.ApplyResources(bt_createtask, bt_createtask.Name);
res.ApplyResources(cb1, cb1.Name);
res.ApplyResources(checkBox1, checkBox1.Name);
res.ApplyResources(baseurl_label, baseurl_label.Name);
res.ApplyResources(groupBox6, groupBox6.Name);
res.ApplyResources(cameraUrl_label, cameraUrl_label.Name);
res.ApplyResources(groupBox4, groupBox4.Name);
res.ApplyResources(button1, button1.Name);
res.ApplyResources(button4, button4.Name);
res.ApplyResources(label10, label10.Name);
res.ApplyResources(label8, label8.Name);
res.ApplyResources(mysql_install, mysql_install.Name);
res.ApplyResources(java_env_setting, java_env_setting.Name);
}
private void timer1_Tick(object sender, EventArgs e)
{
startServiceAll();
}
private void label11_Click(object sender, EventArgs e)
{
}
private void button1_Click_1(object sender, EventArgs e)
{
if (baseUrl.Text.Trim() == "")
{
MessageBox.Show(Properties.Resources. + "!");
return;
}
if (cameraUrl.Text.Trim() == "")
{
MessageBox.Show(Properties.Resources. + "!");
return;
}
String frontPath = parentPath + "\\nginx-1.18.0\\html\\mysql\\serverconfig.json";
String json = File.ReadAllText(frontPath, Encoding.Default);
/*JObject jOject = JObject.Parse(json);
jOject["baseUrl"] = baseUrl.Text.Trim();//替换需要的文件
jOject["cameraUrl"] = cameraUrl.Text.Trim();
string convertString = Convert.ToString(jOject);//将json装换为string*/
StringBuilder sb = new StringBuilder();
sb.Append("{\"baseUrl\":\"http://" + baseUrl.Text.Trim() + "/WebContent\"," +
"\"cameraUrl\":\"http://" + cameraUrl.Text.Trim() + "/nvc/LiveNVR001/api/v1\"}").Append(System.Environment.NewLine);
File.WriteAllText(frontPath, sb.ToString(), System.Text.Encoding.UTF8);
// 修改 nginx.conf 配置
String nginxPath = parentPath + "\\nginx-1.18.0\\conf\\nginx.conf";
String nginxTempPath = parentPath + "\\nginx-1.18.0\\conf\\nginx-temp.conf";
File.Copy(nginxPath, nginxTempPath, true);
FileStream fsReader = new FileStream(nginxTempPath, FileMode.OpenOrCreate, FileAccess.Read);
StreamReader sr = new StreamReader(fsReader, Encoding.Default);
FileStream fsWriter = new FileStream(nginxPath, FileMode.Create, FileAccess.Write);
StreamWriter ngSw = new StreamWriter(fsWriter, Encoding.Default);
// String[] ips = baseUrl.Text.Trim().Split(':');
String tempStr = "";
string str = string.Empty;
while ((str = sr.ReadLine()) != null)
{
if (tempStr.Contains("WebContent"))
{
// str = "\t\t\tproxy_pass\t http://" + ips[0] + ":8081;";
str = "\t\t\tproxy_pass\t http://" + baseUrl.Text.Trim() + ";";
}
ngSw.WriteLine(str);
tempStr = str;
}
ngSw.Flush();
ngSw.Close();
sr.Close();
MessageBox.Show(Properties.Resources. + "!");
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("保存连接数据库信息成功!");
}
private void tb_db_TextChanged(object sender, EventArgs e)
{
}
private void mtb_pwd_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Process proc = null;
try
{
String batPath = parentPath + "Java\\";
string targetDir = string.Format(@batPath);//this is where testChange.bat lies
proc = new Process();
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = "installJDK.bat";
//proc.StartInfo.Arguments = string.Format("10");//this is argument
//proc.StartInfo.CreateNoWindow = true;
//proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//这里设置DOS窗口不显示,经实践可行
proc.Start();
proc.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
}
}
private void button3_Click_1(object sender, EventArgs e)
{
Process proc = null;
try
{
String batPath = parentPath + "mysql-5.5.23\\";
string targetDir = string.Format(@batPath);//this is where testChange.bat lies
proc = new Process();
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = "MySQL_install.bat";
//proc.StartInfo.Arguments = string.Format("10");//this is argument
//proc.StartInfo.CreateNoWindow = true;
//proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//这里设置DOS窗口不显示,经实践可行
proc.Start();
proc.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
}
}
private void button4_Click(object sender, EventArgs e)
{
try
{
String tempPath = parentPath + "\\Release\\conn.properties";
FileStream aFile = new FileStream(tempPath, FileMode.Create);
StreamWriter sw = new StreamWriter(aFile);
sw.WriteLine("driver = com.mysql.jdbc.Driver");
sw.WriteLine("url = jdbc:mysql://" + tb_Host.Text.Trim() + ":3306/" + tb_db.Text.Trim() + "?connectTimeout=60&socketTimeout=6000&useSSL=false");
sw.WriteLine("user = " + tb_user.Text.Trim());
sw.WriteLine("pwd = " + mtb_pwd.Text.Trim());
sw.WriteLine("language = " + this.language);
sw.WriteLine("opcControl = false");
sw.WriteLine("MControlTiming15 = false");
sw.WriteLine("MControlTiming60 = false");
sw.WriteLine("ForWard485 = false");
sw.WriteLine("LampTiming = false");
sw.WriteLine("LampDay3761Timing =false");
sw.WriteLine("TerminalDay3761Timing =false");
sw.WriteLine("AnalysisOfTunnelElectricity=true");
sw.WriteLine("gprsIp="+ frontend_ip.Text.Trim());
sw.Close();
log("GPRS前置机参数配置完成!");
}
catch (Exception ex)
{
MessageBox.Show(Properties.Resources. + ":\r\n" + ex.Message.ToString());
return;
}
MessageBox.Show(Properties.Resources. + "," + Properties.Resources. + "!", Properties.Resources.);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void label8_Click(object sender, EventArgs e)
{
}
}
}