Длинные имена в INF-файлах.
К сожалению, Вы не сможете с помощью INF файла обычным способом скопировать файлы с длинными именами. Поддержка длинных файловых имен в INF файлах немного усложнена. Для этого нужно осуществить следующий процесс: исходный файл должен быть с коротким именем, после установки его имя нужно переименовать в длинное. Для удаления процесс повторяется в обратном направлении: длинное файловое имя переименовывается в короткое и удаляется уже файл с 8.3 именем. Для этих действий в реестре предусмотрены специальные ключи:
Следующий ключ используется для переименования файлов:
| HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RenameFiles |
Этот ключ используется для удаления файлов:
| HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DeleteFiles |
Для действий переименования или удаления нужно добавить подключ с любым именем в соответствующую ветвь реестра. Минимум два ключа должны быть определены. Первый ключ содержит имя каталога, где будет происходить переименование или удаление файлов. Следующий ключ(и) содержит имена файлов: первое - короткое, второе - длинное и его атрибуты, если нужно:
| 1 | Только для чтения |
| 2 | Скрытый |
| 3 | Системный |
Следующий пример демонстрирует переименование в каталоге C:\Files файла About.txt в About View files.txt и устанавливает ему атрибут скрытый, а также переименование этого же файла в подкаталоге Xmp папки C:\Files и устанавливает ему атрибут только для чтения:
|
[Version] Signature=$Chicago$
[DefaultInstall]
HKLM,Software\Microsoft\Windows\CurrentVersion\RenameFiles\SubDir,,,"%30%\Files\Xmp" |
Ключи для удаления файлов имеет такую же структуру. Рассмотрим пример, который в каталоге C:\Files удаляет файл About View files.txt и такой же файл удаляет в подкаталоге Xmp папки C:\Files:
|
[Version] Signature=$Chicago$
[DefaultUninstall]
[Delete]
HKLM,Software\Microsoft\Windows\CurrentVersion\DeleteFiles\SubDir,,,"%30%\Files\Xmp" |
Параметры Example и SubDir могут быть любыми, например, названием Вашей программы, подкаталога и т.д. Важно, чтобы они были разными, т.к. переименование/удаление происходит в разных каталогах.
После того, как любые из действий выполнятся, эти данные будут удалены из реестра автоматически.
