社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 1414阅读
  • 5回复

【转帖】使用 Txtsetup 添加注册表预设

楼层直达
级别: 管理员
发帖
28225
飞翔币
1597
威望
888
飞扬币
132288
信誉值
0

— 本帖被 霸王硬上弓 从 光盘 DIY 中心 移动到本区(2008-01-12) —
转自EvLove向前冲

使用 Txtsetup 添加注册表预设

[转贴]+[整理] 使用 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,"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 - 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 没有被引号括住!
试着按照我的指南创建你自己的 inf 吧. 如果文本安装模式“不喜欢”你的Inf 文件, 那么它会告诉你错在哪行的. 然后你就要转到此行并试着找出问题所在.

其它
此指南中的某部分, 包含的第一个 inf 文件, 摘自 MSTest 所写的材料.
 
级别: *
发帖
*
飞翔币
*
威望
*
飞扬币
0
信誉值
0
只看该作者 1 发表于: 2007-08-13
先顶了你再慢慢看看了。
级别: 光盘新手
发帖
105
飞翔币
335
威望
24
飞扬币
1646
信誉值
0
只看该作者 2 发表于: 2007-08-14
收藏起来............
级别: 光盘见习
发帖
5
飞翔币
335
威望
8
飞扬币
359
信誉值
0
只看该作者 3 发表于: 2008-11-05
很不错,学习了。
级别: 光盘见习
发帖
15
飞翔币
345
威望
8
飞扬币
456
信誉值
0
只看该作者 4 发表于: 2008-11-09
很不错,收藏学习
jxm
级别: 光盘硕士
发帖
7976
飞翔币
905
威望
14919
飞扬币
5880
信誉值
0

只看该作者 5 发表于: 2008-11-12
正在学习 谢谢