光盘启动区基础知识(二) 深入了解“TXTSETUP.SIF”

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
 Txtsetup.sif 是一个安装信息文件(sif),主要用于 Windows 的文本安装模式(就如其名)。而且,它还可能会被其它的一些东西使用,例如,Windows PE 启动时也会用到它(Windows PE 用到了文本安装模式的末尾和 GUI 安装模式的开始部分)。文本模式完成后,这个文件就没什么用了;它不会被复制到 Windows 安装文件中(GUI 安装模式用到的安装文件)。因为 Windows 不会用到它,所以,像是系统文件保护(SFC) 这样的功能就不会影响到它。它也没有数字签名,因此你可以随意修改它而不会出现问题。

    可以利用 txtsetup.sif 向安装文件中添加第三方驱动,修改安装Windows 的最小系统需求,添加或删除注册表预设,以及更多。

    制作自己的安装光盘,这个文件就必须仔细研究一下,有用的地方不少。txtsetup.sif是制作安装光盘中极为重要的一个文件,里面记录了安装文件所在位置以及安装时文件拷贝的目标文件夹,实际作用其实就是把指定的文件按要求拷贝到预设好的位置上最可能用到的是以下几段:

[SourceDisksNames.x86]——用代码表示源文件的位置
[WinntDirectories]——用代码表示文件拷贝的目标文件夹,其根目录为 %WinDir%,即安装指定的Windows文件夹
[SourceDisksFiles]——根据前面设定的代码表示文件拷贝的具体细节

    下面3段为集成 SATA、SCSI 等驱动时所用:

[HardwareIdsDatabase] —— 硬件标识
[SCSI.Load] —— SCSI驱动加载
[SCSI] —— SCSI设备说明
[HiveInfs.Fresh]   —— 全新安装时根据指定的 inf 文件中的字段添加注册表信息
[HiveInfs.Upgrade] —— 升级安装时根据指定的 inf 文件中的字段添加注册表信息

    若想把 txtsetup.sif 中的某行移除掉,那么应该在此行前添加一个分号(;)或是把这行整个的删掉,通常,把 txtsetup.sif 中的某行删掉之后,那么还需要把 dosnet.inf 中的对应行删掉。如果想添加一行,那就比较复杂了,下面是 txtsetup.sif 的某个示例行:

locsecw.chm = 1,,,,,,,21,0,0,defrag.chm 
locsecw.chm 是 Windows 安装文件中的某个文件。
    1 代表着它是个初始(RTM)XP 文件,通常你会看到 1 或 100,1 的定义来自于[SourceDisksNames.x86],表示源文件为原版本且在光盘上i386文件夹,100表示源文件为SP补丁中较新版本的文件,100 代表它是个SPx 文件(SP1,SP2..SPx);
    21 代表着它的复制目的地,其相对于 %windir% 文件夹,在这里,21 是让安装程序把 locsecw.chm 复制到 %windir%help。具体哪些值代表哪些目录可以在 [WinntDirectories] 中找到。一般情况下,[WinntDirectories] 中定义的目录都是相对于 %windir% 文件夹的子目录,这就意味着你把文件添加到 txtsetup.sif 中,那么它就会被复制到 %windir% 文件夹中(可能在其子文件夹中)。
    第一个0为升级代码位,含义为:(升级时)
0-总拷贝文件
1-安装文件夹中有该文件才拷贝
2-安装文件夹中有该文件时不拷贝;
3-不拷贝文件
    第二个0为新安装代码位,含义同上(全新安装时)另外据说此代码若不为0,其前面需多加2个逗号
    defrag.chm表示将目标文件改名为此,因此,这一行表明,不管是升级还是全新安装都将源文件locsecw.chm拷贝到%WinDir%/help文件夹下并改名为defrag.chm,就如在示例中所看到的一样,可以在行的末尾重命名要复制的文件。Microsoft 用它来区分 Windows XP Home 和 Pro 版。Home 的文件带有P, Pro 的文件带有 W。W 可能是代表着工作站(WorkStation) 的意思,P 可能是代表着个人版(Personal) 的意思,Windows XP Home 最初就叫做 Whistler Personal。
    示例;

cmconW.chm = 1,,,,,,,21,0,0,cmconcepts.chm - xp pro txtsetup.sif
cmconP.chm = 1,,,,,,,21,0,0,cmconcepts.chm - xp home txtsetup.sif
    就如所见的一样,XP Home 和 XP Pro 的文件并不相同,但是最后复制到系统中的文件名称都一样。同时请注意,txtsetup.sif 支持长文件名。
    现在来看看另一行:
