private void MainSetting_Load(object sender, EventArgs e) { //700*460 this.Text = this.Text + " v1.1"; this.Icon = Resources.logo; this.Step2.Visible = false; this.Step3.Visible = false; this.Step4.Visible = false; this.Step5.Visible = false; #region 默认设定 splitContainer1.IsSplitterFixed = true; DIR_TOMCAT.Text = Application.StartupPath + "\\Tomcat"; DIR_JDK.Text = Application.StartupPath + "\\Jdk"; DIR_MYSQL.Text = Application.StartupPath + "\\Mysql"; DIR_MEMCACHE.Text = Application.StartupPath + "\\Memcached"; DIR_INSTALL.Text = Application.StartupPath + "\\Project\\install"; DIR_PROJECT.Text = Application.StartupPath + "\\Project\\ROOT"; DIR_LIB.Text = Application.StartupPath + "\\Project\\lib"; DIR_SQL.Text = Application.StartupPath + "\\Project\\SQL"; CONFIG_FILE.Text = Application.StartupPath + "\\Project\\ROOT\\WEB-INF\\classes\\config.properties"; FileInfo f = new FileInfo(CONFIG_FILE.Text); if (f.Exists == true && File.Exists(Application.StartupPath + "\\Properties.XML") == false) { //读取配置文件 String[] value = File.ReadAllLines(f.FullName); Dictionary <String, String> ht = new Dictionary <String, String>(); foreach (String item in value) { if (item.IndexOf('#') == 0 || item.IndexOf('=') == -1) { continue; } ht.Add(item.Substring(0, item.IndexOf('=')).Trim(), item.Substring(item.IndexOf('=') + 1).Trim()); } foreach (KeyValuePair <String, String> item in ht) { ConfigSetting.ConfigRow bcsr = this.configSetting.Config.NewConfigRow(); bcsr.Puk = this.configSetting.Config.Rows.Count; bcsr.Key = item.Key; bcsr.Value = item.Value; this.configSetting.Config.AddConfigRow(bcsr); } this.configSetting.Config.WriteXml("Properties.XML"); this.configSetting.Config.Clear(); } //数据库配置 try { FileInfo d = new FileInfo(Application.StartupPath + "\\Project\\install\\WEB-INF\\classes\\jdbc.properties"); //读取配置文件 String[] value = File.ReadAllLines(d.FullName); Dictionary <String, String> ht = new Dictionary <String, String>(); foreach (String item in value) { if (item.IndexOf('#') == 0 || item.IndexOf('=') == -1) { continue; } ht.Add(item.Substring(0, item.IndexOf('=')).Trim(), item.Substring(item.IndexOf('=') + 1).Trim()); } DB_DRIVER.Text = ht["work.driverClassName"]; DB_URI.Text = ht["work.url"]; DB_USER.Text = ht["work.username"]; DB_PWD.Text = ht["work.password"]; } catch (Exception) { } #endregion try { this.configSetting.Config.ReadXml("Properties.XML"); } catch (Exception) { } try { ConfigSetting.ConfigDataTable bcs = new ConfigSetting.ConfigDataTable(); bcs.ReadXml("Config.XML"); Dictionary <String, String> ht = new Dictionary <String, String>(); foreach (ConfigSetting.ConfigRow item in bcs.Rows) { ht.Add(item.Key, item.Value); } DIR_TOMCAT.Text = ht[DIR_TOMCAT.Name]; DIR_JDK.Text = ht[DIR_JDK.Name]; DIR_MYSQL.Text = ht[DIR_MYSQL.Name]; DIR_MEMCACHE.Text = ht[DIR_MEMCACHE.Name]; DIR_LIB.Text = ht[DIR_LIB.Name]; DIR_INSTALL.Text = ht[DIR_INSTALL.Name]; DIR_SQL.Text = ht[DIR_SQL.Name]; DIR_PROJECT.Text = ht[DIR_PROJECT.Name]; TOMCAT_OTHER.Text = ht[TOMCAT_OTHER.Name]; TOMCAT_RUN.Text = ht[TOMCAT_RUN.Name]; TOMCAT_RUN_SAFE.Text = ht[TOMCAT_RUN_SAFE.Name]; TOMCAT_SHUTDOWN.Text = ht[TOMCAT_SHUTDOWN.Name]; MEM_RUN.Text = ht[MEM_RUN.Name]; MEM_SIZE.Text = ht[MEM_SIZE.Name]; CONFIG_FILE.Text = ht[CONFIG_FILE.Name]; DB_DRIVER.Text = ht[DB_DRIVER.Name]; DB_URI.Text = ht[DB_URI.Name]; DB_USER.Text = ht[DB_USER.Name]; DB_PWD.Text = ht[DB_PWD.Name]; } catch (Exception) { } }
private void Install_Click(object sender, EventArgs e) { try { if (VERSION_TARGET.SelectedIndex < 0) { MessageBox.Show("请选择发布版本", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } #region 保存配置 { this.configSetting.Config.WriteXml("Properties.XML"); SetMessage("参数配置保存完成", 10); ///////////////////////////////////////////// Dictionary <String, String> ht = new Dictionary <String, String>(); ht.Add(DIR_TOMCAT.Name, DIR_TOMCAT.Text); ht.Add(DIR_JDK.Name, DIR_JDK.Text); ht.Add(DIR_MEMCACHE.Name, DIR_MEMCACHE.Text); ht.Add(DIR_MYSQL.Name, DIR_MYSQL.Text); ht.Add(DIR_LIB.Name, DIR_LIB.Text); ht.Add(DIR_INSTALL.Name, DIR_INSTALL.Text); ht.Add(DIR_SQL.Name, DIR_SQL.Text); ht.Add(DIR_PROJECT.Name, DIR_PROJECT.Text); ht.Add(TOMCAT_OTHER.Name, TOMCAT_OTHER.Text); ht.Add(TOMCAT_RUN.Name, TOMCAT_RUN.Text); ht.Add(TOMCAT_RUN_SAFE.Name, TOMCAT_RUN_SAFE.Text); ht.Add(TOMCAT_SHUTDOWN.Name, TOMCAT_SHUTDOWN.Text); ht.Add(MEM_RUN.Name, MEM_RUN.Text); ht.Add(MEM_SIZE.Name, MEM_SIZE.Text); ht.Add(CONFIG_FILE.Name, CONFIG_FILE.Text); ht.Add(DB_DRIVER.Name, DB_DRIVER.Text); ht.Add(DB_URI.Name, DB_URI.Text); ht.Add(DB_USER.Name, DB_USER.Text); ht.Add(DB_PWD.Name, DB_PWD.Text); ConfigSetting.ConfigDataTable bcs = new ConfigSetting.ConfigDataTable(); foreach (KeyValuePair <String, String> item in ht) { ConfigSetting.ConfigRow bcsr = bcs.NewConfigRow(); bcsr.Puk = bcs.Rows.Count; bcsr.Key = item.Key; bcsr.Value = item.Value; bcs.AddConfigRow(bcsr); } bcs.WriteXml("Config.XML"); SetMessage("环境配置保存完成", 20); } #endregion #region 设定配置 { #region 设定系统参数 FileInfo f = new FileInfo(CONFIG_FILE.Text); if (f.Exists == false) { MessageBox.Show("请正确设定系统核心配置文件路径"); CONFIG_FILE.Focus(); return; } StringBuilder sb = new StringBuilder(); foreach (ConfigSetting.ConfigRow item in configSetting.Config.Rows) { sb.AppendLine(item.Key + "=" + item.Value); } File.WriteAllText(CONFIG_FILE.Text, sb.ToString()); SetMessage("系统参数设定成功", 30); #endregion } String ApplicationDriver = Application.StartupPath.Substring(0, 2); { #region 设定TOMCAT端口 DirectoryInfo di = new DirectoryInfo(DIR_TOMCAT.Text); if (di.Exists == false) { MessageBox.Show("请正确设定Tomcat目录"); DIR_TOMCAT.Focus(); return; } if (File.Exists(di.FullName + "\\conf\\server-bak.xml") == false) { File.Copy(di.FullName + "\\conf\\server.xml", di.FullName + "\\conf\\server-bak.xml"); } else { File.Copy(di.FullName + "\\conf\\server-bak.xml", di.FullName + "\\conf\\server.xml", true); } FileInfo f = new FileInfo(di.FullName + "\\conf\\server.xml"); String value = File.ReadAllText(f.FullName); value = value.Replace("8005", TOMCAT_SHUTDOWN.Text).Replace("8080", TOMCAT_RUN.Text).Replace("8443", TOMCAT_RUN_SAFE.Text).Replace("8009", TOMCAT_OTHER.Text); File.WriteAllText(f.FullName, value); SetMessage("TOMCAT端口设定成功", 40); #endregion } { DirectoryInfo di; ConfigSetting.ConfigDataTable scs = new ConfigSetting.ConfigDataTable(); #region 获得SQL清单 { //发布路径设定 //org.isotopes.jfp.business.install.sql String newName = DIR_INSTALL.Text + "\\WEB-INF\\classes\\org\\isotopes\\jfp\\business\\install\\sql\\"; Directory.CreateDirectory(newName); //制作SQL清单配置(需要插入到数据库) foreach (String ditem in Directory.GetDirectories(DIR_SQL.Text)) { di = new DirectoryInfo(ditem); foreach (FileInfo fitem in di.GetFiles("*.sql")) { ConfigSetting.ConfigRow scsr = scs.NewConfigRow(); scsr.Puk = scs.Rows.Count; scsr.Key = fitem.Name; scsr.Value = (fitem.Length / 1024).ToString(); scs.AddConfigRow(scsr); //根据版本ID判断是否运行 fitem.CopyTo(newName + fitem.Name, true); } if (ditem.IndexOf(VERSION_TARGET.Text) > 0) { break; } } } //创建备份目录 if (Directory.Exists(Application.StartupPath + "\\BAK")) { Directory.Delete(Application.StartupPath + "\\BAK", true); } Directory.CreateDirectory(Application.StartupPath + "\\BAK"); //Directory.Move(DIR_SQL.Text,Application.StartupPath+"\\BAK\\SQL"); scs.WriteXml("Version.XML"); SetMessage("版本升级发布清单制作成功", 45); //拷贝SQL清单 //File.Move("Version.XML", DIR_INSTALL.Text + "\\WEB-INF\\classes\\Version.XML"); SetMessage("版本发布准备成功", 50); #endregion #region 部署运行 //拷贝ROOT SetMessage("开始发布项目...", 55); if (DIR_PROJECT.Text.EndsWith("ROOT")) { if (Directory.Exists(DIR_TOMCAT.Text + "\\webapps\\ROOT")) { Directory.Delete(DIR_TOMCAT.Text + "\\webapps\\ROOT", true); } } di = new DirectoryInfo(DIR_PROJECT.Text); CopyDirectory(DIR_PROJECT.Text, DIR_TOMCAT.Text + "\\webapps\\" + di.Name); //移动工程 //Directory.Move(DIR_PROJECT.Text, Application.StartupPath + "\\BAK\\" + di.Name);//移动工程 CopyDirectory(DIR_LIB.Text, DIR_TOMCAT.Text + "\\webapps\\" + di.Name + "\\WEB-INF\\lib"); //拷贝lib SetMessage("项目发布成功!", 60); //拷贝install FileInfo d = new FileInfo(Application.StartupPath + "\\Project\\install\\WEB-INF\\classes\\jdbc.properties"); StringBuilder sb = new StringBuilder(); sb.AppendLine("work.driverClassName=" + DB_DRIVER.Text); sb.AppendLine("work.url=" + DB_URI.Text); sb.AppendLine("work.username="******"work.password="******"开始发布安装环境...", 65); di = new DirectoryInfo(DIR_INSTALL.Text); CopyDirectory(DIR_INSTALL.Text, DIR_TOMCAT.Text + "\\webapps\\" + di.Name); //Directory.Move(DIR_INSTALL.Text, Application.StartupPath + "\\BAK\\" + di.Name); CopyDirectory(DIR_LIB.Text, DIR_TOMCAT.Text + "\\webapps\\" + di.Name + "\\WEB-INF\\lib"); //Directory.Move(DIR_LIB.Text, Application.StartupPath + "\\BAK\\lib"); SetMessage("安装环境发布成功", 70); #region 注册缓存服务 sb = new StringBuilder(); sb.AppendLine(ApplicationDriver); sb.AppendLine("cd " + DIR_MEMCACHE.Text); sb.AppendLine("memcached.exe -d install"); DosCommandUtils.DoDosCMD(sb.ToString()); if (WindowsServiceUtils.IsServiceIsExisted("memcached") == false) { SetMessage("缓存服务注册失败,请手动解决!", 75); MessageBox.Show("缓存服务注册失败,请手动解决!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } SetMessage("缓存服务注册成功", 75); //修改注册表 RegistUtils.SetMemcachedRegist(DIR_MEMCACHE.Text + "\\memcached.exe", Int32.Parse(MEM_RUN.Text), Int32.Parse(MEM_SIZE.Text)); //ServiceController psc = new ServiceController("memcached"); //String[] CommandLine = new String[1]; //CommandLine[0] = " -p 8848 -m 256"; //psc.Start(CommandLine); sb = new StringBuilder(); sb.AppendLine("net start memcached"); DosCommandUtils.DoDosCMD(sb.ToString()); if (WindowsServiceUtils.IsServiceStart("memcached") == false) { SetMessage("缓存服务启动失败,请手动解决!", 80); MessageBox.Show("缓存服务启动失败,请手动解决!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } SetMessage("缓存服务启动成功", 80); #endregion //注册TOMCAT服务 sb = new StringBuilder(); sb.AppendLine(ApplicationDriver); sb.AppendLine("cd " + this.DIR_MEMCACHE.Text); sb.AppendLine("set JAVA_HOME=" + DIR_JDK.Text); sb.AppendLine("call service.bat install " + SERVICE_NAME.Text); DosCommandUtils.DoDosCMD(sb.ToString()); if (WindowsServiceUtils.IsServiceIsExisted(SERVICE_NAME.Text) == false) { SetMessage("TOMCAT注册失败,请手动解决!", 85); MessageBox.Show("TOMCAT注册失败,请手动解决!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } SetMessage("TOMCAT注册成功", 85); //启动TOMCAT sb = new StringBuilder(); sb.AppendLine("net start " + SERVICE_NAME.Text); DosCommandUtils.DoDosCMD(sb.ToString()); if (WindowsServiceUtils.IsServiceStart(SERVICE_NAME.Text) == false) { SetMessage("TOMCAT启动失败,请手动解决!", 90); MessageBox.Show("TOMCAT启动失败,请手动解决!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } SetMessage("TOMCAT启动成功", 90); //运行IE,请求安装SQL //http://127.0.0.1:8080/install/DBC/Init.go //http://127.0.0.1:8888/DBC/Init.go Boolean bk = ServerServiceUtils.ServerDownloadString("http://127.0.0.1:" + TOMCAT_RUN.Text + "/DBC/Init.go"); if (bk) { SetMessage("数据库安装成功", 95); //安装成功后,删除SQL文件 di = new DirectoryInfo(DIR_INSTALL.Text); String newName = DIR_TOMCAT.Text + "\\webapps\\" + di.Name + "\\WEB-INF\\classes\\org\\isotopes\\jfp\\business\\install\\sql\\"; Directory.Delete(newName, true); SetMessage("部署成功,请登录系统", 100); MessageBox.Show("部署成功,请登录系统", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information); System.Diagnostics.Process.Start("http://127.0.0.1:" + TOMCAT_RUN.Text); Application.Exit(); } else { MessageBox.Show("发生未知错误,请检查TOMCAT下面相关日志!\r\n", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); } #endregion } #endregion } catch (Exception Ex) { MessageBox.Show("发生未知错误,请联系管理员!\r\n" + Ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); } }