(Windows® 2000 Server 专业参考)

摘取自:
Windows® 2000 Server Professional Reference
(Windows® 2000 Server 专业参考)
作者: Karanjit S. Siyan Ph.D.

发行商 : New Riders Publishing
发行日期 : July 10, 2000
ISBN : 0-7357-0952-1
页数 : 1848

注: “Windows® 2000 Server Professional Reference” 有中文版, 可是我没有找到可供下载的电子书, 哪位有的话, 拜托共享一下吧.

作者: gosh (
http://gosh.msfnhosting.com/txtsetup.htm)
翻译: tingpu (
tingpu@hotmail.com )

二、使用 Txtsetup 添加注册表预设

出处:
(
http://gosh.msfnhosting.com/infresh.htm)

作者:nosh
翻译:tingpu (
tingpu@hotmail.com )


目前已知有一种方法可以用 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,"SoftwareMicrosoftWindowsCurrentVersionRunOnce","MyUpdate",0x00020002,"%systemroot% egedit.exe /s %systemroot%system32settings.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 - HKLM,"SOFTWAREMicrosoftWindows NTCurrentVersionHotfixKB826939","Installed",0x00010001,1
2 - HKLM,SOFTWAREMicrosoftWindows NTCurrentVersionHotfixKB826939,"Installed",0x00010001,1
3 - HKLM,"SOFTWAREMicrosoftWindows NTCurrentVersionHotfixKB826939","Installed",0x10001,1
4 - HKLM,"SOFTWAREMicrosoftWindows NTCurrentVersionHotfixKB826939","Installed"",0x00010001,1
5 - HKLM,"SOFTWAREMicrosoftWindows NTCurrentVersionHotfixKB826939",Installed,0x00010001,1
1 – 此行没有任何错误. 注意第二段和第三段都用引号括住了. 你必须用引号将其括住!
2 – 此行无法工作, 因为第二段没用引号括住.
3 - 此行无法工作, 因为 0x00010001 被搞成了0x10001. 在正常情况下没有问题, 但是在文本安装模式下, 安装程序就无法理解它的含义了. 有所怀疑的话, 请不要使用任何缩写.
4 - 此行无法工作, 因为 Installed 后有两个引号.
5 - 此行无法工作, 因为 Installed 没有被引号括住!
试着按照我的指南创建你自己的 inf 吧. 如果文本安装模式“不喜欢”你的Inf 文件, 那么它会告诉你错在哪行的. 然后你就要转到此行并试着找出问题所在.

其它
此指南中的某部分, 包含的第一个 inf 文件, 摘自 MSTest 所写的材料.
 

三、对于简体中文版 Windows XP SP2 中 TXTSETUP.sif 的注释

这个是我闲着没事研究 txtsetup.sif 的一点心得, 这个文件的结构还是比较简单的, 只是还有一些地方不是很清楚具体是干吗的. 仅供参考.

这个文件的用途, 请参考 "什么是 txtsetup.sif" (
http://www.evlove.net/bbs/viewthread.php?tid=319&fpage=1)

[Version]
signature="$Windows NT$"
ClassGUID={00000000-0000-0000-0000-000000000000}

;[SourceDisksNames] 中代码的用途, 请参考 "什么是 txtsetup.sif"
;源光盘名称, 通用
[SourceDisksNames]
;_x = "Windows XP Professional CD-ROM","win51ip",,""
_x = %cdname%,%cdtagfile%,,""
;..........................................
_6 = %cdname%,%cdtagfile%,,""

1_ = %cdname%,%cdtagfile%,,""
;..........................................
6_ = %cdname%,%cdtagfile%,,""

;x86 平台的源光盘名称
[SourceDisksNames.x86]
;代表了在必须有 "WIN51IP" 的光盘上的 i386 目录中
;而这个 WIN51IP 则说明了这个光盘是 XP 的初始盘, 那么使用了 1 的文件即是 XP 初始文件, 从未升级.
;1 = "Windows XP Professional CD-ROM","win51ip",,i386
1 = %cdname%,%cdtagfilei%,,i386
;代表了在必须有 "win51ip.sp2" 的光盘上的 cmpnents abletpci386 目录中
;2 = "Windows XP Professional Service Pack 2 CD","win51ip.sp2",,cmpnents abletpci386
2 = "%cd2name%","%cd2tagfilei%",,cmpnents abletpci386
3 = "%cd2name%","%cd2tagfilei%",,cmpnentsmediactri386
4 = "%cd2name%","%cd2tagfilei%",,cmpnents etfxi386
;代表了在必须有 "win51ip.sp2" 的光盘上的 i386 目录中
;而这个 WIN51IP 则说明了这个光盘是 XP SP2 安装盘, 那么使用了 100 的文件即是 XP SP2 升级后的文件.
;100 = "Windows XP Professional Service Pack 2 CD","win51ip.sp2",,i386,1
100 = %spcdname%,%spcdtagfilei%,,i386,1
;同张光盘上可能同时存在 WIN51, WIN51IP, WIN51IP.SP2, 说明光盘上同时存在 XP 初始文件和 SP2 文件
;以下定义类似, 大家可以参考上面的说明
_1 = %bootname1%,"%boottagfile1%",,""
;..........................................
6_ = %bootname6%,"%boottagfile6%",,""

7 = %cdname%,%cdtagfilei%,,i386lang
107 = %spcdname%,%spcdtagfilei%,,i386lang,1
;.............................................
15 = %cdname%,%cdtagfilei%,,i386

;amd64 平台的源光盘名称
[SourceDisksNames.amd64]
1 = %cdname%,%cdtagfilem%,,amd64
;................................................
56 = %cdname%,%cdtagfilem%,,i386lang

;ia64 平台的源光盘名称
[SourceDisksNames.ia64]
1 = %cdname%,%cdtagfilem%,,ia64
7 = %cdname%,%cdtagfilem%,,ia64lang
55 = %cdname%,%cdtagfilem%,,i386
56 = %cdname%,%cdtagfilem%,,i386lang

;目录代码定义
;如何用到这些代码, 请参考 "什么是 txtsetup.sif"
;你可以手动在这里添加自己的想要的路径 (注意, 不要重名), 这样, 安装时会自动生成. 比如:
;1985 = "system32IMEunispim"
;注意, 这里的目录都是相对于系统的安装目录的 (一般为系统盘的 windows 目录), 你只能自定义相对于安装目录的子目录. 至于说, "Program Files" 等目录, 那都是后来另外生成的, 与此无关.
[WinntDirectories]
1 = "/"
2 = system32
;...............................................
240 = ehome


;这里定义了文本安装模式下是如何复制某些文件的
;这是第一段 [SourceDisksFiles], 这段是通用定义, 不管是哪种语言, 哪种平台, 都要执行这一段..
;具体介绍, 请参考 "什么是 txtsetup.sif"
[SourceDisksFiles]
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
;............................................................
mediactr.cab = 3,,,,,,_x,,3,3


;这里定义了 ia64 平台的文本安装模式下特别需要复制的某些文件
[SourceDisksFiles.ia64]
agp460.sys = 100,,,,,,,4,2
;..........................................
wind_w64.chq = 1,,,,,,,21,0,0,windows.chq

;这里定义了 amd64 平台的文本安装模式下特别需要复制的某些文件
[SourceDisksFiles.amd64]
ntdetect.com = 100,,,,,,_1,1,3,,,1,1
ntldr = 100,,,,,,_x,1,3


;这里定义了 x86 平台的文本安装模式下特别需要复制的某些文件
;大家的平常使用的平台基本都是 x86 的, 不知 ia64 和 amd64 还算不算 x86 平台的
[SourceDisksFiles.x86]
hal.dll = 100,,,,,,3_,2,3,,,1,2
;..............................................
winshfhc.dll = 100,,,,,,,2,0,0



;这里定义了文本安装模式下是如何复制某些文件的
;具体介绍, 请参考 "什么是 txtsetup.sif"
;这个第二段, 专门定义了一些键盘布局文件.
[SourceDisksFiles]
kbdycl.dll = 1,,,,,,_x,2,1
kbdycc.dll = 1,,,,,,_x,2,1
kbdvntc.dll = 1,,,,,,_x,2,1
kbduzb.dll = 1,,,,,,_x,2,1
kbdsl.dll = 1,,,,,,_x,2,1
kbdsl1.dll = 1,,,,,,_x,2,1
kbdro.dll = 1,,,,,,_x,2,1
kbdru.dll = 1,,,,,,_x,2,1
kbdru1.dll = 1,,,,,,_x,2,1
kbdtat.dll = 1,,,,,,_x,2,1
kbdtuf.dll = 1,,,,,,_x,2,1
kbdtuq.dll = 1,,,,,,_x,2,1


;目录代码定义
;如何用到这些代码, 请参考 "什么是 txtsetup.sif"
;这是第二段定义, 看样子, 是专门用于添加简体中文微软拼音支持的. 这样让你在安装期间即可使用微软拼音. 而像是英文版, 它这应该是无法在安装期间使用微软拼音的.
[WinntDirectories]
204 = System32IMEPINTLGNT
205 = IMECHSIMEAPPLETS
220 = IMESHARED
221 = IMESHAREDRES



;这里定义了文本安装模式下是如何复制某些文件的
;具体介绍, 请参考 "什么是 txtsetup.sif"
;这个第三段, 添加了对于简体中文的额外支持.
[SourceDisksFiles]
sprs0804.dll = 100,,,,,,,2,0,0,xpsp1res.dll,1,2
sprt0804.dll = 100,,,,,,,2,0,0,xpsp2res.dll,1,2
;......................................................
femgrate.exe = 100,,,,,,,2,0,0
femgrate.inf = 1,,,,,,,20,0,0




;这里定义了文本安装模式下是如何复制某些文件的
;具体介绍, 请参考 "什么是 txtsetup.sif"
;这个第四段, 只是定义了要复制一些代码页和字体.
[SourceDisksFiles]
c_10004.nls = 1,,,,,,,,3,3
c_10005.nls = 1,,,,,,,,3,3
c_720.nls = 1,,,,,,,2,1,3
c_862.nls = 1,,,,,,,,3,3
vga737.fon = 1,,,,,,,22,0
vga775.fon = 1,,,,,,,22,0
vga852.fon = 1,,,,,,,22,0
vga855.fon = 1,,,,,,,22,0
vga857.fon = 1,,,,,,,22,0
vga866.fon = 1,,,,,,,22,0
vga869.fon = 1,,,,,,,22,0
vgaf1257.fon = 1,,,,,,,22,0


;字符串定义, 比如, %MyPicturesScreenSaver% 就是 "图片收藏屏幕保护程序.scr" 的意思, 主要用来帮助记忆, 或是能让你轻松实现本地化
[Strings]
MyPicturesScreenSaver = "图片收藏屏幕保护程序.scr"
;.........................................
cd2tagfilei = "win51ip2"




;默认安装数据
[SetupData]
;源安装文件相对位置
SetupSourcePath = "/"
;5.1 就是 XP 的意思
MajorVersion = 5
MinorVersion = 1
;默认安装路径
DefaultPath=WINDOWS
;记载系统时的某些选项, 可参考 boot.ini
OsLoadOptions = "/fastdetect /noguiboot /nodebug"
;强制检查 Scsi
ForceScsi = 1
;强制检查磁盘类的软件
ForceDiskClass = 1
;强制检查光驱
ForceCDRom = 1
;目录结构
Architecture = i386
;驱动文件所在位置
DriverCabName=driver.cab,sp2.cab
;产品类型?
ProductType = 0
;加载时显示的标识, 在 [Strings] 定义中, 应该可以自己修改, 不过最好只用英文
LoadIdentifier = %wks_id%
LoadIdentifierCancel = %cancel_id%
LoadIdentifierWin9x = %9x_id%
BaseVideoLoadId = %wks_id_vga%
;所需最低的内存为 64M
RequiredMemory = 67108864
;页面文件大小, 也就是虚拟内存
Pagefile = 115,250



;升级安装时要删除的文件, 后面的数字表明了这个文件所在的位置, 具体代码请参考 [WinntDirectories]
[Files.DeleteOnUpgrade]
15_16wdm.sys , 4
;.....................................
MIGRATE.DLL ,134



;升级安装时要删除的文件夹, 后面的数字表明了这个文件夹所在的位置, 具体代码请参考 [WinntDirectories]
[Directories.DeleteOnUpgrade]
1, Prefetch
;.......................................
130,"imejpdicts"


;若要覆盖时要备份的文件
[Files.BackupOnOverwrite]
system , 3 , system.bak
software , 3 , software.bak
default , 3 , default.bak
sam , 3 , sam.bak
security , 3 , security.bak


;若要升级时要备份的文件
[Files.BackupOnUpgrade]


;要升级的 Win31 文件
[Files.UpgradeWin31]
notepad.exe , 1
;................................
TAPI.DLL , 5


;要加载的磁盘驱动
[DiskDrivers.Load]
;NT Disk Manager Startup Driver
dmboot = dmboot.sys


;要加载的文件系统驱动
[FileSystems.Load]
;Kernel Security Support Provider Interface
ksecdd = ksecdd.sys
;Fast FAT File System Driver
fat = fastfat.sys
;NT File System Driver
ntfs = ntfs.sys



;文本安装模式下要检查的一些硬件
;其大致格式为,"=" 前为硬件 ID, 当符合这个硬件 ID 时, 就按照 "=" 后的处理.
;比如, 当安装程序搜索到 "1394609E&10483" 这个硬件 ID 时, 就按照 "sbp2port" 进行搜索, 那么可以在 [BusExtenders] 区段中, 找到以下行:
;sbp2port = "IEEE 1394 SBP2 Storage Port Driver", files.sbp2port,sbp2port
;"IEEE 1394 SBP2 Storage Port Driver" 是这个设备的名称, 然后 files.sbp2port 定义了相关的驱动文件, sbp2port 又在 [BusExtenders] 区段中进行了定义, 将其设为了加载.
;其它字段与此相仿, 大家可以参考一下.
;另外, SATA 之类未被 XP 文本安装模式默认支持的硬件, 也可通过模仿以下格式进行手动添加.
[HardwareIdsDatabase]
1394609E&10483 = "sbp2port"
;......................................................
PCIVEN_8086&DEV_3092&SUBSYS_00018086 = "i2omp"


;定义了某些特殊电脑显示出来的名称
[Map.Computer]
sgiborg_mp = "*SGI-3"
sgiborg_mp = "*SGI-4"
sgiborg_mp = "*SGI-5"
sgiborg_mp = "*SGI-6"


[bootvid]


;硬件提取层
;不同的电脑不要不同的 hal.dll, 这里是用来判断的
[hal]
;486 级别的 Standard PC 直接用 hal.dll, 这个文件应该是兼容性最好的, 但相对来说, 性能功能也是最低的吧.
486c_up = hal.dll ,2,hal.dll
;Advanced Configuration and Power Interface (ACPI) PC 用 halacpi.dll, 当然, 要先将其重命名为 hal.dll 再使用.
acpipic_up = halacpi.dll ,2,hal.dll
;Standard PC 直接用 hal.dll
e_isa_up = hal.dll ,2,hal.dll
;MPS Uniprocessor PC 用 halacpi.dll
mps_up = halapic.dll ,2,hal.dll
;MPS Multiprocessor PC 用 halmps.dll
mps_mp = halmps.dll ,2,hal.dll
;Compaq SystemPro Multiprocessor or 100% Compatible 用 halsp.dll
syspro_mp = halsp.dll ,2,hal.dll
;ACPI Uniprocessor PC 用 halaacpi.dll
acpiapic_up = halaacpi.dll,2,hal.dll
;ACPI Multiprocessor PC 用 halmacpi.dll
acpiapic_mp = halmacpi.dll,2,hal.dll
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值