简介 有多种为 Microsoft XP Embedded 创建自定义组件的方法。例如,可以将导入设备驱动程序 .inf 文件直接导入到 Component Designer 工具中(与 Microsoft NT Embedded 4.0 相比,这是一项巨大的进步)。可以通过导入 Devices.pmq(Target Analyzer Probe (TAP) 或 Target Analyzer (TA) 的输出)来创建组件 — 到目前为止一切顺利 — 但是如何创建能够描述自定义应用程序的组件呢?
出于本文的目的,我决定构建一种设备,它使用 TimerShot Windows XP PowerToy — 一种非常酷的应用程序,可以从连接的映像设备捕获映像,并且将该映像到预设的位置 — 我的本地硬盘上,或者网络共享上(在本文末尾可以找到指向 Windows XP PowerToy 的链接)。可以将 TimerShot 配置为每数秒钟或每数分钟抓取一个映像;所有这些都在应用程序内部配置,并且在 Windows XP 注册表中。我还将包含另一个名为“PhotoDisplay”的应用程序,它是我专门为本文编写的。PhotoDisplay 可用来查看已存储的 JPEG 文件。
遗憾的是,没有任何工具可以自动完成为应用程序生成 Windows XP Embedded 组件的过程 — 需要进行一些侦探工作。因此,我将摆脱猎鹿人,叫上我的朋友华生医生(这里是双关语),并且开始工作。
安装选项 在构建 Windows XP Embedded 设备时,可以使用多种用于添加第三方应用程序/技术的选项。这些选项主要取决于设备的硬件配置以及用于制造发行设备的方法。
在构建从 R/W 媒体(通常是硬盘)中启动并且包含 CD-ROM/DVD-ROM 驱动器、显示器、键盘和鼠标的设备时,将具有最大的灵活性。在该配置中,可以直接在 Embedded Target 上运行第三方安装程序,这将直接在目标设备上复制和配置应用程序。如果要构建一次性的设备,或者如果要在 Windows XP Embedded 上测试应用程序以确保所有必需的操作系统组件都存在(将在下面讨论),则该选项很有用。
另一个选项是生成 Windows XP Embedded 映像(通常是生成到 \Windows Embedded Images 文件夹中),再将必需的应用程序/资源手动添加到生成文件夹中。然后,可以将 Windows XP Embedded 操作系统映像(以及应用程序/资源)复制到可启动的媒体,并且随后可以对应用程序进行测试。这仅适用于不要求注册 COM 对象或安装基础操作系统服务的简单应用程序。
最好的方法是创建一个满足以下条件的组件:可以在 Target Designer 内部使用该组件,并且可以像任何其他 Windows XP Embedded 组件一样选择该组件。如果您已经在多用户情况中安装了 Windows XP Embedded 工具,则这是一种理想的选项。但是,这需要完成一些工作。让我们分析一下如何安装应用程序,以及通常修改操作系统的哪些部分。
安装程序的形式和大小各不相同,既可以是简单的 xcopy、IExpress,也可以是要求用户提供注册信息并且可能发行多张 CD/DVD 的 GUI 安装程序。安装程序可能安装数据库引擎或操作系统服务、设备驱动程序或支持 DLL,并且可能对操作系统注册表或 INI 文件进行更改 — 在某些情况下,所安装的文件可能被安装到 PC 上的多个文件夹中:用于存放核心应用程序的 Program Files,用于存放设备驱动程序的“\Windows\System32”,或者其他取决于安装程序的文件夹。要确定应该在您的 Windows XP Embedded 组件中包含哪些内容,乍看起来似乎并不是一件普通的工作。令人欣慰的是,有一些工具和技术可以为您提供协助。
下一部分将对在确定要在 Windows XP Embedded 组件中包含哪些文件/注册表设置和操作系统组件时需要的工具进行高级概述。
侦探工具包 本部分概述了在生成自定义 Windows XP Embedded 组件时需要的工具。
在生成和测试组件时,需要两组工具。其中一些工具将运行在开发 PC 上,而其他工具将包含在目标设备上以调试应用程序或组件。让我们将这些工具划分为上述两个类别,然后考察一下每种工具的使用方法。
在开发 PC 上使用的工具 虽然无法更改应用程序的安装程序的行为,但是可以监控操作系统以判断安装应用程序后产生了哪些更改。可以使用许多工具来协助完成这一过程。因为某些安装程序在安装过程中 要求重新启动,所以理想情况下应该使用能够在重新启动以后监控 PC 的文件系统和注册表中的更改的工具。诸如 Inctrl5 (ZDNet)、SysDiff (Microsoft) 之类的应用程序在安装应用程序之前 获取文件系统和注册表的快照,然后在安装之后 获取文件系统和注册表的快照,并且提供有关二者之间差异的报告 — 这可以协助确定应该在组件中包含哪些文件。请注意,在安装应用程序时已经在运行的应用程序和服务也可能对文件系统和注册表进行更改。
下面是已在我的开发 PC 上使用的工具列表,从而确定应该在我的自定义组件中包含哪些文件/注册表项 — 我将通过本文稍后介绍的过程中的各个步骤来解释每种工具的用法。
• InCtrl5 — 用于获取文件系统和注册表的快照,并且提供差异列表 (ZDNet)
• Dumpbin — 用于确定应用程序/DLL 使用了哪些 DLL (Microsoft Visual Studio .NET)
• Depends — 也可以用于确定应用程序使用了哪些 DLL(以及 API)
• RegMon — 动态监控对注册表所做的更改 (NT System Internals)
• FileMon — 动态监控文件系统 (NT System Internals)
• Windows XP Embedded 开发工具 — Target Analyzer Probe、Component Designer、Component Database Manager、Target Designer
在目标设备上使用的工具 使用上述工具来确定需要哪些文件和注册表项只是难题的一部分。在已经生成 Windows XP Embedded 映像之后,应用程序还将需要接受测试以确保它能够按预期工作 — 应用程序有可能动态加载 DLL 或者创建 COM 对象的实例,但无法使用 Dumpbin 或 Depends 捕获这些信息。因此,在目标设备上需要一些调试工具。下面是已在我的目标设备上使用的工具列表(在部署最终的操作系统映像之前,应该删除这些工具)。
• RegMon — 动态监控对注册表所做的更改 (NT System Internals)
• FileMon — 动态监控文件系统 (NT System Internals)
在下一部分中,我将演练这些工具的用法。
综述 过程概述
首先,让我们扼要重述设备并列出可用的组件。我们的计划是基于 Windows XP Embedded 生成安全设备。在该例中,我将使用 Toshiba Tecra 9000 膝上型电脑作为我的开发 PC,使用 Logitech USB Camera 和 Windows XP Embedded TimerShot PowerToy(有关该组件的位置,请参见本文末尾的链接)作为我的目标设备,并且使用前面提到的侦探工具包。
Toshiba 膝上型电脑具有两个硬盘分区。主分区包含 Windows XP Professional 以及我的所有开发工具(Windows XP Embedded、Visual Studio .NET 等等),并且被格式化为 NTFS。我还具有一个大小为 700MB 的辅助分区(大小大概与光盘相等),并且被格式化为 FAT32。我已经修改了我的 BOOT.INI(它驻留在可启动驱动器的根目录中,以便为 Windows XP Embedded 添加辅助启动选项 — 注意,Boot.ini 被配置为具有 System 和 Hidden 属性) — Boot.ini 如下所示:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP
Embedded" /fastdetect
在启动时,我得到了两个选项:启动到 Windows XP Professional(在我的主分区上),或者启动到我的 Windows XP Embedded 映像(在我的辅助分区上)。在 30 秒钟的超时以后,默认选项是启动到 Windows XP Professional。
步骤 1 — 从安装程序中捕获信息
创建自定义组件的第一步是确定应用程序所需的文件和注册表设置。安装程序和侦探工具应该在 Windows XP Professional 上运行。可以针对完全配置的操作系统映像来运行和测试应用程序 — 本文稍后将针对 Windows XP Embedded 测试应用程序。
Windows XP PowerToys Web 站点列出了一些 PowerToy;单击相应的链接以某个 PowerToy 时,将提示您选择 Open、Save、Cancel 或 More Info。单击“Save”可将 TimershotPowertoySetup.exe 程序保存到硬盘上。注意,选择“Open”时将并安装 PowerToy。此时,不需要捕获安装过程中的信息。
还将需要文件系统和注册表快照工具。出于本文的目的,我已经选择使用 ZDNet 提供的 Inctrl5,尽管还可以使用许多类似的工具。
以下为 Inctrl5 的外观:安装程序的位置被插入(在我的示例中为 c:\stuff\XP-PowerToys\TimershotPowertoySetup.exe),报告输出位置被更改为指向我的安装文件夹,然后我单击 GO!。
图 1. InCtrl5 捕获我的开发 PC 的注册表和文件系统的快照,然后启动 PowerToy 安装程序。安装过程完成后,将获取第二个快照,并且生成一个报告。
经过编译的报告将列出对文件系统、注册表、INI 文件和文本文件(autoexec.nt 和 config.nt)所做的全部 更改 — 对于安装 PowerToy 的情况,该报告包含在安装 PowerToy 时正在
【责编:admin】
--------------------next---------------------