private void inConfig(string iPath, ServerType iType, ApproNum iNum, int iPort, CharSet iChar) { var iIni = new clsINI(iPath + "\\bin\\my.ini"); //This will effect about 7 values switch (iType) { case ServerType.Server: iIni.IniWriteValue("mysqld", "tmp_table_size", "205M"); iIni.IniWriteValue("mysqld", "myisam_sort_buffer_size", "410M"); iIni.IniWriteValue("mysqld", "key_buffer_size", "354M"); iIni.IniWriteValue("mysqld", "innodb_additional_mem_pool_size", "15M"); iIni.IniWriteValue("mysqld", "innodb_log_buffer_size", "7M"); iIni.IniWriteValue("mysqld", "innodb_buffer_pool_size", "686M"); iIni.IniWriteValue("mysqld", "innodb_log_file_size", "343M"); break; case ServerType.Developer: //It is the default set of the my.ini setting , so do nothing break; case ServerType.Dedicated_MySQL_Server: iIni.IniWriteValue("mysqld", "tmp_table_size", "369M"); iIni.IniWriteValue("mysqld", "myisam_sort_buffer_size", "738M"); iIni.IniWriteValue("mysqld", "key_buffer_size", "641M"); iIni.IniWriteValue("mysqld", "innodb_additional_mem_pool_size", "26M"); iIni.IniWriteValue("mysqld", "innodb_log_buffer_size", "13M"); iIni.IniWriteValue("mysqld", "innodb_buffer_pool_size", "1242M"); iIni.IniWriteValue("mysqld", "innodb_log_file_size", "621M"); break; } if (iNum == ApproNum.OLTP) { iIni.IniWriteValue("mysqld", "max_connections", "700"); iIni.IniWriteValue("mysqld", "query_cache_size", "18M"); iIni.IniWriteValue("mysqld", "table_cache", "1400"); iIni.IniWriteValue("mysqld", "tmp_table_size", "16M"); iIni.IniWriteValue("mysqld", "thread_cache_size", "34"); } switch (iChar) { case CharSet.big5: iIni.IniWriteValue("mysql", "default-character-set", "big5"); iIni.IniWriteValue("mysqld", "character-set-server", "big5"); break; case CharSet.utf8: //default value break; case CharSet.gbk: iIni.IniWriteValue("mysql", "default-character-set", "gbk"); iIni.IniWriteValue("mysqld", "character-set-server", "gbk"); break; case CharSet.Latin1: iIni.IniWriteValue("mysql", "default-character-set", "latin1"); iIni.IniWriteValue("mysqld", "character-set-server", "latin1"); break; } iIni.IniWriteValue("mysqld", "port", iPort.ToString(CultureInfo.InvariantCulture)); }
/// <summary> /// Install Mysql X86/X64 will auto detected and install. /// </summary> /// <param name="iPath"> The path you want to install </param> /// <param name="iType"> Database Mechine Type, Developer is enough </param> /// <param name="iNum"> OLAP/OLTP </param> /// <param name="iPort"> Listening port </param> /// <param name="iChar"> character-set-server </param> public void Install(string iPath, ServerType iType = ServerType.Developer, ApproNum iNum = ApproNum.OLAP, int iPort = 9998, CharSet iChar = CharSet.Latin1) { //Deal with "\" for some baby programmer:) if (iPath.EndsWith("\\")) { iPath = iPath.Substring(0, iPath.Length - 1); } var i7Z = new clsSevenZip(); //Need Install as following list //1. CORE.PART //2. 32.PART //3. 64.PART //4. my.ini i7Z.Initialize(); //First Copy files from the resources byte[] iSave = Resources.core; var fsObj = new FileStream(Environment.CurrentDirectory + "\\core.part", FileMode.Create); fsObj.Write(iSave, 0, iSave.Length); fsObj.Close(); //Call clsSevenZip i7Z.ExtractFile(Environment.CurrentDirectory + "\\core.part", iPath); File.Delete(Environment.CurrentDirectory + "\\core.part"); //Detect the system version 32/64 if (!clsOS.InternalCheckIsWow64()) { byte[] iSave32 = Resources._32; var fsObj32 = new FileStream(Environment.CurrentDirectory + "\\32.part", FileMode.Create); fsObj32.Write(iSave32, 0, iSave32.Length); fsObj32.Close(); i7Z.ExtractFile(Environment.CurrentDirectory + "\\32.part", iPath); File.Delete(Environment.CurrentDirectory + "\\32.part"); byte[] iSave32a = Resources.mysqladmin32; var fsObj32a = new FileStream(Environment.CurrentDirectory + "\\mysqladmin32.part", FileMode.Create); fsObj32a.Write(iSave32a, 0, iSave32a.Length); fsObj32a.Close(); i7Z.ExtractFile(Environment.CurrentDirectory + "\\mysqladmin32.part", iPath + "\\bin"); File.Delete(Environment.CurrentDirectory + "\\mysqladmin32.part"); } else { byte[] iSave64 = Resources._64; var fsObj64 = new FileStream(Environment.CurrentDirectory + "\\64.part", FileMode.Create); fsObj64.Write(iSave64, 0, iSave64.Length); fsObj64.Close(); i7Z.ExtractFile(Environment.CurrentDirectory + "\\64.part", iPath); File.Delete(Environment.CurrentDirectory + "\\64.part"); byte[] iSave64a = Resources.mysqladmin64; var fsObj64a = new FileStream(Environment.CurrentDirectory + "\\mysqladmin64.part", FileMode.Create); fsObj64a.Write(iSave64a, 0, iSave64a.Length); fsObj64a.Close(); i7Z.ExtractFile(Environment.CurrentDirectory + "\\mysqladmin64.part", iPath + "\\bin"); File.Delete(Environment.CurrentDirectory + "\\mysqladmin64.part"); } i7Z.Release(); //Release my.ini to config Mysql byte[] iSavei = Resources.my; var fsObji = new FileStream(iPath + "\\bin\\my.ini", FileMode.Create); fsObji.Write(iSavei, 0, iSavei.Length); fsObji.Close(); //And We need config default value to make no error. var iIni = new clsINI(iPath + "\\bin\\my.ini"); iPath = iPath.Replace("\\", "/"); iIni.IniWriteValue("mysqld", "basedir", "\"" + iPath + "/\""); iIni.IniWriteValue("mysqld", "datadir", "\"" + iPath + "/Data/\""); //Need config detailed. inConfig(iPath, iType, iNum, iPort, iChar); //All finished if (InstallComplete != null) { InstallComplete(); } }