您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程

Discuz!NT网站安装自动化论坛程序安装及初始化过程

书雪2025-07-08Discuz教程已有人查阅

导读网站安装自动化--论坛程序安装及初始化过程论坛的安装文件位于Discuz.Web中的Instal文件夹中。该文件夹中的文件index.aspx为安装的起始页。

网站安装自动化--论坛程序安装及初始化过程论坛的安装文件位于Discuz.Web中的Instal文件夹中。该文件夹中的文件index.aspx为安装的起始页。
论坛程序的安装过程同样也要经过ReUrl_BeginRequest的处理。只是,ReUrl_BeginRequest没有对对页面/install/index.aspx的请求进行任何操作,因此我们在浏览器中看到的地址是:http://localhost:1543/install/index.aspx这种样式的。
安装起始页中没有进行什么操作可以简单地当作一个Html页面来看待。选中界面中的“ 接受”点击下一步,进入下一页:在代码中可以看到下一步按钮的信息如下:
<button type="button" name="next" id="next" disabled="disabled" onclick="location.href='step2.aspx'">下一步</button>
通过onclick将页面跳转到step2.aspx。废话不多说,开始安装
系统按照下边的过程完成安装
(1)环境检测
第二页的顶部有一行代码如下:
<%@ Page Language="c#" AutoEventWireup="false" Inherits="Discuz.Install.install" %>
这里定义了 ASP.NET 页分析器和编译器使用的页特定(.aspx 文件)属性。其中Inherits属性定义供页继承的代码隐藏类,这个类可以是从Page派生的任何类。Inherits="Discuz.Install.install"说明该页面继承自类Discuz.Install.install。这个类位于项目Discuz.Install中的step3.aspx.cs文件中。(不知道DNT为什么。明明是安装的第二页,非要放到step3.aspx.cs中)
用我的大白话说:这个页面中的函数都来自于step3.aspx.cs中的类install。
页面显示前,程序通过step3.aspx.cs文件中的install类的Page_Load函数加载了程序的一些配置信息,如连接字符串等。这些暂时都不需要的!
程序在step2.aspx页面中完成对安装环境的检测。step2.aspx中有一段代码是这样的:
<ul class="list">
<%
bool err = false;
Response.Write(SetupPage.InitialSystemValidCheck(ref err));
%>
</ul>
环境检测功能使用了Discuz.Install程序集中的SetupPage类中的函数。由于install类继承自SetupPage,所以这里可以直接使用SetupPage中的Public函数。
函数InitialSystemValidCheck完成对安装环境的检测。具体检测过程如下:
1、首先检测Bin目录下的DLL是由齐全:
通过函数IISSystemBINCheck(ref error)实现。
2、检测DNT.Config文件的有效性:
通过函数GetRootDntconfigPath()实现
3、检测程序文件目录(admin,aspx,avatars,cache,config,editor,images,templates,upload)的读写权限
通过循环调用函数SystemFolderCheck()来检测
4、检查对文件(admin\\xml\\navmenu.config,javascript\\common.js,install\\systemfile.aspx,upgrade\\systemfile.aspx)的读写权限
通过函数SystemFileCheck(file)来实现
5、检测对系统临时目录的读写权限
通过函数TempTest()实现
6、config文件反序列化检测
通过函数SerialiazeTest()实现
检查结果和样式信息保存在一个StringBuilder中永远用于输出。
如果这些检查都通过了,就可以进入下一步进入step3.aspx开始安装。
(2)配置数据库信息
step3.aspx页面头部也包含了:
<%@ Page Language="c#" Inherits="Discuz.Install.install" %>
该页面同样是继承自继承自类Discuz.Install.install。在这个页面加载前,程序首先读取默认的DNT.config文件中读取配置信息,提取连接字符串填充页面上的信息。实现如下:
//读取默认dnt.config文件内容
BaseConfigInfo dntConfigInfo = BaseConfigProvider.GetRealBaseConfig(); //读取DNT.config文件
if (dntConfigInfo != null)
{
FillDatabaseInfo(dntConfigInfo.Dbconnectstring);提取连接字符串
tablePrefix = dntConfigInfo.Tableprefix;
}
待用户填写自己的数据库配置信息后,通过函数EditDntConfig将配置信息保存到DNT.config文件中。
填写好这些信息之后,点击下一步 这里有个二次提交我不怎么理解。
根据跟踪结果,二次提交之后,首先将刚才的连接字符串填充到页面。之后通过FillDatabaseInfo()来检查刚才输入数据库信息是否正确:即是否能练到相应的数据库。如果数据库连接成功则通过下面的代码保存刚才的配置后,跳转到下一页:
EditDntConfig(Request["sql_ip"], Request["sql_username"], Request["sql_password"], Request["sql_name"], Request["table_prefix"]);
ClientScript.RegisterStartupScript(typeof(Page), "error", "location.href='step4.aspx'", true);
(3)配置论坛路径和管理员信息并执行脚本初始化数据库
页面step4.aspx继承自Discuz.Install.InstallStep4.这个页面完成数据库的初始化(建表和存储过程,表中输入管理员信息等)。Discuz.Install.InstallStep4同样是继承自SetupPage。页面重写了SetupPage中的Setup函数。在重写的函数从调用CreateTableAndSP() 和InitDB()函数完成数据库的初始化。
这两个函数是通过加载安装目录中表和存储过程的创建脚本来创建表的。加载完脚本,是由DbHelper.ExecuteCommandWithSplitter函数来执行脚本即完成了数据库的初始化工作。
初始化完成了,通过Server.Transfer("succeed.aspx", true);跳转到安装成功页面。
(4)到这里安装过程全部结束
Technorati 标签: DNT

