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
    要执行超出了可用命令的任务,您可以执行其他程序,如果程序支持,使用DUA“Execute”命令传递命令行参数。
6. 运行时重新配置
    可以先用默认的设置部署DUA,然后用DUA脚本重新配置。如果您需要更改轮询频率,更新资源,或其它类似的设置,这是非常有用的。例如,要改变轮询位置,您可以使用下面的脚本:
//Delete existing poll location registry value
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
//Specify polling location and type
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
//Set the host port to 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
7. 小结
    DUA组件能使您为您的设备配置更新。DUA组件包括一个可执行文件,在设备上作为服务程序运行并且解析一个您创建的脚本,脚本概述了执行更新时采取的行动。创建命令脚本后,设备更新脚本编译器编译产生可执行文件,然后部署到该设备。