Директива INF DelFiles
Внимание!
Если вы создаете универсальный пакет или пакет драйвера Windows, эта директива является недопустимой. См. статью Использование универсального INF-файла и начало работы с драйверами Windows.
Директива DelFiles ссылается на раздел, определенный INF-writer, в другом месте 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-writer:
- Раздел add-interface, на который ссылается директива AddInterface в DDInstall. Раздел "Интерфейсы ".
- Раздел install-interface, на который ссылается раздел InterfaceInstall32
Каждый именованный раздел, на который ссылается директива DelFiles , имеет одну или несколько записей следующего вида:
[file-list-section]
destination-file-name[,,,flag]
...
Раздел списка файлов может содержать любое количество записей, каждая из которых размещена в отдельной строке.
Записи
destination-file-name
Указывает имя файла, удаляемого из места назначения.
Не указывайте файл, указанный в директиве CopyFiles . Если файл указан как в разделе CopyFiles, так и в разделе, на который ссылается DelFiles, и файл в настоящее время присутствует в системе с допустимой подписью, операционная система может оптимизировать операцию копирования, но выполнить операцию удаления. Это, скорее всего, не то, что предназначено для записи INF.
Примечание
Вы не можете использовать маркер %strkey% для указания записи destination-file-name. Дополнительные сведения о маркерах %strkey% см. в разделе Inf Strings Section.
flag
Это необязательное значение может быть одним из следующих значений, выраженным в шестнадцатеричной нотации, как показано здесь, или десятичным значением:
0x00000001 (DELFLG_IN_USE)
Удалите именованный файл, возможно, после его использования в процессе установки.
Установка этого значения флага в INF помещает операцию удаления файлов в очередь до перезапуска системы, если данный файл не может быть удален, так как он используется во время обработки этого INF-файла. В противном случае такой файл не будет удален.
0x00010000 (DELFLG_IN_USE1) (Windows 2000 или более поздние версии Windows)
Этот флаг представляет собой версию флага DELFLG_IN_USE с тем же назначением и эффектом. Этот флаг следует использовать в только для установки в системах на основе NT.
Установка этого значения флага в INF предотвращает конфликты с флагом COPYFLG_WARN_IF_SKIP в INF с директивами DelFiles и CopyFiles , ссылающимися на один и тот же раздел file-list-section.
Комментарии
Важно!
Эту директиву необходимо использовать с осторожностью. Настоятельно рекомендуется не использовать директиву DelFiles в INF-файле для драйвера функции Plug and Play (PnP).
Любое имя раздела списка файлов должно быть уникальным для INF-файла, но на него могут ссылаться директивы CopyFiles, DelFiles или RenFiles в других частях того же INF-файла. Такое имя раздела, определяемое inf-writer, должно соответствовать общим правилам определения имен разделов. Дополнительные сведения об этих правилах см. в статье Общие правила синтаксиса для ФАЙЛОВ INF.
Директива DelFiles не поддерживает декорирование имени раздела списка файлов с помощью системного расширения платформы (.nt, .ntx86, .ntia64, .ntamd64, .ntarm или .ntarm64).
Раздел DestinationDirs INF-файла управляет назначением для всех операций удаления файлов, независимо от раздела, содержащего определенную директиву DelFiles . Если именованный раздел, на который ссылается директива DelFiles , имеет соответствующую запись в разделе DestinationDirs того же INF-файла, эта запись явно указывает целевой целевой каталог, из которого будут удалены все файлы, перечисленные в именованном разделе. Если именованный раздел отсутствует в разделе DestinationDirs , Windows использует запись DefaultDestDir в INF.
Примеры
В этом примере показано, как в разделе DestinationDirs указывается путь для операции удаления файла, которая выполняется при обработке простого INF-драйвера устройства.
[DestinationDirs]
DefaultDestDir = 12 ; DIRID_DRIVERS
; ...
[AHA154X]
[email protected]
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
; ...