如果转载,请明确标明作者和转载文章原始网址:
http://m--y.spaces.live.com/blog/cns!BC5C9235FED19F9A!693.entry
谢谢
肖正波(happymy)
第三章 Image ConfigurationEditor(ICE)
3.1 Image ConfigurationEditor(ICE)概述
已经读过第一、二章的人应该知道Image Builder Wizard (IBW,镜像构建向导)可以通过读取AnswerFile(应答文件),来进行操作。Image ConfigurationEditor(ICE,镜像配置编辑器)主要功能的其中之一就是提供一个图形化的工具来编写AnswerFile,让你免去用记事本写应答文件的烦恼。当然你除了用ICE方便、快速的写应答文件以外,你还可以用ICE直接生成一个安装源(很方便,鼠标点两下即可,不需要了解和掌握WindowsPE 3.0、Bootmgr等相关的技术)。
3.2 安装Image ConfigurationEditor(ICE)
ICE对硬件的要求请参见第一章。
•步骤 1:将开发工具的Toolkit光盘插入光驱或者将开发工具的Toolkit光盘镜像载入虚拟光驱,如果没有自动运行,请找到光驱根目录里的Setup.exe并双击执行它。见图3-1
图3-1 Toolkit光盘的根目录
• 步骤 2:单击“Next”按钮,跳过说明。见图3-2
图3-2 Toolkit光盘的根目录
• 步骤 3:选中“I accept the terms in theLicense Ageement”,表示接受许可协议。然后单击“Next”按钮继续。见图3-3
图3-3 接受许可协议
• 步骤 4:选中“Custom”,表示自定义安装。然后单击“Next”按钮继续。见图3-4
图3-4 自定义安装
• 步骤 5:按照图3-5所示选择要安装的组件,单击“Browse”按钮可以选择各个组件的安装目录,然后单击“Next”按钮继续。
在这里详细介绍一下各个组件的功能:
Tools\Image Builder Wizard(IBW):IBW的原文件,如果要使用ICE创建BootableIBW镜像(WES7的安装源)则必须安装;
EmbeddedSDK:嵌入式特性的SDK,包含EWF、FBWF的头文件(.h)lib文件(用于自己编写EWF和FBWF的控制程序)、DialogFilter Editor(对话框过滤器)等工具;
Distribution Shares\x86 Distribution Share:32bit的的分布式共享库;
Distribution Shares\AMD64 DistributionShare:64bit的构架的分布式共享库,若安装则在安装过程中要求插入Standard_7_64bit的光盘;
注意:与上一代开发工具WES 2009 不同,组件库不再存储在数据库中,而转而存储在分布式共享库(DistributionShare,DS)中。由于不再依赖数据库所以带来一个问题:开发者每次建立一个工程往往都需要直接修改分布式共享库中的一些文件,也就是说分布式共享库成为工程文件的一部分。所以在此建议每建立一个工程时,开发人员自己建立一个分布式共享库供对应的工程使用,而不“安装”分布式共享库。建立分布式共享库是非常容易的。只要将分布式共享库的文件从光盘中拷贝出来即可。具体在下一节中详细讲解。

图3-5 选择要安装的组件
• 步骤 6:确认安装。然后单击“Install”按钮开始安装。见图3-6
图3-6 确认安装
• 步骤7:单击“Finish”按钮完成安装。见图3-7

