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.

144 lines
6.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Management;
using System.Threading;
namespace GummingConfig
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
this.Load += FormMain_Load;
}
private void FormMain_Load(object sender, EventArgs e)
{
}
private void btnExecute_Click(object sender, EventArgs e)
{
try
{
this.Enabled = false;
string connection = string.Format("Server={0};User={1};Password={2};Use Procedure Bodies=false;Charset=utf8;Allow Zero Datetime=True; Pooling=false; Max Pool Size=50;",
txtInstance.Text, txtUsername.Text, txtPassword.Text);
MysqlHelper.connectionString = connection;
try
{
MysqlHelper.ExecuteNonQuery("Drop DATABASE IF EXISTS habitusdb;");
}
catch { }
try
{
string basePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), @"MySQLServer");
string datafolder = Path.Combine(basePath, "data\\habitusdb");
System.IO.Directory.Delete(datafolder, true);
}
catch { }
MysqlHelper.ExecuteNonQuery("CREATE DATABASE IF NOT EXISTS habitusdb default character set utf8 COLLATE utf8_general_ci;");
connection = string.Format("Server={0};Database=habitusdb; User={1};Password={2};Use Procedure Bodies=false;Charset=utf8;Allow Zero Datetime=True; Pooling=false; Max Pool Size=50;",
txtInstance.Text, txtUsername.Text, txtPassword.Text);
MysqlHelper.connectionString = connection;
string sqlfile = Path.Combine(Environment.CurrentDirectory, "Database\\backup.sql");
if (!File.Exists(sqlfile))
throw new Exception("数据库文件不存在");
string sql = System.IO.File.ReadAllText(sqlfile);
sql = "use habitusdb;" + sql;
MysqlHelper.ExecuteNonQuery(sql);
MessageBox.Show("成功设置默认数据库,系统配置完成后请在桌面双击运行中医体质自动识别系统");
this.Close();
}
catch (Exception ep)
{
this.Enabled = true;
MessageBox.Show("发生异常: " + ep.Message);
}
}
private void btnInstall_Click(object sender, EventArgs e)
{
this.Enabled = false;
this.Cursor = Cursors.WaitCursor;
System.Diagnostics.Process.Start("regsvr32", "\"" + System.Windows.Forms.Application.StartupPath + "\\IRImage\\IRImage.OCX\" /s");
string str = string.Empty;
string query = "SELECT Name FROM Win32_Product WHERE Name LIKE '%MySQL Server%'";
var searcher = new ManagementObjectSearcher("root\\CIMV2", query);
foreach (ManagementObject service in searcher.Get())
{
str += service["Name"];
break;
}
if(string.IsNullOrEmpty(str))
{
string basePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), @"MySQLServer");
string inifile = Path.Combine(basePath, "my.ini");
StreamWriter sw = new StreamWriter(inifile, false);
sw.WriteLine("[client]");
sw.WriteLine("port=3306");
sw.WriteLine("default-character-set=utf8");
sw.WriteLine("[mysqld]");
sw.WriteLine("port=3306");
sw.WriteLine("character_set_server=utf8");
sw.WriteLine("basedir=" + basePath);
sw.WriteLine("datadir=" + Path.Combine(basePath, "data"));
sw.WriteLine("sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ");
sw.Flush();
sw.Close();
ExecCommand(Path.Combine(basePath, @"bin\mysqld.exe"), " install MySQL --defaults-file=\"" + inifile + "\"");
Process process = new Process();
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
process.StandardInput.WriteLine("cd\\");
process.StandardInput.WriteLine("net start mysql");
process.StandardInput.WriteLine("exit");
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
process.Close();
Thread.Sleep(3000);
MessageBox.Show("成功安装Mysql数据库请初始化数据库");
}
this.Enabled = true;
this.Cursor = Cursors.Arrow;
btnInstall.Enabled = false;
btnExecute.Enabled = true;
}
private void ExecCommand(string command, string parameter)
{
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(command, parameter);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
Thread.Sleep(10000);
proc.WaitForExit();
}
}
}