您现在的位置是:首页 > 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内核开发的集团级企业网站模板,采用响应式设计架构,确保在各类移动设备上获得浏览体验。通过模块化布局与简约大气的视觉风格,帮助集团企业高效展示组织架构、发展历程和业务矩阵,建立专业的企业形象窗口。查看源码
  • (PC+WAP)玻璃钢不锈钢钢材环保设备pbootcms网站模板采用PbootCMS内核开发的响应式网站模板,为玻璃钢环保设备制造、不锈钢钢材贸易企业设计,适配产品展示及企业服务场景。通过自适应技术实现PC与WAP端数据实时同步查看源码
  • (自适应响应式)双语LED照明灯饰灯具外贸网站pbootcms源码下载模板采用响应式设计,能自动适应手机、平板和电脑等多种设备屏幕,确保用户在不同设备上都能获得良好的浏览体验。同一后台管理,数据实时同步,操作简便高效。查看源码
  • (自适应响应式)装修装潢设计公司网站源码下载本模板为装修设计企业打造,采用PbootCMS内核开发,整体设计突出空间美学与功能性结合。首页采用大图轮播展示工程案例,服务项目模块支持三维效果展示,呈现装修设计企业的专业形象与技术实力。查看源码
  • (PC+WAP)绿色环保建筑设备通用行业pbootcms源码下载通过模块调整可适配园林景观、装配式建筑、绿色装修等生态建设相关领域。预制绿色建材展示、能耗模拟等专业模块,集成项目案例、环保工艺等建筑行业特色内容结构,测试数据包含LEED认证体系查看源码
  • (PC+WAP)盆栽绿植观赏植物花卉租赁免费pbootcms网站模板为花卉盆栽租赁、园林绿化企业打造的PbootCMS网站模板,采用较新内核开发,PC与移动端数据实时同步。通过清新自然的视觉设计,精准展现植物养护、花卉展示等业务场景,帮助用户快速建立专业级行业网站。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