找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1453|回复: 1

[分享] 制作启动光盘可能涉及到的知识和技巧 B

阿卡菲尔 发表于 2007-6-21 15:35:11 | 显示全部楼层 |阅读模式 来自 中国河南开封

马上注册,结交更多好友,享用更多功能。

您需要 登录 才可以下载或查看,没有帐号?注册

x
和winnt.sif一样,txtsetup.sif是制作安装光盘中极为重要的一个文件,里面记录了安装文件所在位置以及安装时文件拷贝的目标文件夹
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中比较常用一行描述([SourceDisksFiles]中):

defragP.chm = 1,,,,,,,21,0,0,defrag.chm

其中:
第一位,即源文件位置位的1,在[SourceDisksNames.x86]中有说明,表示源文件为原版本且在光盘上i386文件夹(常用的还有100,表示源文件为SP补丁中较新版本的文件)
21为文件拷贝目标位置位,指定了该文件拷贝的目标文件夹,在[WinntDirectories]中有说明,表示%WinDir%\help文件夹
上面第一个0为升级代码位,含义为:(升级时)0-总拷贝文件;1-安装文件夹中有该文件才拷贝;2-安装文件夹中有该文件时不拷贝;3-不拷贝文件
第二个0为新安装代码位,含义同上(全新安装时),另外据说此代码若不为0,其前面需多加2个逗号
defrag.chm表示将目标文件改名为此
因此,这一行表明,不管是升级还是全新安装,都将源文件defragP.chm拷贝到%WinDir%\help文件夹下并改名为defrag.chm

再看一个例子:

sp2.cab=100,,,,,,_x,39,0,0
其中:
_x表示文件没有经过压缩,即不是诸如LOGONUI.EX_之类经过cab压缩的,实际上加不加关系好像不大,虽说涉及到layout.inf中文件设定的大小(初步校验文件是否被修改过)
下面举两个实际应用的例子:

1、集成Royale主题
首先对该主题涉及到的文件进行处理:

将Royale.theme中的"Wallpaper=%WinDir%Resources\Themes\Royale\Energy Bliss.jpg"修改为
"Wallpaper=%WinDir%Resources\Themes\Royale\EnergyBliss.jpg",也就是改一下桌面图片的文件名而已,因为在txtsetup.sif中重命名文件时好像不能有空格符

文件改名(最好符合8.3)
Royale.theme -> Royale.the
Royale.msstyles -> Royale.mst
EnergyBliss.jpg -> Royale.jpg
shellstyle.dll -> Royale.dll

用modifype处理一下Royale.mst文件的校验码,以防文件拷贝时报错(具体哪些文件要处理我也拿不准,修改过的微软的东西可能性比较大,特别是第一位取100而不是1时,是否要处理视具体情况而定)
用makecab压缩一下文件(可以不压),并把文件拷贝到i386文件夹中
修改txtsetup.sif
在[WinntDirectories]中添加
250 = Resources\Themes\Royale
251 = Resources\Themes\Royale\Shell\NormalColor
在[SourceDisksFiles]中添加
Royale.the = 1,,,,,,,129,0,0,Royale.theme
Royale.mst = 1,,,,,,,250,0,0,Royale.msstyles
Royale.jpg = 1,,,,,,,250,0,0,EnergyBliss.jpg
Royale.dll = 1,,,,,,,251,0,0,shellstyle.dll

2、集成安装(以打补丁为例)
将补丁以及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"

ps:
1、手动安装(可进修复控制台)时,必须去掉winnt.sif的[Unattended]段,从而导致了OEM的设定无效,对应的文件夹无法自动拷贝系统盘中,但winnt.sif中和该段无关的设置依然是有效的,所以可以设定程序自动运行,剩下的问题也就是程序文件的定位了,利用txtsetup.sif就可以很好地完成这一任务了(当然大部分情况下也可以利用cmdlines.txt来实现,不过某些程序的安装还是建议系统装完后才执行)
2、制作 n in 1 的光盘时,安装程序应该是根据setupldr.bin指定的位置去加载winnt.sif和txtsetup.sif,所以启动组要包含特定的winnt.sif和txtsetup.sif(没试过启动组中不包含txtsetup.sif是否ok.)
************************************************************

四、光盘启动菜单

使用EasyBoot做菜单应该说是很简单的了,毕竟EasyBoot本身就非常简单,而且自带的帮助也很详细,要做得漂亮些,菜单条就选用图像文本吧.

下面bcdw 2.0a1为例,简单介绍一下结合EasyBoot用bcdw直接引导ISO的方法

1、找到bcdw.ini,编辑内容如下:
\BootCD1.iso ;My Bootable CDRom1
\BootCD2.iso ;My Bootable CDRom1
("\"表明BootCD1.iso和BootCD2.iso均在光盘根目录下,";"后是菜单显示信息)
2、将bcdw.bin和bcdw.ini拷到MyCD\bcdw文件夹下,并把bcdw自带loader.bin改名为bcdwload.bin,拷到MyCD\ezboot文件夹下
3、制作好BootCD1.iso和BootCD2.iso并拷到MyCD文件夹下
4、在EasyBoot中增加菜单项,执行 run bcdwload.bin

ps:
事实上,这里直接引导iso的类型是有限制的,像Windows和Linux的启动光盘好像都不行,这点确实很可惜,跟CD Shell一样
---------------------------------------------------------------------------------------

五、虚拟机测试

建议使用VMWare 5.0或以上版本,不过已装好4.x的虚拟机系统要upgrade到5.0的话并不十分容易,请认真查看说明帮助,测试时要善用snapshot(5.0之后的版本能建立多个snapshot,非常方便),例如在测试cmdlines.txt的作用时,因为该文件是到了组件安装时才拷贝并加载的(还剩十来分钟时的样子),所以可以在之前做个snapshot,iso中更新了cmdlines.txt的相关内容后,直接还原该snapshot就可以使用新的cmdlines.txt设置了



大家多看看多学学吧,辛苦了。
3mb4 发表于 2007-6-21 20:23:53 | 显示全部楼层 来自 中国山东济南
学习中。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表