您现在的位置是:首页 > 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模板下载为中小学作文、教育类网站设计,特别适合展示学生作文、教学资源和写作指导等内容。采用响应式技术,确保在不同设备上都能获得良好的阅读体验。查看源码
  • 帝国cms7.5自适应作文新闻资讯教育网站模板本模板基于帝国CMS7.5内核开发,为教育机构、培训学校等知识传播单位打造。通过自适应设计确保在手机、平板、电脑等设备上均能获得专业浏览体验查看源码
  • (自适应)中英双语配线器材扎带线卡网站pbootcms模板免费下载为线缆管理、电气配线领域打造的响应式网站模板,采用PbootCMS内核开发,可快速搭建企业级产品展示平台,数据实时同步管理。查看源码
  • Wordpress博客新闻主题在线商店平台betheme 21.5.6版BeTheme是一款功能丰富的WordPress主题模板,专注于为各行业提供网站建设解决方案。该模板支持WooCommerce电子商务功能,能够快速搭建在线商店平台,同时适用于博客、新闻资讯类网站建设。自2014年发布以来,该模板已经获得大量用户的使用验证。查看源码
  • (PC+WAP)货物运输快递物流汽车贸易pbootcms模板下载为货运代理、汽车贸易及快递企业设计的全终端适配网站系统,整合运单追踪与车辆展示核心功能模块原生开发的DIV+CSS架构,支持WebP图像压缩技术。查看源码
  • (自适应)居家生活日用品纸盘纸盒纸杯卫生纸巾生产厂家pbootcms模板为纸品生产企业打造的现代化展示平台,自动适应各种设备屏幕,确保浏览体验一致,完善的SEO功能,提升网站曝光度,基于PbootCMS构建,源码开放可定制。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