PDA

Показать полную графическую версию : Несколько вопросов по .INF


Страниц : 1 2 [3] 4

greg_b
14-06-2007, 16:13
Написал несколько инсталяшек через 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 из него же.

greg_b
14-06-2007, 17:06
jameszero - спасибо буду проверять

mbgroot
26-10-2008, 20:42
-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) и рабочую папку?

Stanner
27-10-2008, 20:00
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"

mbgroot
27-10-2008, 20:45
Мне кажется, надо писать PROG_DIR в формате 8.3 - я недавно сталкивался примерно с этим »
Спасибо, но я имел в виду несколько другое. мне интересен синтаксис записи строки CmdLine, т.е. возможно ли указание на программу, если она лежит не в %ProgramFiles%, а скажем в E:\Programs. DirID 16422 указывает как раз на %ProgramFiles%, а я хочу записать вместо этого как бы пустоту, и указать на другую директорию...
И еще маленький вопрос - имеет ли значение, где стоит PROG_DIR="C:\Program Files\Everything" - в начале списка [Strings] или в его конце?

Stanner
27-10-2008, 21:00
mbgroot, так там и не обязательно Program Files - имхо, первым параметром может быть D:\Work, вторым - ProgDirName, а третьим - ProgName.exe - и ярлык должен слепиться. А где стоит строка - не важно.

mbgroot
27-10-2008, 21:10
не обязательно 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 и на своем инфе нажал - Установить. После этого посмотрел реестр - автозапуск прописался корректно, проверил ярлык в пуске - некорректно. Запустил инф на установку еще раз - и ярлык тоже корректно прописался. Хотя я ничего не изменял - просто запускал... Ничче не понимаю...

Stanner
27-10-2008, 21:20
Тогда ждем ответа гуру - неужели нет DirID со значением %SystemDrive%, %HomeDrive%?

mbgroot
27-10-2008, 21:26
DirID со значением %SystemDrive%, %HomeDrive% »
Вот (http://www.osronline.com/ddkx/install/create-inf_3aav.htm) список dirid (не знаю, полный или нет), я думал мне подойдет dirid -1, но видимо я где-то ошибся...

Stanner
27-10-2008, 21:41
Если -1 это абсолютный путь, тогда попробуй так:

CmdLine =-1,"%PROG_DIR%",%PROG_1%

Возможно, надо будет привести PROG_DIR в формат 8.3

Stanner
29-10-2008, 21:28
Посмотрел в руководстве, если ставить -1, то параметров всего два и следущим параметром указывается полный путь

mbgroot
30-10-2008, 19:30
если ставить -1, то параметров всего два и следущим параметром указывается полный путь »
Точно. Экспериментально подтвердилось. Только вот не хочет инф корректно устанавливаться при вызове из скрипта модиф. модуля 7zSFX. Когда он из него запускается, получается, что %PROG_DIR% ничему не равно. Если уже после распаковки в ручную запустить инф на установку - все прекрасно прописывается... хотя уже при при запуске из 7zSFX в инфе физически прописано PROG_DIR ="C:\Program Files\Everything". Может это из-за того, что эта строчка послеедняя?

jameszero
30-10-2008, 20:03
mbgroot
не хочет инф корректно устанавливаться при вызове из скрипта модиф. модуля 7zSFX»
Это не то, что нужно?

mbgroot
30-10-2008, 20:52
Это не то, что нужно? »
Дык у меня почти то же самое... Но не робит... Может конечно где-то ошибся - файл прилагаю.

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 по аналогии.

mbgroot
30-10-2008, 21:22
Нужно в файле конфигурации поменять местами строчки. »
Не помогло... Даже еще ниже передвинул - результат тот же.

jameszero
30-10-2008, 21:35
mbgroot
Странно, у меня отрабатывает нормально.
(отредактирован только запуск через RunProgram)

gora
31-10-2008, 10:17
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, ссылку можно?

mbgroot
31-10-2008, 16:34
А что это за утилита rw.exe, ссылку можно? »
Просто рылся в яндексе и обнаружил форум и на нем тему (http://www.softboard.ru/index.php?showtopic=34362). Автор утилиты Тролль. У них там очень много интересных решений по батникам.
На рабочем компе скрипт отработал нормально (даже мой вариант). Что с домашним - непонятно, буду сейчас мучить.




© OSzone.net 2001-2012