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


Pennsylvania for movers and packers. |

Динамические директории (AdvancedINF) - часть 2


Это имена переменных одной и той же динамической директории в разной интерпретации. Первое число (49000) содержит путь к директории "C:\Program Files\Program Name" в формате 8.3 в кодировке OEM (DOS). То есть, эта переменная содержит строку такого вида: "C:\Progra~1\Progra~1", что необходимо для поддержки 16-разрядного интерпретатора, например, setupx.dll или для других целей. Второе число (49001) содержит этот же путь к директории уже в 32-х разрядном формате путей, с поддержкой длины строки до 256 символов и в ANSI-кодировке (MS Windows). Третье число (49002) содержит строку пути в формате 8.3 в ANSI-кодировке. Нужно для формирования пути в системах с принудительно установленным форматом путей в 8.3. Четвёртое число (49003) содержит строку пути в OEM-формате (DOS), но в длинной интерпретации. Для чего это необходимо, неизвестно, вероятно, для полноты картины. При употреблении переменных можно указать любое, наиболее подходящее. Естественно, наиболее точным для MS Windows будет 49001. Несмотря на такие ухищрения, при проверке во всех четырёх переменных находится одна и та же строчка, без искажений. Быть может, это нереализованные функции перекодирования, неизвестно.

   

С самым простым в этой главе мы разобрались - с, собственно, назначением директорий. Теперь приступим к более сложному, недокументированному и неоднозначному. Это - ключи, указываемые через запятую после имени дочерней секции, указывающей путь в реестре. В нашем примере - это строка 49000,49001,49002,49003 = RegistryDir,5. В этом случае ключ равен 5. Номер ключа в корне изменяет поведение интерпретатора:

1, 9 - Выводится диалоговое окно для указания директории назначения пользователем:

Выбор директории пользователем

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

[RegistryDir]

,,,"Укажите директорию для распаковки","C:\Test"

    После указания каталога все файлы в секции [cpf.test], а у нас это filename.ext - копируются в указанный пользователем каталог, а также все остальные файлы в секциях, в назначении которых указана эта переменная.



Содержание  Назад  Вперед