УЧЕБНИК ПО АВТОУСТАНОВКЕ WINDOWS

       

Флаги копирования


    Во время копирования файлов посредством INF-скрипта можно переименовывать файлы, то есть указывать не только каталог назначения, но и новое имя файла в каталоге назначения, а также определять поведение интерпретатора флагами копирования во время выполнения процедуры копирования при встрече ошибок. Пример описания этих возможностей дан ниже:

[DefaultInstall]

CopyFiles=cpf.files

[cpf.files]

filenam2.exe,filename.ext,2

    Как видно в примере, в дочерней секции копирования в каждой строке через запятую нужно указывать все условия, относящиеся к копированию конкретного файла.

Здесь:

filenam2.exe - имя файла, которое необходимо получить в месте назначения;

filename.ext - старое имя файла, которым он обладает в директории (архиве) дистрибутива;

2 - флаг обработки события, которое наступит, если в месте назначения уже есть файл с таким же именем или же в случае сбоя при копировании.

Все известные значения флагов:



ID Значение Описание
COPYFLG_WARN_IF_SKIP 0x00000001 Выводить предупреждающее сообщение, если пользователь пытается пропустить файл после неудачной операции копирования
COPYFLG_NOSKIP 0x00000002 Скрыть кнопку пропуска файла в случае неудачного копирования. Полезно при замене важных системных файлов.
COPYFLG_NOVERSIONCHECK 0x00000004 Не обращать внимание на версию файла, который уже присутствует в месте назначения и всегда перезаписывать файлом из дистрибутива. Не есть хорошо.
COPYFLG_FORCE_FILE_IN_USE 0x00000008 заменить файл в месте назначения, даже если он используется.Теоретически при этом интерпретатор попытается переименовать в случайное мусорное имя использующийся файл, а затем скопирует файл из дистрибутива.
COPYFLG_NO_OVERWRITE 0x00000010 Не копировать файл, если он уже существует. Например, личные настройки в INI-файле некультурно заменять настройками по умолчанию при каждом обновлении программы.
COPYFLG_NO_VERSION_DIALOG 0x00000020 не копировать и не выводить вопросов, если файл в месте назначения уже существует и его версия новее, чем версия файла в дистрибутиве
COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040 Не копировать, если версии совпадают. То есть заменять только старые версии файлов
COPYFLG_REPLACEONLY 0x00000400 Осуществлять операцию копирования только если файл уже существует. Полезно при выпуске обновлений к многочисленным пакетам.

    Как видно из примера, флаги можно записывать и в коротком виде, отбрасывая нули слева. Эти флаги являются составными, то есть в одном флаге можно указать несколько - прибавляя их значения. К примеру, флаг 64 - это флаг, состоящий из трёх флагов - 40, 20 и 4.



Содержание раздела