INF DelFiles 指令
注意
如果正在生成通用或 Windows 驱动程序包,则本指令无效。 请参阅使用通用 INF 文件和 Windows 驱动程序开发入门。
DelFiles 指令引用 INF 文件中其他地方的 INF 编写器定义的部分,并导致在对引用 DelFiles 指令的部分进行操作时删除该文件列表。
[DDInstall] |
[DDInstall.CoInstallers] |
[ClassInstall32] |
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)
Delfiles=file-list-section[,file-list-section]...
DelFiles 指令可以在正式语法语句所示的任何部分中指定。 此指令也可以在以下任何 INF 编写器定义的部分中指定:
- 由 DDInstall.Interfaces 部分中的 AddInterface 指令引用的 add-interface-section。
- 在 InterfaceInstall32 部分中引用的 install-interface-section
DelFiles 指令引用的每个已命名部分都有一个或多个条目,其形式如下:
[file-list-section]
destination-file-name[,,,flag]
...
file-list-section 可以有任意数量的条目,每个条目单独一行。
条目
destination-file-name
指定要从目标删除的文件名。
请勿指定 CopyFiles 指令中列出的文件。 如果一个文件同时列在 CopyFiles 引用部分和 DelFiles 引用部分中,而该文件当前在系统中具有有效签名,则操作系统可能会优化去除复制操作,但执行删除操作。 这很可能不是 INF 编写器的本意。
注意
不能使用 %strkey% 标记来指定目标文件名条目。 有关 %strkey% 标记的详细信息,请参阅 INF 字符串部分。
flag
此可选值可以是下列值之一,以十六进制表示(如下所示),或者也可以是十进制值:
0x00000001 (DELFLG_IN_USE)
删除命名的文件,可能是在安装过程中使用了该文件。
如果给定文件在 INF 处理过程中正在使用而无法删除,则在 INF 中设置此标志值会将文件删除操作安排在系统重新启动之后。 否则,此类文件将不会被删除。
0x00010000 (DELFLG_IN_USE1)(Windows 2000 或更高版本的 Windows)
此标志是 DELFLG_IN_USE 标志的高字版本,具有相同的用途和效果。 只有在基于 NT 的系统上安装时,才能使用该标志。
在 INF 中设置此标志值可防止与 INF 中的 COPYFLG_WARN_IF_SKIP 标志发生冲突,因为 DelFiles 和 CopyFiles 指令引用了相同的 file-list-section。
注解
重要
必须谨慎使用此指令。 强烈建议不要在即插即用 (PnP) 功能驱动程序的 INF 文件中使用 DelFiles 指令。
任何 file-list-section 名称在 INF 文件中都必须是唯一的,但可以被同一 INF 文件中的 CopyFiles、DelFiles 或 RenFiles 指令引用。 此类 INF-writer-defined 部分名称必须遵循定义部分名称的一般规则。 有关这些规则的详细信息,请参阅 INF 文件的常规语法规则。
DelFiles 指令不支持使用系统定义的平台扩展名(.nt、.ntx86、.ntia64、.ntamd64、.ntarm 或 .ntarm64)来修饰 file-list-section 名称。
INF 文件的 DestinationDirs 部分控制所有文件删除操作的目标,与包含特定 DelFiles 指令的部分无关。 如果 DelFiles 指令引用的命名部分在同一 INF 的 DestinationDirs 部分中有相应条目,则该条目将明确指定目标目录,命名部分中列出的所有文件都将从中删除。 如果命名的部分未列在 DestinationDirs 部分中,则 Windows 将使用 INF 中的 DefaultDestDir 条目。
示例
此示例展示了 DestinationDirs 部分如何指定在处理简单设备驱动程序 INF 时进行删除文件操作的路径。
[DestinationDirs]
DefaultDestDir = 12 ; DIRID_DRIVERS
; ...
[AHA154X]
CopyFiles=@AHA154x.MPD
DelFiles=ASPIDEV ; defines delete-files section name
; ... some other directives and sections omitted here
[ASPIDEV]
VASPID.SYS ; name of file to be deleted, if it exists on target
; ...