通常我们在创建Windows Embedded Standard组件的时候都会使用Component Designer生成sld文件,然后由Component Database Manager导入到组件数据库,在一个Windows Embedded Standard项目中。
其中可能有多个组件,包括utilitie组件,driver组件,和shell组件,当数量和版本的规模庞大到一定程度的时候,管理,分发这些组件的时候并不是非常方便。其实有一个很好的方式,可以把组件制作成安装程序的方式,并且还可以配置相应的约束条件,更有利于管理和分发。同时,把这些高品质的组件分享给其他开发人员更可以完善Windows Embedded Standard的生态环境。
下面由最简单的部分开始。我们先需要创建一个Windows Embedded Standard驱动程序的组件。我选择的驱动程序是FUJITSU U1010的Realtek ALC262声音控制器的驱动程序,Realtek的声音控制器广泛的应用在各种桌面计算机和移动计算机上。
开始之前,我们需要创建相应的文件夹结构。我个人习惯在C根目录下面创建Components文件夹,来容纳半成品组件。当然可以根据需要来选择自己喜欢的名字。在Components文件夹下面,创建ALC262文件夹,在ALC262文件夹下,分别创建doc,rep,sld三个文件。doc用于安放相应的说明,例如安装和组件说明,卸载的说明,和授权协议等。一个高品质的组件,文档是很重要的。准备工作已经完成,现在可以开始组件的创建过程:
作为一个驱动程序的组件,首先,要导入相应的inf文件。打开Component Designer,File|Import...可以找到用于导入的对话框。在Realtek驱动程序的文件夹下,我们发现多个inf文件,哪个才是合适的呢?
通常有两种方式来选,***种方法,如果这个设备安装过Windows XP,X:\Windows\inf\下会有名为oem1.inf,oem2.inf,ome3.inf......其中一定有一个Realtek的inf,这个inf就是我们需要的。第二种方法,打开tap生成的devices.pmq文件,会对硬件做详细的描述:HDAUDIO\FUNC_01&VEN_10EC&DEV_0262,HDAUDIO为设备所在总线,DEV_0262为设备ID。驱动程序中包含DEV_0262的inf文件就是我们需要的。
导入完成,已经生成了相应的sld文件,我们还需要对其加以完善。可以看到Realtek High Definition Audio已经在Components下面。我们按照下面几步来完善这个sld文件。 #p#
1.在Repositories下建立一个新的Repository,命名为Realtek High Definition Audio Repository
2.在Packages下建立一个新的Package,命名为Realtek High Definition Audio Package。
3.Realtek High Definition Audio Repository的Group Membership下面添加Realtek High Definition Audio Package。
4.在Realtek High Definition Audio组件的Group Membership下面添加Realtek High Definition Audio Package。
5.保存sld文件到sld文件夹。
6.设置Realtek High Definition Audio Repository的Source Path,设置为rep文件夹。因为sld文件已经保存,所以位置会变成相对路径.\..\rep。
7.最重要的一步,在Realtek High Definition Audio的属性里设置Repository为Realtek High Definition Audio Repository。
8.Realtek High Definition Audio的Files下删除HDA32.cat,在Windows XP Embedded驱动程序签名是无效的。
9.按照Files的列表,把这些文件复制到rep文件夹下。
10.View|Release Components,可以在使用组件的时候避免警告,***保存sld文件。
这样,一个组件的sld文件就已经完成了。接下来,我们需要把组件制作成安装文件,以便安装到组件数据库中去。
1.创建weupdate.inf文件。内容如下:
- [Version]
- Signature="$WINDOWS NT$"
- [XPEInstall]
- MinimumPlatformRevision=2010
- MinimumDatabaseVersion=2010
- QFENumber=SP3
- Reboot=0
- [Preinstall]
- Database Backup=DBBackup
- Uninstall SP3 Beta=SPUninst, 1902
- [DBBackup]
- Text=You should backup your existing Windows XP Embedded database before updating the database.\n\nIf you have already backed up your database, click OK to continue.\n\nFor information on how to back up your database, click Help.
- Document=".\doc\BackupXPEDB.rtf"
- [SPUninst]
- Text=You should remove previous versions of Windows XP Embedded Service Pack 3 before updating the database. If you already done this, click OK to proceed.\n\nUpdating the database over a previous version may cause errors during build.\n\nFor information on how to remove previous versions of Windows XP Embedded Service Pack 3, click Help.
- Document=".\doc\RemoveXPESP3.rtf"
- [SLD.NoRep]
- sld\HDARt.sld
如果采用此inf文件,一定要保证doc下有相应文件名的文档,否则无法正确运行weupdate.exe。
2.复制weupdate.inf和weupdate.exe到ALC262文件夹下。
3.***制作成cab自解压安装程序,设置解压缩后自动运行weupdate.exe。
自此,可分发的Windows Embedded Standard组件制作完成,我们可以利用这个方法把常用的驱动程序,应用程序作成组件共享给其他的开发人员,甚至,我们可以把这些组件集中起来,来形成一个规模庞大的组件资源库,完善Windows Embedded Standard的生态环境,为更多的开发人员提供便利,同时,也***化发挥组件的价值。
【编辑推荐】