DUA组件使您可以远程更新Windows Embedded Standard 2009设备的运行时映像。它是运行在您设备上的一个服务程序,该服务程序处理一个执行更新和维护操作的脚本。DUA是一个有着很少依赖关系的小组件,对更新Windows Embedded Standard 2009映像是很有用的。用DUA,您可以更新应用程序或应用程序数据,部署新的二进制文件和设备驱动程序,修改注册表,自动执行清理和管理任务。
1. 向配置中添加DUA组件
DUA是一个组件,能使您的运行时映像远程自行更新。启用此功能,您需要添加DUA到您的配置并配置它,以便它能够为更新映像轮询一个确定的位置。
2. 添加DUA组件
要在您的配置上添加DUA组件,在目标设计器的浏览器中,在“Software>System>Management>Infrastructure”下找到Device Update Agent组件,添加到您的配置。要测试和管理您设备上的DUA,在目标设计器的组件浏览器中,找到Software>System>Management>Applications,添加Event Log组件;在“Software>System>User Interface>Shells>Windows Shell”下,添加Registry Editor组件。同时在您配置DUA设置之前完成检查依赖关系。
3. 配置DUA组件
因为DUA要在您的设备上作为服务程序运行,并为更新设定一个指定的位置,您必须配置DUA用来轮询包含更新的位置,以及它的启动和运行参数。DUA有一些其他配置设置,例如,为服务程序指定用户帐户的权限,为轮询网站或媒体指定轮询间隔和触发点(在轮询间隔中随机启动),设置环境变量,和工作目录。
4. 设备更新脚本
DUA使用一个可执行文件,它是由设备更新脚本编译器(Dusc.exe) 从您 创建的自定义脚本(.dus文件)编译的。在运行Dusc.exe之前,你必须通过在命令提示符下运行“regsvr32 duscaut.dll”注册 Duscaut.dll文件。 这些文件位于您的开发计算机上的[驱动器] \Program Files\Windows Embedded\bin目录下。注意,在Windows Vista系统上Dusc.exe必须用管理员权限运行。脚本由一套17个被预定义的命令组成,如下表所示。在该脚本中,您可以使用命令号码或它的名称和一个参数数组。创建更新命令脚本后,运行脚本编译器创建命令文件( . dup文件) ,放在DUA设置的指定轮询的位置,连同作为更新部分一起发布到到映像文件中。
命令
|
顺序
|
描述
|
Reboot
|
1
|
关闭和重启系统
|
Delay
|
2
|
挂起执行
|
Execute
|
3
|
执行新进程—指定的上下文
|
CreateDirectory
|
4
|
创建一个新目录
|
RemoveDirectory
|
5
|
移除一个存在的目录
|
SetFileAttributes
|
6
|
设置一个文件的属性
|
CopyFile
|
7
|
复制存在的文件到一个新文件
|
DeleteFile
|
8
|
删除存在的文件
|
RegCreateKey
|
9
|
在注册表中创建一个注册表项
|
RegDeleteKey
|
10
|
删除一个存在的注册表项
|
RegSetValue
|
11
|
为指定的注册表值设置数据和类型
|
RegDeleteValue
|
12
|
从指定的注册表项,删除命名值
|
RegSaveKey
|
13
|
保存注册表项和子键到指定的文件
|
RegRestoreKey
|
14
|
从一个文件恢复注册表项
|
ExecuteProcess
|
15
|
执行新进程
|
HTTPGet
|
16
|
通过HTTP(S)读并且检索一个远程文件
|
MoveFile
|
17
|
移动存在的文件到一个新位置
|
5. 编辑脚本
使用简单的文本编辑器如notepad.exe创建和修改DUA脚本。您也可以从
http://www.codeplex.com/duascriptgen 下载使用DUAScriptGen 工具。这个工具提供GUI(图形用户界面)帮助您创建DUA脚本。 它是特殊工具,让编写DUA脚本文件的安全更新更加容易。Mike Hall 和 Aaron Stebner最初创造了这个工具。 已经通过Codeplex发布了。
DUA脚本遵循表随在上表中描述的命令语法。例如,要延迟10秒,创建c:\UpdatesDUA目录并且重新开始系统,你可以使用以下脚本:
2,0,10
4,,,C:\UpdatesDUA
1,,DAREBOOTOPT_REBOOT
4,,,C:\UpdatesDUA
1,,DAREBOOTOPT_REBOOT
要执行超出了可用命令的任务,您可以执行其他程序,如果程序支持,使用DUA“Execute”命令传递命令行参数。
6. 运行时重新配置
可以先用默认的设置部署DUA,然后用DUA脚本重新配置。如果您需要更改轮询频率,更新资源,或其它类似的设置,这是非常有用的。例如,要改变轮询位置,您可以使用下面的脚本:
//Delete existing poll location registry value
10,0,HKEY_LOCAL_MACHINE,,System\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000
10,0,HKEY_LOCAL_MACHINE,,System\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000
//New registry key
9,0,HKEY_LOCAL_MACHINE,,System\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0
9,0,HKEY_LOCAL_MACHINE,,System\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0
//Specify polling location and type
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,Type,4,1
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,Type,4,1
//Set remote host to CustomHost
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,HostName,1,CustomHost
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,HostName,1,CustomHost
//Set the host port to 80
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,HostPort,4,80
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,HostPort,4,80
//Set the protocol to HTTP (0)
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,Protocol,4,0
11,0,HKEY_LOCAL_MACHINE,0,SYSTEM\CurrentControlSet\Services\DUAgent\Parameters\Config\Sessions\0000,0,Protocol,4,0
7. 小结
DUA组件能使您为您的设备配置更新。DUA组件包括一个可执行文件,在设备上作为服务程序运行并且解析一个您创建的脚本,脚本概述了执行更新时采取的行动。创建命令脚本后,设备更新脚本编译器编译产生可执行文件,然后部署到该设备。