本文标签:

很赞哦! ()

相关源码

  • (自适应响应式)陶瓷研磨盘抛光机械设备pbootcms网站模板本模板基于PbootCMS系统开发,为研磨抛光设备制造企业设计,特别适合陶瓷研磨盘、抛光设备等表面处理设备展示。采用响应式布局技术,确保各类设备的参数和工艺在不同终端上都能清晰呈现。查看源码
  • (PC+手机)帝国cms7.5漫画图片连载网站源码免费下载本模板基于帝国CMS7.5深度开发,为漫画阅读类网站打造。整体设计风格贴合漫画行业特性,界面布局充分考虑漫画作品的展示需求,支持多种漫画阅读模式。模板采用响应式设计,能够自动适配PC端和移动端设备,为读者提供流畅的阅读体验。查看源码
  • (自适应)WordPress主题SEO自媒体博客资讯模板RabbitV2.0Rabbit v2.0主题专注于网站搜索引擎优化需求,为博客、自媒体及资讯类网站提供专业的SEO技术解决方案。该主题从架构设计到功能实现均围绕搜索引擎优化理念展开。查看源码
  • (自适应)互联网建站网络公司个人工作室网站模板基于PbootCMS内核开发,围绕「技术方案展示」「成功案例库」「服务流程说明」三大模块构建,支持PC与移动端数据实时同步。附带包含客户评价、行业解决方案的完整测试数据包查看源码
  • (自适应响应式)HTML5甲醛环境检测网站模板带在线留言和资料下载本模板为甲醛检测与环保科技企业开发,采用PbootCMS内核构建。首页集成空气质量数据可视化模块,服务流程采用时间轴展示设计,检测报告板块支持PDF在线预览功能查看源码
  • (响应式)轴承机械五金零件产品pbootcms落地推广单页源码下载为轴承、机械零件等工业产品打造的响应式单页模板,基于PbootCMS内核开发,助力企业快速构建专业级产品展示页面。模板采用工业风设计语言,突出产品参数与性能优势,适用于设备制造商、零部件供应商等B2B场景推广。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