autofmt.exe = 1,,,,,,_x,2,0,0,,1,2 
    “_x”代表着这个安装盘上的这个文件没有经过压缩,如果没有这个,那么安装程序会认为这个文件已被压缩过了。这个对于保证安全性和可靠性很重要。每个 XP 文件都被列在了“layout.inf”中,包括这个文件的大小(按字节计算),很明显,一个文件的压缩前和压缩后的大小是不会相同的。如果“txtsetup.sif”告诉安装程序“某个文件未被压缩”,那么安装程序就会在“layout.inf”中查找它的文件大小以确保这个文件未经修改或是损坏。如果文件大小与“layout.inf”中记录的不同,那么 XP 安装程序就会报错并停止安装。这个能够保证安装程序的安全性,以确定文件是否被修改过。它还能验证文件是否已被损坏,如果文件已被损坏,那么稍后安装时就可能会出现问题。如果以“_x”为关键字在“txtsetup.sif”进行搜索,那么就能找到所有未经压缩的 Windows 安装文件。

    有个很重要的事情就是,txtsetup.sif 并没有告诉安装程序应当从哪里获取安装文件。它唯一的功能就是把按照正确的文件名把文件复制到正确的目录中。

    举例说明:
    比如说,把 tweakui 集成到 Windows 安装文件中,但是不想使用无人值守的方式。那么利用 txtsetup.sif 可以很轻松地做到这点。
    第一步:下载 Tweak UI:下载后,用 WinRAR 把 tweakui.exe 提取出来,或是先安装这个程序再把windows/system32 中的tweakui.exe 复制出来;
    第二步:把 tweakui.exe 复制到 XP 安装文件所在的文件夹中,把 XP 安装盘上的文件复制到硬盘上,然后把 tweakui.exe 放到 i386 文件夹中;
    第三步:修改 txtsetup.sif 和 dosnet.inf,把以下行添加到 dosnet.inf 中:
d1,tweakui.exe 
    把以下行添加到txtsetup.sif 中:
tweakui.exe = 1,,,,,,,2,0,0 

    现在运行安装程序,dosnet.inf 会把 tweakui.exe 复制到 C:/$WIN_NT$.~LSi386 中,接着重启之后,就会进入文本安装模式了,而 txtsetup.sif 会把 C:/$WIN_NT$.~LSi386 中的 tweakui.exe 复制到 C:/Windows/System32 中,当整个安装进程完成之后,若要运行 tweakui.exe,那么只需转到 “开始”>”运行”>输入:tweakui,点击确定就行了。那为什么不在新添加的行中使用“_x”呢?这是因为 tweakui.exe 不是 XP 的初始安装文件,XP 不需要检查它(因为它未在 layout.inf 中进行定义)。

    利用“Txtsetup.sif”和“xpinstall”集成安装打补丁

    将补丁以及xpinstall等相关文件准备好,放在同一文件夹下,并配置好“xpinstall.xml”(用xpinstall来安装补丁比较美观)。用WinRAR将这些文件做成自解压压缩文件“xp_patch.exe”,并在自解压选项的模式中指定解包到临时文件夹和全部隐藏,以及指定“xpinstall”为解压后运行的程序,用“makecab”压缩该文件,并把文件拷贝到i386文件夹中
    在 [SourceDisksFiles] 中添加:
xp_patch.exe = 1,,,,,,,1,0,0
    在“winnt.sif”中的 [GuiRunOnce] 添加:
Command0="%WinDir%/xp_patch.exe"
    从硬盘安装时,安装程序会先利用“dosnet.inf”中的定义把文件复制到“C:/$WIN_NT$.~LS”中。然后,安装程序才会利用 Txtsetup.sif 把这个文件夹中的文件复制到对应的文件夹中。因为只能利用“txtsetup.sif”把文件复制到“%windir%”文件夹下,所以它的用途有限,主要是用它来添加注册表预设和驱动。

   用“txtsetup.sif”来添加自定义的注册表条目

    每次文本安装模式即将结束时,安装程序就会利用“txtsetup.sif”中的某些定义来创建注册表(文件复制结束时)。如果是全新安装的话,安装程序就会按照“txtsetup.sif”的 [HiveInfs.Fresh] 区段中的定义来生成注册表。可以使用这个区段来添加自己的注册表条目。如果已经把注册表的设置保存为一个“.reg”文件的话,那么需要用“.inf”文件导入这些设置。将“.reg”文件重命名为“settings.reg”并将其置入 i386 文件夹中,将以下内容复制到一个新文件中并另存为 settings.inf,然后将其保存到 i386 文件夹中。
[Version]
Signature = "$Windows NT$"
DriverVer=07/01/2001,5.1.2600.1106
[update]
HKLM,"Software/Microsoft/Windows/CurrentVersion/RunOnce",
"MyUpdate",0x00020002,"%systemroot%/regedit.exe /s %systemroot%/system32/settings.reg"

    添加 inf 条目
    如果已经有了一个“.inf”文件,那么将其复制到 i386 文件夹中并将其重命名为“settings.inf”,并确保这个“.inf”文件中有个名为 [update] 区段,只有这个区段下的设置会被使用。

    可以用 makecab.exe 把 settings.inf 压缩成 settings.in_,但这只是可选的,添加方法是打开 txtsetup.sif 并转到[HiveInfs.Fresh],按以下添加一行:
