╃苍狼山庄╃╃苍狼山庄╃

Clang出品,
必属精品!

$OEM$发布文件夹概述(不完整版)

$OEM$文件夹的用途是,你放在该文件夹中的所有文件都会被自动复制到你安装Windows的目标分区。一旦复制操作结束,你就可以用预先创建的批处理文件配合%systemdrive%变量安装其中的软件或执行其它任务。例如,如果Windows被安装到D盘,环境变量“%systemdrive%”就代表 D:\ 。

你可能会问,“为什么不直接从光盘上安装那些软件?”,那是因为光驱盘符在每台电脑上都是不同的,这也就说明了为什么没有“%CDROM%”这样的环境变量。然而你可以创建并运行脚本来检查光盘上某个特定文件的存在,这样就可以把当前的光驱盘符映射为%CDROM%变量。但是在本文中我们不准备涉及该内容。

$OEM$发布文件夹

$OEM$文件夹和i386文件夹是同一级的,并不是包含在其中。$1文件夹中的任何文件都会被复制到Windows安装到的硬盘分区的根目录(例如C盘)。看下面的例子你就知道它是怎么工作的了:

在准备过程中,文件夹结构是这样的:
C:\XPCD\$OEM$\$1\Install\

当刻录到光盘(X是光驱盘符)后,文件夹结构变成了这样:
X:\$OEM$\$1\Install\

当\$OEM$\$1\Install文件夹在安装系统过程中被复制到硬盘后,文件夹结构变成了这样:
C:\Install\

了解了吗?这就解释了为什么在本站你能找到很多类似"start /wait %systemdrive%\install\MSN\msnmsgs.msi /qb"的命令,因为该命令的输出路径和C:\Install\ 一样,都是安装Windows的分区

$$ - 在该文件夹中的任何文件都会被复制到Windows文件夹,无论该文件夹叫什么名字(Windows、WINNT、WindowsXP)。通过使用这种方法你可以在$$中创建其它文件夹,例如Resources下的Themes子文件夹,然后就可以把你的视觉主题放在里面。随后这些文件就会在安装Windows过程中自动被复制到 C:\WINDOWS\Resources\Themes。

其他文件夹对应关系:
$Docs -Documents and Settings
$Progs - Program Files
$$ - Windows文件夹
$1 - 安装Windows的分区的根目录

这样做就省得用COPY或XCOPY命令复制文件和文件夹到目标位置了。

九、使用 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
1 – 此行没有任何错误. 注意第二段和第三段都用引号括住了. 你必须用引号将其括住!

2 - HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939,"Installed",0x00010001,1
2 – 此行无法工作, 因为第二段没用引号括住.

3 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed",0x10001,1
3 - 此行无法工作, 因为 0x00010001 被搞成了0x10001. 在正常情况下没有问题, 但是在文本安装模式下, 安装程序就无法理解它的含义了. 有所怀疑的话, 请不要使用任何缩写.

4 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed"",0x00010001,1
4 - 此行无法工作, 因为 Installed 后有两个引号.

5 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939",Installed,0x00010001,1
5 - 此行无法工作, 因为 Installed 没有被引号括住!

试着创建inf 吧,如果文本安装模式“不喜欢”你的Inf 文件, 那么它会告诉你错在哪行的. 然后你就要转到此行并试着找出问题所在.

本原创文章未经允许不得转载 | 当前页面:╃苍狼山庄╃ » $OEM$发布文件夹概述(不完整版)

评论

文章评论已关闭!