回帖:二、深入了解“TXTSETUP.SIF”
二、深入了解“TXTSETUP.SIF”
Txtsetup.sif 是一个安装信息文件(sif),主要用于 Windows 的文本安装模式(就如其名)。而且,它还可能会被其它的一些东西使用,例如,Windows PE 启动时也会用到它(Windows PE 用到了文本安装模式的末尾和 GUI 安装模式的开始部分)。文本模式完成后,这个文件就没什么用了;它不会被复制到 Windows 安装文件中(GUI 安装模式用到的安装文件)。因为 Windows 不会用到它,所以,像是系统文件保护(SFC) 这样的功能就不会影响到它。它也没有数字签名,因此你可以随意修改它而不会出现问题。
可以利用 txtsetup.sif 向安装文件中添加第三方驱动,修改安装Windows 的最小系统需求,添加或删除注册表预设,以及更多。
制作自己的安装光盘,这个文件就必须仔细研究一下,有用的地方不少。txtsetup.sif是制作安装光盘中极为重要的一个文件,里面记录了安装文件所在位置以及安装时文件拷贝的目标文件夹,实际作用其实就是把指定的文件按要求拷贝到预设好的位置上最可能用到的是以下几段:
——用代码表示源文件的位置
——用代码表示文件拷贝的目标文件夹,其根目录为 %WinDir%,即安装指定的Windows文件夹
——根据前面设定的代码表示文件拷贝的具体细节
下面3段为集成 SATA、SCSI 等驱动时所用:
—— 硬件标识
—— SCSI驱动加载
—— SCSI设备说明
—— 全新安装时根据指定的 inf 文件中的字段添加注册表信息
—— 升级安装时根据指定的 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 的定义来自于,表示源文件为原版本且在光盘上i386文件夹,100表示源文件为SP补丁中较新版本的文件,100 代表它是个SPx 文件(SP1,SP2..SPx);
21 代表着它的复制目的地,其相对于 %windir% 文件夹,在这里,21 是让安装程序把 locsecw.chm 复制到 %windir%help。具体哪些值代表哪些目录可以在 中找到。一般情况下, 中定义的目录都是相对于 %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文件夹中
在 中添加:
xp_patch.exe = 1,,,,