Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        /// <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();
            }
        }