Копирование файлов
Копирование файлов
Копирование в INF-файлах реализовано наиболее сложно. Для его выполнения необходимо не только использовать ключевое слово CopyFiles, но и, кроме того, создать три отдельных блока INF-файла: DestinationDirs, SourceDisksFiles и SourceDisksNames. Рассмотрим простой пример.
Листинг 15.7. Копирование файлов
[version]
Signature = $CHICAGO$
[DefaultInstall]
CopyFiles = INFcopy
[INFcopy]
1.INF
[DestinationDirs]
INFcopy = 17
[SourceDisksFiles]
1.INF = 55
[SourceDisksNames]
55 = "имя диска", , 1
В этом примере для описания копируемых файлов используется блок INF-файла [INFcopy]. Ссылка на него содержится в ключевом слове CopyFiles. В этом блоке находятся только названия файлов, которые должны быть скопированы (если файлов несколько, каждый из них пишется в отдельной строке). Кроме блока [INFcopy], файл обязательно должен хранить и три других стандартных блока INF-файлов.
Блок [DestinationDirs] определяет каталоги, в которые должны копироваться файлы, описанные в отдельных блоках INF-файла, предназначенных для описания копируемых файлов. При этом все файлы, описанные в одном блоке INF-файла, должны копироваться только в один каталог (то есть если бы в нашем блоке [INFcopy] описывалось два файла, например 1.INF и 2.INF, то они оба должны были бы скопироваться в один каталог). Формат определения каталога, в который будут копироваться файлы, следующий:
«блок описания копируемых файлов»=«числовой номер каталога»,«дальнейший путь к каталогу»
Числовой номер каталога представляет собой число, идентифицирующее одну из системных папок. Рассмотрим некоторые из этих чисел, а также каталоги, которые они определяют.
? 10 — %systemroot%.
? 11 — %systemroot%system32.
? 17 — %systemroot%Inf.
? 53 — %userprofile%.
? 54 — %systemdrive%.
? 1 — говорит о том, что необходимо использовать абсолютный путь, который должен быть записан после числового номера (через запятую). Абсолютным называется путь, который не начинается с числового номера каталога. Например, числовым является путь d: est1.
С помощью блока [SourceDisksFiles] осуществляется присваивание каждому копируемому файлу уникального идентификатора, он будет определять в блоке [SourceDisksNames] название диска, с которого копируется файл. Формат строк этого блока следующий:
«название копируемого файла»=«уникальный идентификатор диска, на котором находится этот файл»
Блок [SourceDisksNames] определяет диски, на которых находятся копируемые файлы. Формат строк этого блока таков:
«уникальный идентификатор диска»=«имя диска»,«метка диска»,«серийный номер диска»
Метка диска отображается в диалоге копирования файлов. Эта метка также отображается в диалоге, выводимом, если система не может найти указанные для копирования файлы. В этом случае система попросит вас вставить диск, название которого как раз и указано в блоке [SourceDisksNames].