Показать полную графическую версию : Несколько вопросов по .INF
Написал несколько инсталяшек через inf-файл и при детальной отладке увидел, что в "Установка компонентов Windows" появляется не только необходимая программа на установку/удаление но и еще пустая иконка без каких-либо записей и описаний. В чем бага? Тип установки sysoc.inf
jameszero
14-06-2007, 16:48
greg_b
Посмотри здесь (http://forum.oszone.net/showthread.php?p=529797&highlight=matchup%21#post529797) (я там, постом ниже, ответил), а если думаешь, что дело в твоём аддоне, то выложи inf файл из аддона и файл sysoc из него же.
jameszero - спасибо буду проверять
-1 Absolute path »
Вот по поводу данного DIR ID есть небольшой вопрос...
В своем аддоне я решил сделать "универсальность" - что бы ставился не только в Program Files, но и куда пользователь захочет (установка на "живую" систему). Все победил, кроме добавления ярлыка. На данный момент имею следующее (насколько я понял синтаксис):
[DefaultInstall]
ProfileItems =PROG.AddShortcut1
[PROG.AddShortcut1]
Name =%SRTC_NAME%
CmdLine =-1,,"%PROG_DIR%\%PROG_1%"
WorkingDir =-1,"%PROG_DIR%"
SubDir ="Утилиты"
InfoTip =%PROG_INFO%
[Strings]
SRTC_NAME ="Everything"
PROG_DIR ="C:\Program Files\Everything"
PROG_1 =Everything.exe
PROG_INFO ="Поисковая система"
При этом ярлык прописывается в Пуск-Все программы-Утилиты, имеет название Everything, верное описание, но вот с директориями - бардак. Путь запуска получается в ярлыке C:\Everything.exe, а Рабочая папка - пусто. Можно ли как-то получить нормальную строку запуска (C:\Program Files\Everything\Everything.exe) и рабочую папку?
mbgroot, Мне кажется, надо писать PROG_DIR в формате 8.3 - я недавно сталкивался примерно с этим (http://forum.oszone.net/post-928593-298.html, http://forum.oszone.net/post-698634.html#post698634, т.е.
PROG_DIR ="C:\PROGRA~1\EVERYT~1"
Мне кажется, надо писать PROG_DIR в формате 8.3 - я недавно сталкивался примерно с этим »
Спасибо, но я имел в виду несколько другое. мне интересен синтаксис записи строки CmdLine, т.е. возможно ли указание на программу, если она лежит не в %ProgramFiles%, а скажем в E:\Programs. DirID 16422 указывает как раз на %ProgramFiles%, а я хочу записать вместо этого как бы пустоту, и указать на другую директорию...
И еще маленький вопрос - имеет ли значение, где стоит PROG_DIR="C:\Program Files\Everything" - в начале списка [Strings] или в его конце?
mbgroot, так там и не обязательно Program Files - имхо, первым параметром может быть D:\Work, вторым - ProgDirName, а третьим - ProgName.exe - и ярлык должен слепиться. А где стоит строка - не важно.
не обязательно Program Files - первым параметром может быть D:\Work, вторым - ProgDirName, а третьим - ProgName.exe - и ярлык должен слепиться. »
Но чет он не слепляется... И вот тут (http://www.osronline.com/ddkx/install/inf-format_8e42.htm) написано:
CmdLine=dirid,[subdir],filename
The dirid specifies a value that identifies the directory in which the command program resides. For example, a dirid of 11 indicates the system directory. The possible dirid values are listed in the description of the dirid value in the DestinationDirs section.
If a subdir string is present, the command program is in a subdirectory of the directory referenced by dirid. The subdir specifies the subdirectory. If no subdir is specified, the program resides in the directory referenced by dirid.
The filename specifies the name of the program associated with the menu item.
Когда я пробую вместо dirid вставить %PROG_DIR%, то при попытке выполнить этот инф система говорит что ошибка в инфе. Т.е. насколько я понял, dirid в этом месте обязательно.
Сейчас заметил, что и с прописыванием в автозапуск такакя же ерунда. Значение PROG_DIR просто не подставляется, как бы оно ничему не равно. Зашел в папку C:\Windows\INF и на своем инфе нажал - Установить. После этого посмотрел реестр - автозапуск прописался корректно, проверил ярлык в пуске - некорректно. Запустил инф на установку еще раз - и ярлык тоже корректно прописался. Хотя я ничего не изменял - просто запускал... Ничче не понимаю...
Тогда ждем ответа гуру - неужели нет DirID со значением %SystemDrive%, %HomeDrive%?
DirID со значением %SystemDrive%, %HomeDrive% »
Вот (http://www.osronline.com/ddkx/install/create-inf_3aav.htm) список dirid (не знаю, полный или нет), я думал мне подойдет dirid -1, но видимо я где-то ошибся...
Если -1 это абсолютный путь, тогда попробуй так:
CmdLine =-1,"%PROG_DIR%",%PROG_1%
Возможно, надо будет привести PROG_DIR в формат 8.3
Посмотрел в руководстве, если ставить -1, то параметров всего два и следущим параметром указывается полный путь
если ставить -1, то параметров всего два и следущим параметром указывается полный путь »
Точно. Экспериментально подтвердилось. Только вот не хочет инф корректно устанавливаться при вызове из скрипта модиф. модуля 7zSFX. Когда он из него запускается, получается, что %PROG_DIR% ничему не равно. Если уже после распаковки в ручную запустить инф на установку - все прекрасно прописывается... хотя уже при при запуске из 7zSFX в инфе физически прописано PROG_DIR ="C:\Program Files\Everything". Может это из-за того, что эта строчка послеедняя?
jameszero
30-10-2008, 20:03
mbgroot
не хочет инф корректно устанавливаться при вызове из скрипта модиф. модуля 7zSFX»
Это не то, что нужно?
Это не то, что нужно? »
Дык у меня почти то же самое... Но не робит... Может конечно где-то ошибся - файл прилагаю.
jameszero
30-10-2008, 21:09
mbgroot
Нужно в файле конфигурации поменять местами строчки.
вместо:
RunProgram="hidcon:cmd /c copy %NameInf% %WINDIR%\\INF"
RunProgram="hidcon:cmd /c echo %PathInst%^\"|rw.exe >> %WINDIR%\\INF\\%NameInf%"
сделать:
RunProgram="hidcon:cmd /c echo %PathInst%^\"|rw.exe >> %NameInf%"
RunProgram="hidcon:cmd /c copy %NameInf% %WINDIR%\\INF"
AutoInstall и AutoInstall1 по аналогии.
Нужно в файле конфигурации поменять местами строчки. »
Не помогло... Даже еще ниже передвинул - результат тот же.
jameszero
30-10-2008, 21:35
mbgroot
Странно, у меня отрабатывает нормально.
(отредактирован только запуск через RunProgram)
mbgroot, проверил предложение jameszeroНужно в файле конфигурации поменять местами строчки. »Все работает, хотя причины такого поведения мне не ясны. Варианты вроде равнозначны. Пробовал в Вашем варианте добавить задержку до запуска inf файла, не помогло. Немного подправил строки: RunProgram="fm10:hidcon:cmd /c chcp 1251&echo \"%PathInst%\"|rw.exe >> %NameInf%"
RunProgram="hidcon:cmd /c copy %NameInf% %WINDIR%\\INF"и удалил последнюю кавычку в inf файле. Во первых переменная стала выглядеть "нормально" в двух кавычках, а во вторых путь с кириллицей обрабатывается правильно.
А что это за утилита rw.exe, ссылку можно?
А что это за утилита rw.exe, ссылку можно? »
Просто рылся в яндексе и обнаружил форум и на нем тему (http://www.softboard.ru/index.php?showtopic=34362). Автор утилиты Тролль. У них там очень много интересных решений по батникам.
На рабочем компе скрипт отработал нормально (даже мой вариант). Что с домашним - непонятно, буду сейчас мучить.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC