Переменные путей - это результат использования дисковой системы в 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 |