Example #1
0
        private void Step(int step)
        {
            this["Version"] = TType <HttpModule> .Type.Assembly.GetName().Version.ToString(3);

            switch (step)
            {
            case 2:
            {
                int           error   = 0;
                StringBuilder builder = new StringBuilder();
                string        str     = "App_Data,Bin,themes,uploads,runtime";
                foreach (string str2 in str.Split(','))
                {
                    if (!SystemFolderCheck(str2))
                    {
                        builder.Append(string.Concat("<li><cite><img src=\"", GetRes("static/images/error.gif"), "\" alt=\"失败\"/></cite><a href=\"#\">对 ", str2, " 目录没有写入和删除权限!</a></li>"));
                        error = 1;
                    }
                    else
                    {
                        builder.Append(string.Concat("<li><cite><img src=\"", GetRes("static/images/ok.gif"), "\" alt=\"成功\"/></cite><a href=\"#\">对 ", str2, " 目录权限验证通过!</a></li>"));
                    }
                }
                if (!TempTest())
                {
                    builder.Append(string.Concat("<li><cite><img src=\"", GetRes("static/images/error.gif"), "\" alt=\"失败\"/></cite><a href=\"#\">>您没有对 ", Path.GetTempPath(), " 文件夹访问权限,详情参见安装文档.</a></li>"));
                    error = 1;
                }
                else
                {
                    builder.Append(string.Concat("<li><cite><img src=\"", GetRes("static/images/ok.gif"), "\" alt=\"成功\"/></cite><a href=\"#\">反序列化验证通过!</a></li>"));
                }
                this["SystemValidCheck"] = builder.ToString();
                this["IsError"]          = error.ToString();
            }
            break;

            case 3:
            {
                bool                      unused;
                string                    ns;
                Assembly                  asm;
                Module                    module;
                string                    table;
                Regex                     regex  = new Regex(@",\s*");
                StringBuilder             sb     = new StringBuilder();
                Dictionary <string, bool> tables = GetAllTables();
                foreach (FileInfo file in ModuleInfo.GetAllFiles(Context))
                {
                    ns  = string.Concat(file.Name.Substring(0, file.Name.Length - file.Extension.Length + 1), "Modules");
                    asm = Assembly.LoadFrom(file.FullName);
                    foreach (TypeInfo type in asm.DefinedTypes)
                    {
                        if (type.IsClass &&
                            type.IsPublic &&
                            !type.IsAbstract &&
                            string.Equals(type.Namespace, ns, StringComparison.OrdinalIgnoreCase) &&
                            TType <Module> .Type.IsAssignableFrom(type.UnderlyingSystemType))
                        {
                            module = (Module)Activator.CreateInstance(type.UnderlyingSystemType);
                            if (module.CanInstall)
                            {
                                table = module.GetTableName();
                                sb.Append("<li><input id=\"");
                                sb.Append(type.UnderlyingSystemType.Name);
                                sb.Append("\" name=\"Module\" class=\"module\" type=\"checkbox\" checked=\"checked\" value=\"");
                                sb.Append(regex.Replace(type.UnderlyingSystemType.ToString(true), ";"));
                                sb.Append("\" /><label for=\"");
                                sb.Append(type.UnderlyingSystemType.Name);
                                sb.Append("\">");
                                sb.Append(table);
                                sb.Append("</label><span>");
                                if (tables.TryGetValue(table, out unused))
                                {
                                    sb.Append("已存在");
                                }
                                sb.Append("</span></li>");
                            }
                        }
                    }
                }
                this["Modules"] = sb.ToString();
            }
            break;

            case 4:
                InstallDatabase();
                break;

            case 5:
            {
                string username = Request.Form["adminName"];
                if (string.IsNullOrEmpty(username))
                {
                    throw new ArgumentException("管理员名称格式错误", "adminName");
                }
                string password = Request.Form["adminPassword"];
                if (string.IsNullOrEmpty(password))
                {
                    throw new ArgumentException("管理员密码格式错误", "adminPassword");
                }
                string confirmpwd = Request.Form["confirmPassword"];
                if (!password.Equals(confirmpwd))
                {
                    throw new ArgumentException("两次密码不一致", "confirmPassword");
                }
                (new Admin()
                    {
                        Name = username,
                        Password = password,
                        RoleId = 1,
                        CreationDate = DateTime.Now,
                        Email = "*****@*****.**"
                    }).Insert(DataSource);
                this["UserName"] = username;
                this["Password"] = password;
            }
            break;
            }
            RenderTemplate(string.Concat("install_", step.ToString(), ".html"));
        }