При закрытии подписчики были переданы в рассылку "Всё о работе в Интернет" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Другие наши рассылки: Новости нашего сайта: Продолжение, начало в выпусках: 1 В конец записи
оцените: 1 2 3 4 5 Книга "Недокументированные возможности Windows XP. Библиотека пользователя", Глава 4. Другие возможности Windows XP. Часть 5. Inf-файлы, продолжение. Копирование файлов Копирование файлов реализовано в inf-файлах наиболее сложно. Для выполнения копирования необходимо не только использовать ключевое слово COPYFILES, но и создавать три отдельных блока inf-файла: DESTINATIONDIRS, SOURCEDISKSFILES и SOURCEDISKSNAMES. Давайте рассмотрим простой пример. Листинг 4.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, тогда оба этих файла будут копироваться в один каталог). Формат определения каталога, в который будут копироваться файлы, следующий: «блок описания копируемых файлов»=«числовой номер каталога»,«дальнейший путь к каталогу». Числовой номер каталога представляет собой число, идентифицирующее одну из системных папок. Давайте рассмотрим некоторые из этих чисел, а также каталоги, которые они определяют.
С помощью блока [SOURCEDISKSFILES] осуществляется присваивание каждому копируемому файлу уникального идентификатора, который будет определять в блоке [SOURCEDISKSNAMES] название диска, из которого выполняется копирование файла. Формат строк этого блока следующий: «название копируемого файла»=«уникальный идентификатор диска, на котором находится этот файл». Блок [SOURCEDISKSNAMES] определяет диски, на которых находятся копируемые файлы. Формат строк этого блока таков: «уникальный идентификатор диска»=«имя диска»,«метка диска»,«серийный номер диска». Метка диска отображается в диалоге копирования файлов. Также эта метка отображается в диалоге, выводимом если система не может найти указанные для копирования файлы. В этом случае система попросит вас вставить диск, название которого как раз и указано в блоке [SOURCEDISKSNAMES]. Удаление файлов Удаление файлов напоминает их копирование, поэтому мы рассмотрим этот процесс лишь поверхностно — в подсказках к листингу 4.8. Для определения блоков, содержащих описания удаляемых файлов, используется ключевое слово DELFILES. Листинг 4.8. Удаление файлов [version] Signature = $CHICAGO$ ;данный подраздел будет вызываться с помощью команды rundll32 [DefaultUninstall] DelFiles = infdel ;мы будем удалять файл vfolder.inf [infdel] vfolder.inf ;теперь данный блок указывает не каталог, в который копируются файлы, ;а каталог, из которого удаляются файлы, описанные в блоке [DestinationDirs] infdel = 17 [SourceDisksFiles] vfolder.inf = 55 [SourceDisksNames] 55 = "имя диска", , 1 Создание ярлыка на файл с меню Пуск Это еще одна возможность, которой можно воспользоваться при помощи inf-файла. С помощью ключевого слова PROFILEITEMS можно определить блок inf-файла, с помощью которого описывается создаваемый в меню ПУСК ярлык. Давайте рассмотрим пример, с помощью которого создается ярлык на программу ВОССТАНОВЛЕНИЕ СИСТЕМЫ в меню ПУСК (СТАНДАРТНЫЕ/СЛУЖЕБНЫЕ). Листинг 4.9. Создание ярлыка [version] Signature="$CHICAGO$" [DefaultInstall] ProfileItems=SRProfile [SRProfile] Name="Восстановление системы" CmdLine=11,restore,rstrui.exe SubDir="Стандартные\Служебные" InfoTip="Это подсказка, отображаемая при наведении указателя на ярлык" DisplayResource="%systemroot%\system32\restore\rstrui.exe",2048 ProfileItems=SRProfile Блок для описания ярлыка в меню ПУСК может содержать в себе следующие ключевые слова.
Расширенные inf-файлы Расширенные inf-файлы отличаются от обычных одной строкой, которую нужно добавить в блок [VERSION]. Например, ниже приведен пример блока версии для расширенного inf-файла. [Version] Signature="$CHICAGO$" AdvancedINF=2.5, "Эта строка будет выводится, если на компьютере не найдено библиотеки advpack.dll " Также для работы с расширенными inf-файлами необходима библиотека advpack.dll, по умолчанию расположенная в каталоге %systemroot%. Если перед началом выполнения расширенного inf-файла система не найдет данной библиотеки, тогда она выведет сообщение, указанное в ключевом слове AdvancedINF после запятой. К тому же, как мы знаем, расширенные inf-файлы вызываются с помощью команды rundll32.exe ADVPACK.dll, LaunchINFSectionEx «имя файла», «имя раздела», «имя cab-файла», «флаг». Тогда как обычные inf-файлы вызываются с помощью команды rundll32.exe setupapi.dll, InstallHinfSection «раздел в файле для начала установки», «флаг», «путь и имя файла». Запуск программ до и после установки Расширенные inf-файлы поддерживают такую возможность, как запуск команд перед или после установки inf-файла. При этом для указания блока, описывающего программы, запускаемые перед установкой inf-файла, используется ключевое слово RUNPRESETUPCOMMANDS. А для указания блока, описывающего программы, запускаемые после установки inf-файла, используется ключевое слово RUNPOSTSETUPCOMMANDS. Давайте посмотрим на пример использования этих ключевых слов. Листинг 4.10. Запуск программ до и после установки inf-файла [version] Signature = $CHICAGO$ AdvancedINF=2.5, "Эта строка будет выводится, если на компьютере не найдено библиотеки advpack.dll " [DefaultInstall] RunPreSetupCommands=RunPre RunPostSetupCommands=RunPost [RunPre] calc.exe cmd.exe [RunPost] "rundll32.exe IEAKENG.dll, DoReboot" Приведенный на листинге inf-файл перед своей установки вызывает калькулятор Windows, а потом вызывает стандартный командный интерпретатор Windows. После же свей установки он вызовет диалоговое окно с вопросом о перезагрузке компьютера. Конечно, диалоговое окно с вопросом о перезагрузке принадлежит Internet Explorer, но зато оно работает. Вопрос о перезагрузке компьютера можно было вызвать и с помощью флагов вызова inf-файла, но в листинге мы специально использовали команды rundll32. Не забывайте также, что данный inf-файл не выполнится после выбора команды УСТАНОВИТЬ из контекстного меню inf-файла. Для его установки придется воспользоваться командой RunDll32 advpack.dll, LaunchINFSection d:\1.inf, DefaultInstall. Где d:\1.inf соответствует пути к Inf-файлу и его названию. Вывод сообщения перед установкой Также перед или после установки inf-файла можно вывести окно сообщения с произвольным текстом. Диалог сообщения, выводимый перед установкой, позволяет эту установку отменить. Он содержит в себе две кнопки ОК и ОТМЕНА. Если нажать на кнопку ОТМЕНА, тогда установка inf-файла будет отменена. Диалог сообщения, выводимый после установки, является информационным и содержит только одну кнопку — ОК. Чтобы вывести диалоговое окно перед установкой, необходимо воспользоваться ключевым словом BEGINPROMPT (окно сообщения будет выведено до вызова программ, описанных ключевым словом RUNPRESETUPCOMMANDS), а чтобы вывести окно сообщения после установки, необходимо воспользоваться ключевым словом BEGINPROMPT. В листинге 4.11 приведен простой пример использования как окна сообщения, выводимого перед установкой, так и окна сообщения, выводимого после установки. Листинг 4.11. Вывод окна с произвольным текстом [version] Signature = $CHICAGO$ AdvancedINF=2.5, "Эта строка будет выводится, если на компьютере не найдено библиотеки advpack.dll " [DefaultInstall] RunPreSetupCommands = RunPre BeginPrompt=BeginText EndPrompt=EndText [RunPre] cmd.exe [BeginText] Prompt="Это пример текста, который выведется перед установкой" Title=""Это заголовок для сообщения, которое выведется перед установкой" [EndText] Prompt="Это пример текста, который выведется после установки" Блок для описания сообщения, выводимого перед установкой inf-файла (в нашем случае BEGINTEXT) содержит в себе следующие ключевые слова.
Продолжение следует Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=169
|
В избранное | ||