[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = settings.inf,update

    再把以下 2 行添加到“txtsetup.sif”的 [SourceDisksFiles] 段下,如果要使用一个 .reg 文件,那么就要添加第二行,不需要的只需添加第一行:

settings.inf =1,,,,,,_x,3,,3
settings.reg =100,,,,,,,2,0,0

    把以下 2 行添加到“dosnet.inf”的 [Files] 段下,如果要使用一个“.reg”文件,那么就要添加第二行,不需要的只需添加第一行:

d1,settings.inf
d1,settings.reg

    现在开始安装 XP,当文本安装模式结束时就会导入注册表设置了,不需要使用无人值守安装方式。
   
   疑难解答

    文本模式安装程序所用的解释引擎不同于 SetupAPI,因此,处理相关的“inf”文件时要小心点以免设置无效。当编辑用于文本安装模式下用的“inf”文件时,应当遵循以下方针:
1 - 避免 strings. 就是那些在 [strings] 下定义的字符串,听说在文本安装模式下无法使用字符串;
2 - 总是使用引号,请尽可能地用引号括住设置;
3 - 避免缩写,在一般的 inf 中可以使用 0x1 或 0x1002. 而在文本安装模式下,以上值不起作用.;
4 - 避免不必要的空格,这个可能不是强制性的,但最好这么做;
5 - 无法确定能用文本安装模式 .inf 做什么事情? 那么请参考 hivesys.inf,hivesft.inf。

    以下是 5 个不同的“.inf”设置,1 是正确的,而其它的则无法工作且文本模式安装程序会报错:

1 - HKLM,"SOFTWARE/Microsoft/Windows NT/CurrentVersion/Hotfix/KB826939","Installed",0x00010001,1 
2 - HKLM,SOFTWARE/Microsoft/Windows NT/CurrentVersion/Hotfix/KB826939,"Installed",0x00010001,1 
3 - HKLM,"SOFTWARE/Microsoft/Windows NT/CurrentVersion/Hotfix/KB826939","Installed",0x10001,1 
4 - HKLM,"SOFTWARE/Microsoft/Windows NT/CurrentVersion/Hotfix/KB826939","Installed"",0x00010001,1 
5 - HKLM,"SOFTWARE/Microsoft/Windows NT/CurrentVersion/Hotfix/KB826939",Installed,0x00010001,1 

1 –此行没有任何错误,注意第二段和第三段都用引号括住了,必须用引号将其括住;
2 –此行无法工作,因为第二段没用引号括住;
3 - 此行无法工作,因为 0x00010001 被搞成了 0x10001,在正常情况下没有问题,但是在文本安装模式下,安装程序就无法理解它的含义了,有所怀疑的话,请不要使用任何缩写;
4 - 此行无法工作,因为 Installed 后有两个引号;
5 - 此行无法工作,因为 Installed 没有被引号括住。
 

 
Windows XP USB启动安装全攻略:驱动注入原理与实战 操作系统安装的核心在于引导程序对硬件驱动的识别与加载。Windows XP等早期系统在安装阶段,其文本模式安装环境默认不包含USB大容量存储驱动,导致无法直接从USB设备启动安装。通过修改安装源文件中的关键配置文件,如TXTSETUP.SIF和DOSNET.INF,可以将USB存储驱动(如usbstor.sys)的加载时机提前至系统引导的初始阶段,这一过程被称为“驱动注入”。这项技术的价值在于突破了原生安装程序的限制,使得为老旧工业设备、嵌入式系统或特定兼容性测试创建便携式、隔离的Windows XP工作 阅读详情

相关推荐

txtsetup.sif 文件

晕乎,四五年不弄了,Win8都要出了还要搞XP安装盘,晕死! Txtsetup.sif是控制安装过程中要从哪个位置读取哪个文件复制到何许位置,简单的说,就是文件复制控制。 重要的几个位置如下:收集于网络,搞完这次用到XP死掉再也不弄了! 要注释txtsetup.sif文件 在行前添加一个分号(;). [SourceDisksNames] 通用! [Source...

weixin_33755649的博客 322

实现Windows XP Live On USB Device

摘至《无忧启动论坛》从usb硬盘启动标准版的windows,是为了实现 1、能升级windows系统 2、玩DirectX游戏 3、正常运行绝大部分windows下的软件 用usb 2.0的移动硬盘,可以在上面正常运行xp系统了。 微软号称xp无法从ubs设备启动,比如它的网站说明: Q: Can a USB storage device be the primary (and only) m

chinazcw的专栏 3063

深入了解TXTSETUP.SIF

深入了解TXTSETUP.SIFTxtsetup.sif是一个安装信息文件(sif),主要用于 Windows 的文本安装模式(就如其名)。而且,它还可能会被其它的一些东西使用,例如,WindowsPE 启动时也会用到它(Windows PE 用到了文本安装模式的末尾和 GUI安装模式的开始部

Welcome to Vick's home! 808

三合一启动光盘制作()

三合一启动光盘制作()[@more@]Windows 2000 三合一启动光盘制作有关说明:1、Windows 2000 三合一光盘是指将WIN2000的PRO、SERVER和ADVSERVER三个版本做成一张光盘。由于这三个...

congjukun0600的博客 998

光盘启动基础知识(九) 使用 Txtsetup 添加注册表预设

目前已知有一种方法可以用 txtsetup.sif 来添加自定义的注册表条目. 每次文本安装模式即将结束时, 安装程序就会利用txtsetup.sif  中的某些定义来创建注册表(文件复制结束时).  如果是全新安装的话, 安装程序就会按照 txtsetup.sif 的 [HiveInfs.Fresh] 段中的定义来生成注册表.  你可以使用这个段来添加你自己的注册表条目。添加注册表条目如果你

904

PE启动过程简介

引自:http://819671119.blog.163.com/blog/static/1284575522009822834192/  下面为个人理解的几种启动方式的启动过程中的一些步骤,这些步骤多数是制作PE合盘的时候需要修改的地方,错误之处请指正一、纯PE,如老毛桃、天琴星座1. 加载引导代码,相当于硬盘的MBR修改方法:a)用UltraISO打开ISO文件,选择“启动”->

her0z的专栏 2275

SATA硬盘下安装WinXP的问题解决了

现象:安装winxp失败,stop提示信息的意思是:无法访问硬盘引导。 原因:因为WindowsXP本身不直接支持串行ATA控制器,因此必须在安装系统前加载SATA驱动。 方法: 一、有软驱 -- 标准方法   在首次安装WindowsXP寻找SCSI设备时,按下F6键(此时屏幕下方会有文字提示)来加载第三方驱动程序。但请注意,出现提示后大约只有2秒的时间让你按键,错过的话又得重启...

weixin_34387284的博客 696

XP安装盘中集成SATA驱动的方法

1.用EasyBoot做集成串行驱动的安装光盘 使用串行硬盘安装windows 2k/xp时都要插入串行驱动磁盘,你可以通过以下方法来自动加载它: 通过修改启动软盘组中的txtsetup.sif来实现! 在txtsetup.sif中的文件加载列表中增加你的串行硬盘驱动,至少应当有*.sys和*.inf这样它在安装时将自动加载它,您将无需插入磁盘。 但应将上面的*.sys和*.inf拷入启动软盘组中

ncdawen的专栏 1万+

u大侠pe系统桌面计算机,WinPE系统的四种启动方法

当电脑系统出现故障的时候,大家都是使用pe系统来修复或者安装系统。而熟悉PE的朋友都知道,PE启动有很多的方式,而每个PE启动的过程也不相同。今天U大侠小编就和大家说说各种PE启动过程介绍。1、U盘HDD(WinPE)的启动过程:BIOS—》NTLDR—》SETUPLDR.BIN(PELDR或其它相关名字)—》NTDETECT.COM—》WINNT.SIF(WINNT.XPE)—》WINPE.IS...

weixin_33603813的博客 1308

XP安装时分两个阶段

添加驱动需要的是细心,稍有疏忽,所有心血都白费。你已经明白了XP安装时分两个阶段:Text Mode Setup和GUI Mode SetupText Mode Setup前,由引导程序$ldr$(或Setupldr.bin)根据txtsetup.sif中驱动列表检测并载入最基本的驱动,这些驱动只保证Text Mode Setup时能够驱动设备,而不能发挥设备的全部性能。然后Text Mode S

Magma网摘博客 1462

详解在Win2003安装光盘中集成SCSI驱动

如何在Win2003安装光盘中集成SCSI硬盘驱动            我们在服务器上安装Win2003时,有时会遇到硬盘驱动导致的故障。2003操作系统已经发布多年,对近年来服务器上使用的一些新型SATA或SCSI控制器并不能很好地支持。由于2003内置的驱动程序无法识别新型的SCSI或SATA控制器,因此安装2003时会出现安装向导找不到硬盘,无法继续安装。 解决这种问题的标准方法应该...

weixin_33834075的博客 229
上一篇: 盘启动区基础知识(一) WINNT.SIF 详解
下一篇: 光盘启动区基础知识(三) Nero超容量刻的详细方法
evil365
博客等级 码龄19年 4粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值