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")); }