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

       

Директории назначения


    Переменные путей - это результат использования дисковой системы в MS Windows, где реальный путь к приложению может не совпадать с предполагаемым из-за разности имён разделов. К примеру, не всегда системная директория расположена как C:\Windows. Для того, чтобы файлы попали в нужную директорию назначения, в системе есть несколько системных переменных, определяющих конкретные пути в системе, например, в любой MS Windows 16-битная переменная %WinDir% (формата 8.3) содержит полный путь к каталогу с Windows. Помимо него, в NT-системах есть аналогичная переменная с именем %SystemRoot%, 32-х разрядная. Эти переменные почему-то нельзя использовать в INF-скриптах, однако взамен этого INF поддерживает целую кучу собственных переменных для системных директорий, на 90% ненужных, так как на всех существующих системах MS Windows эти пути ведут в одни и те же поддиректории главного каталога с MS Windows. Исключение составляет лишь системный подкаталог, в MS Windows 95, 98, ME он выглядит как %WinDir%\System, а в Windows NT 4.0, Windows 2000 и выше - %SystemRoot%\System32. Некоторые переменные не поддерживаются во всех системах (и в 9x и в NT). Это относится к DOS-утилитам, спулеру печати и директории загрузчика. Переменные в теле INF-скрипта обозначаются так же, как и в BAT-файлах - обрамляются знаками процента по бокам, например, %11%. Их невозможно изменить в секции [strings] для использования как директорий назначения и файлы всё равно будут скопированы в директорию, изначально соответствующую переменной. Однако можно использовать эту переменную для значений, подставляемых в другие типы секций (не секция [DestinationDirs]). Хотя при этом весь смысл подмены переменной теряется.



ID Значение Описание
DIRID_ABSOLUTE -1 Реальный путь, указанный после запятой (cpf.test = -1, C:\Temp).
DIRID_ABSOLUTE_16BIT  0xffff 16-битный реальный путь, формата 8.3 (для 16-разрядной setupx.dll в MS Windows 95)
DIRID_NULL 0 Заглушка, пустой путь. Применяется для отладки.
DIRID_SRCPATH 1 Директория, где находится сам INF-скрипт. Полезна для запуска других секций в этом же скрипте посредством RunP*SetupCommands
DIRID_WINDOWS 10 Собственно, сама MS Windows. Типично, но не закон, что для Windows NT 4.0, Windows 2000 - это C:\Winnt, для остальных - C:\Windows. В командной строке эта директория также также содержится в переменных %Windir% (все MS Windows) и %SystemRoot% (NT 4 и выше)
DIRID_SYSTEM 11 Системная поддиректория MS Windows. Для NT 4, 5 и выше - это %SystemRoot%\system32, для Windows 95, 98, ME - это %Windir%\SYSTEM.
DIRID_DRIVERS 12 Директория размещения системных драйверов. Для MS Windows NT 4 и выше - это %SystemRoot%\system32\drivers, для MS Windows 95 - это %Windir%\SYSTEM\IOSUBSYS, для MS Windows 98, ME - %Windrir%\SYSTEM\DRIVERS
DIRID_COMMANDS 13 Директория с консольными DOS-утилитами, только для MS Windows 95, 98, ME. Размещение: %Windir%\Command. Для MS Windows NT 4 и выше эта переменная неизвестна и файлы, направленные туда, попадут в мусоросборник %SystemRoot%\System32\unknown
DIRID_INF 17 Типично - %Windir%\INF. Обычно этот каталог имеет атрибут "скрытый". В нём хранятся почти все INF скрипты самой системы и их бинарные кэшированные копии, нужные для ускорения построения списка драйверов.
DIRID_HELP 18 Директория %Windir%\Help. В ней находятся почти все файлы справок (расширение .chm, .hlp, .cnt, .gid).
DIRID_FONTS 20 Системные шрифты. Размещение %Windir%\Fonts. Кстати, простое копирование файлов шрифтов в этот каталог не сделает доступным этот шрифт для ваших приложений. Как правильно установить шрифт из INF-скрипта, смотрите здесь.
DIRID_VIEWERS 21 Директория модулей программы QuickView. Расположение: MS Windows 95, 98, ME - %WinDir%\SYSTEM\VIEWERS; MS Windows NT 4.0 и выше - %SystemRoot%\System32\viewers
DIRID_COLOR 23 Директория, содержащая профили цветовых настроек мониторов. Типично - %Windir%\system(32)\COLOR
DIRID_APPS 24 Неизвестно, но для Windows NT 4.0 и выше, установленной на диск C:\ - это директория C:\. Скорее всего, это аналог системной переменной %SystemDrive%
DIRID_SHARED 25 Та же %SystemRoot% или %WinDir%. Почему не "Program Files" - ума не приложу.
DIRID_BOOT 30 Корневая директория загрузочного диска. Обычно C:\
DIRID_COMPBOOT 31 Корневая директория главного диска сжатого загрузочного диска. Только для MS Windows 95, 98
DIRID_SYSTEM16 50 Системная директория для 16-битных программ (хотя, кажется, на эти правила Microsoft сама плевать хотела, т.к. все 16-битные программы валяются в system32), только для MS Windows NT 4.0 и выше, %SystemRoot%\system
DIRID_SPOOL 51 Директория принтерного спула (кэша), только для MS Windows NT 4.0 и выше - %SystemRoot%\system32\spool
DIRID_SPOOLDRIVERS 52 Директория драйверов принтеров, только для MS Windows NT 4.x и выше - %SystemRoot%\system32\spool\drivers\w32x86
DIRID_USERPROFILE 53 Директория с профилем текущего пользователя. В MS Windows NT 4.0 - это %SystemRoot%\Profiles\%USERNAME%, в MS Windows 2000 и выше - это %SystemDrive%\Documents and Settings\%USERNAME%. В MS Windows 95, 98, ME - это, скорее всего, сама %WinDir%.
DIRID_LOADER 54 Только для систем NT. Путь к загрузочному каталогу, содержащему файлы ntldr или osloader.exe. В 99% случаев это C:\
DIRID_PRINTPROCESSOR  55
<
/p>     Если в секции "куда" [DestinationDirs] не определено ни одной директории, все файлы будут копироваться в каталог по умолчанию, каковым является DIRID_SYSTEM, описанный выше в таблице. Каталог по умолчанию можно изменить (только в сессии выполнения текущего скрипта), указав в секции [DestinationDirs] параметр DefaultDestDir. Его значение будет директорией по умолчанию. Это полезно для некоторой экономии в размере файла скрипта, к примеру, при установке множества пакетов в один программный каталог. Например:

[DestinationDirs]

DefaultDestDir=24, Program Files\Program Name

   Переменные путей нельзя использовать в секции [strings], в диалогах BeginPrompt и EndPrompt, в именах любых секций и в качестве обозначения типов параметров реестра. Во всех оставшихся местах, кроме секции [DestinationDirs], переменные директорий необходимо обрамлять знаками процента. В секции [DestinationDirs]этого делать нельзя. Если необходимо копировать файлы не в существующую директорию, а в её поддиректорию, необходимо указать оставшийся путь после знака запятой и пробела относительно имени переменной, как видно на примере.


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