图3-7 完成安装
3.3 开发基础
第一次启动ICE,会要求输入产品序列号(见图4-1),如果不输入可以评估180天。在这里我们选择进行评估。之后会询问是否帮助微软改进产品?
图3-8 输入产品序列号
首先介绍一下ICE的界面。见图 3-9,正式版的ICE的界面和前几个的测试版有一些变化。
①菜单栏,具体见表 3-1;
②工具栏,从左到右依次是新建应答文件、打开应答文件、关闭应答文件、保存、删除、查找、依赖性检查、生成应答文件及其所附带的系统文件;
③ Distribution Share(DS,分布式共享库)栏。主要显示分布式共享库中的组件;
④ AnswerFile(应答文件)栏。主要显示应答文件中的组件,在这里应答文件可以看作是上一代开发工具(XPE、WES)的工程文件;
⑤设置和属性栏。用于显示和修改被选中的组件的设置和属性(如果你选中的是DS中的组件,那么只能看不能改),特别要注意IBW在构建系统中分为7个阶段,大多数组件的属性的值需要针对这7个阶段分别设置。
⑥ 日志信息栏;
图3-9ICE的界面
表3-1 ICE的菜单栏
界面大家已经熟悉了,在继续之前,先让我们先了解一下整个的IBW构建系统镜像的流程和部署构建系统镜像的流程。在上面提到过IBW构建系统镜像和你进行部署的时候需要经历7个阶段(根据部署方式的不同,不会全部经过这7个阶段)。同在第一章中我们说过,WES7的开发(部署)流程,具体参见第一章的图 1-3。综合一下,具体来说当你部署系统镜像的方式主要分为两个阶段:
A:从零开始,使用IBW构建系统镜像(向上一章那样手动或者通过应答文件)。
B:你已经有了构建好的系统镜像-〉将系统进行镜像封装(sysprep+应答文件)-〉用imageX捕获镜像-〉用imageX释放(部署)镜像到每台设备中(或者使用其他工具完成系统镜像部署)。
见图 3-10,下图展示了IBW构建系统镜像的7个阶段:
图3-107个阶段的界面
A列,代表从零开始,使用IBW构建系统镜像所经历的阶段。B列,代表使用sysprep封装系统镜像后,在第一启动时进行的“安装”操作时所经历的阶段。对各个阶段的具体解释,请参见见表3-2。该表是从AIK的帮助文档中截取的,表中的windows安装程序相当于IBW。
注意:并不是在所有情况下都会经历每个阶段。
图中,windowsPE阶段被拆分成了2部分,分别代表IBW被加载的前后(IBW可以看作windows的安装程序)。

