Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285754
  • 博文数量: 115
  • 博客积分: 1951
  • 博客等级: 上尉
  • 技术积分: 728
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-26 14:05
文章分类

全部博文(115)

文章存档

2013年(4)

2012年(3)

2011年(26)

2010年(56)

2009年(26)

我的朋友

分类: WINDOWS

2010-04-12 21:39:12

说明:
1.这是以光盘安装为基础说明的,我不懂硬盘PE安装的具体流程,但应该差不多
2.有一些地方我也并不是很懂,也并没有确认,但不影响改安装盘
3.部分内容牵扯到inf文件的基础知识,如果对inf一窍不通(比如先前某个用VB做所谓的整合包生成程序的大大),还是不要看了,不过可以看一下大概流程

以上。

下面开始正文:

******DOS部分******
光盘启动后,进入了DOS下的安装模式,这时,是由dosnet.inf和txtsetup.sif主导的(还有winnt.sif-----“主导”全过程。。。。。。。)

dosnet含有文件列表一样的东西,相当于inf文件中的sourcediskfiles区段。(在硬盘安装及网络安装时,会将这些文件全数拷到本地硬盘)
txtsetup,则是整个DOS部分的核心,DOS部分的每个小部分都是由它主导的

首先是驱动部分,这个部分主要是加载核心驱动,比方我们所说的集成SATA驱动,就是要集成到这个时候加载,让windows安装程序能够识别出你的硬盘(否则的话,选择安装分区的时候将看不到sata硬盘)
接下来就是copy文件了,是txtsetup中的文件,拷到他们相应的位置。
以上两个部分知道的人太多了,我写出来的不一定比别人的好,所以具体略之。

然后是处理注册表——hive。
它是由[HiveInfs.Fresh]或[HiveInfs.Upgrade]控制的。根据名字可以看出来,前者是全新安装,后者是覆盖/升级安装。
这两个区段相当于inf文件中的主区段了,下面的结构为Addreg=*,DelReg=*。
同样可以看出升级安装主要是多了一些清空注册表的命令

由此引出5个hive文件,
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
这5个hive文件,是分别对应不同的注册表分支的
hivedef对应的是HKCU,因为安装时使用的是一个模板用户-All Users,所以将来创建任何新用户都会以这个为模板,def应该是默认用户的默认的default的缩写。而这个用户,就是安装时候的HKCU,是与HKU(HKEY_Users)下的.default等价的
hivesys对应的是HKLM下的system
hivesft是HKLM下的software
hivecls则是HKCR-----class root的class缩写cls
hiveusd则应该是 user defined的缩写。不要被里面东西吓到,认真的看会发现是用户定义的操作,包括文件的操作(files),执行命令(execute)以及注册表(hive),通常情况无需改此文件

实例说明:在MrNxDmx的windows media center addon()中,就改动了txtsetup.sif中的这一区段,来增加一个额外的hive文件。而通常我们更多的,只需要去改hivesys hivesft hivecls hivedef这4个inf文件

********dos部分结束,开始GUI部分********
一次重启之后,就到了GUI部分,这时,主控文件是syssetup.inf和sysoc。inf
syssetup的话,这里有人发了它的参考了,我就不详细说它内容了
sysoc,oc=optional components,就是可选组件,通常我们整合一个整合包就是修改sysoc来多一个组件

安装流程方面,T-39,会同步运行winnt.sif里的DetachedProgram。
然后就是正式安装了

说下面的流程之前,先对syssetup.inf进行一些说明
syssetup.inf明显不是我们常见的inf格式,这是因为它使用不同的方式来运行的(废话。。。),我想说的是。。。。它是把它里面的inf文件中的所有信息,编译成一个完整的安装信息来处理的!

了解这个概念后,就可以继续下面的流程说明了
先处理intl.inf(系统显示正在复制文件)
然后就是安驱动了(正在安装设备)
安完驱动就开始syssetup.inf中的文件部分了 ,根据上面所说,是一次性拷完他们的文件,因此其实到这里一个inf都还没安装完毕
然后是sysoc.inf里的组件,一次性执行完毕
然后是T-13,我们可以看到,直到T-13,对于syssetup.inf所做的事情仅仅是把文件拷过去而已!!
接下来是syssetup.inf里注册表部分,注册文件(registerdlls)以及运行runonce下的条目
接下来还是T13,运行svcpack.inf下的程序
然后T12,cmdline.txt(如果为空那么你根本看不到T12。。。)
然后T9,执行winnt.sif里的SetupParams
T9,系统开始生成syssetup.inf里的快捷方式,然后再一次运行runonce。
然后什么保存设置啦,清空文件啦,操作上太不透明了,我也没搞清楚

能说明这一流程的两个例子:
1。是MrNxDmx的IE7 Addon,它在ie7.inf中加了很多注册表条目,但到了T-13,又变成IE6的了,因此他在T-13再一次launchinf来再一次添加ie7的注册表
    原因:他没有改ie.inf,而ie.inf是属于syssetup.inf里的,所以T-13以前,它的注册表并没有加进去。而ie7。inf,是属于sysoc.inf的,所以注册表添加进去去了,这样在T13的最初,ie。inf里的注册表会覆盖ie7。inf里的,因此需要再一次添加ie7.inf里的注册表信息

2。是ryan的删除windows update快捷方式。
HKLM,"%RUNONCE%","MU-1",,"REG ADD ""HKLM\%RUNONCE%"" /v ""MU"" /t REG_SZ /d ""CMD /Q /C DEL \"""%16406%\Windows Update.lnk\""" /Q/F"""
这个注册表,在T-13时候执行REG ADD "HKLM\%RUNONCE%" /v "MU" /t REG_SZ /d "CMD /Q /C DEL \"%16406%\Windows Update.lnk\" /Q/F"
这样T-13执行完毕后,并没有执行删除快捷方式的命令del,而是又一次把它加入了注册表里的runonce
T9,生成快捷方式后,才删除

这里,用到了安装过程中按shift+f10调出cmd.exe,然后当时在T13的时候dir的结果就是,sysoc.inf里创建的快捷方式都在,syssetup里的都不在。所以windows update的快捷方式要留在这之后再删除

*****************第一次启动*******************
这里应该没什么好说的了,winnt.sif的GUIRunOnce。。。
然后就是oobe,如果禁用oobe那就直接administrator登录咯
 
2。是ryan的删除windows update快捷方式。

在国外的论坛, 网友 ricktendo64
写了这个,可以替换ryan的做法.
用 NLITE 测试没有问题, RVM 便不知道是否得修改 SYSSETUP.DLL ?

[ExtraFileEdits]
SYSSETUP.INF|%windowsupdate% = wupdmgr.exe,wupdmgr.exe,,0,"@%SystemRoot%\system32\shell32.dll,-22580"|%microsoftupdate% = muweb.dll,"rundll32 muweb.dll,LaunchMUSite",muweb.dll,0,"@%SystemRoot%\system32\shell32.dll,-22580"| 1
SYSSETUP.INF|windowsupdate = "Windows Update"|microsoftupdate = "Microsoft Update"| 1
 
阅读(1349) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~