表3-2 各个阶段
3.4 Image ConfigurationEditor(ICE)基础操作
现在然我们正是用Image Configuration Editor(ICE)编写一个简单文件,好让大家熟悉一下ImageConfiguration Editor(ICE)的基础操作。
步骤一 打开Image ConfigurationEditor(ICE),选择菜单“File-〉Select Distrbution Share…”选择分布式共享库的位置,见图 3-11。
如果按照你在安装ICE过程中安装了分布式共享库的,那么安装目录中可以找到一个名称为DS的文件夹,该文件夹就是分布式共享库(64bit的分布式共享库的名称是DS64),例如:“C:\ProgramFiles\Windows Embedded Standard7\DS”,如果你没有安装分布式空享库,可以将32bit或64bit的runtime光盘的所有文件,拷贝到一个空文件夹下,这后选择这个文件夹。
图3-11 选择分布式共享库-1
步骤二 选择菜单“File-〉File/New AnswerFile“,新建立一个应答文件。,见图 3-12。
介绍一下左侧的DS库中各个分类的用途:
$OEM$ Folder :OEM 文件夹,该文件夹中的文件会被拷贝到最终的系统镜像中(具体参见帮助文档)。
Out-of Box Drivers:用户集成驱动的文件夹
Packages\Drives:系统自带的驱动
Packages\FeaturesPack: 系统组件包
Packages\languagePack: 语言包
Packages\product:配置包,该包只有一个组件,但该组件带有很多属性,用于进行一些配置。当你新建一个应答文件时会自动添加该组件包。
Templates:模板
图3-12 选择分布式共享库-2
步骤三 选择菜单“Validate-〉Add RequiredPackages(添加需要的组件包)“进行依赖性检查,双击下方日志区域的错误信息。见图 3-13,我们按照图 3-14所示,选择组件。
最底下是语言包,我们选择“Simplified(PRC)Chinese LanguagePack(简体中文)”之后单击“OK”按钮。
再次选择菜单“Validate-〉Add RequiredPackages(添加需要的组件包)“进行依赖性检查。(当在解决了依赖性问题后,应再进行一次依赖性检查,直到不再出现依赖性问题为止)。
在这里详细讲一下:
Windows BootEnvironment(标准的引导器)
EmbeddedWrite Filter Boot Environment(支持写过滤器的引导器)
Unbaranded Startup Screens(选择后系统的登录界面、系统属性等没有Windows EmbeddedStandard的标志)
WindowsEmbedded Startup Screens(选择后系统的登录界面、系统属性等有WindowsEmbedded Standard的标志)
CommandPrompt Shell with Custom ShellSupport(登录后CMD作为shell启动,或者设置一个程序作为shell启动)
WindowsExplorer Shell(登陆后启动标准的shell,就是大家平常看到的桌面)
BootableWindows USB Stack(系统镜像能从USB设备中引导,包括可移动磁盘)
StandardWindows USB Stack(系统镜像不能从USB设备中引导,包括可移动磁盘)
一个组件往往要依赖其他组件的支持,所以要进行依赖性检查。其实依赖性检查在其实在上一章中曾经介绍过。这里再讲一下,依赖性检查会出现一下情况:
至少选择一个组件,只能选一个;见图 3-15
至少选择一个组件,可多选;见图 3-16
必须选择所以组件,可多选;见图 3-17
发生冲突必须取消选中一个或多个组件(不会删除组件,而是禁用组件);见图 3-18
特别要注意:“ResolveDependencies”窗口中第一行的粗体字,表示那个组件(组件名)提出的要求。
如果选择菜单“Validate”->“Add RequiredPackages”(自动添加需要的组件,这样可以获得最小的镜像)
如果选择菜单“Validate”->“Add Required And OptionalPackages”会添加一些额外的组件,会提高软件兼容性,但是会增大体积。
建议用“Add Required Packages”然后根据自己需要添加组件。

图3-13 依赖性检查-1
图3-14 依赖性检查-2
图3-15 依赖性检查-3
图3-16 依赖性检查-4
图3-17 依赖性检查-5
图3-18 依赖性检查-6
步骤四 展开在左侧DS库的“Packages\Embedded EnablingFeatures”,双击“Enhanced Write Filter withHORM”,这样我们就将一个组件添加到应答文件中。见图 3-19
图3-19 添加组件
步骤五在选中组件的情况下,查看最右侧的配置和属性栏。这里面分两个选项卡“Settings”和“Properties”。“Settings”中主要是设置该组件在IBW中的设置,例如:对于EnhancedWrite Filter with HORM 组件来说,设置Enhanced WriteFilter(EWF)的工作模式,见图 3-20。“Properties”中主要是设置该组件在ICE中的属性,例如:是否启用或禁用该组件,见图 3-21。
这里边重点介绍一些如何配置“Settings”选项卡的属性。注意画红框的部分,我们在上面讲过Windows的安装有7个阶段,一个包(组件)的属性可能在不同阶段分别有设置,pass:P1代表第一阶段……一直到pass:P7(这些阶段随着部署的方式不同不会都被执行!)。
Fliter view 设置成“AllSettings”可以显示(只能看,不能改。如果修改请设置Fliter view 到对应的阶段)这个包(组件)的全部设置。
但是如果其中一个属性在不同阶段都有,只显示一个!设置后会变成粗体,另外PASS后面会有*号标明。同时对于有自定义设置的包(组件)的图标会变成深蓝色。
您可以显示一组包(组件)的全部属性,这样方便查找。
图3-20 组件的设置
图3-21组件的属性
到此为止,大家已经熟悉了一下ICE的基础操作,在下一章中我们将介绍一个开发实例。