Войти

Показать полную графическую версию : Руководство по созданию аддонов (текущая версия)


Страниц : 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20 21

volk1234
23-07-2008, 12:23
В контексте предыдущих постов и давнего желания доработать раздел приложения про ярлыки,

доработана статья: Приложение 2. Тонкости использования inf- файлов. (http://forum.oszone.net/post-780927-109.html)

Новое: Cоздание и удаление ярлыка на Рабочем Столе, Cоздание и удаление нескольких ярлыков, Флаги ProfileItems (0x00000003), Копирование одного и того же файла в разные папки.

Изменения отдельно от статьи:

3. Cоздание и удаление ярлыка на Рабочем Столе

[DefaultInstall]
ProfileItems =PROG.AddDeskShortcut

[Uninstall]
ProfileItems =PROG.AddDeskShortcut

[PROG.AddDeskShortcut]
Name =%SRTC_NAME%,0x00000001
CmdLine =16422,%PROG_DIR%,%PROG_1%
WorkingDir =16422,%PROG_DIR%
SubDir =%PROG_SDIR3%
InfoTip =%PROG_INFO%

[PROG.DelDeskShortcut]
Name =%SRTC_NAME%,0x00000003
SubDir =%PROG_SDIR3%

[Strings]
SRTC_NAME = "Имя ярлыка"
PROG_DIR = "Путь к папке программы в Program Files"
PROG_1 = ИмяФайла.exe
PROG_INFO="Всплывающее сообщение"
PROG_SDIR3 ="..\..\Рабочий стол"

Из выше приведенных примеров видно, что ярлык практически в любой локальной папке пользователя в "Documents and Settings" можно создать при помощи конструкции
SubDir = "..\..\ "
Как это работает?
Рабочей директорией для ProfileItems по умолчанию является папка Программы в меню Пуск или другими словами %профиль%\Главное меню\Программы. Конструкцией ..\..\ мы поднимается на два уровня вверх, т.е. в %профиль% и затем указывает путь, например в %профиль%\Рабочий стол или в %профиль%\SendTo. Также можно поднятся еще выше, например,
SubDir ="..\..\..\Default User\Рабочий стол"

4. Cоздание и удаление нескольких ярлыков

Это элементарно, но некоторые пользователи все еще путаются.

[DefaultInstall]
ProfileItems =PROG.AddShortcut1, PROG.AddShortcut2, PROG.AddShortcut3

[Uninstall]
ProfileItems =PROG.DelShortcut1, PROG.DelShortcut2, PROG.DelShortcut3

[PROG.AddShortcut1]
Name =%SRTC_NAME1%,0x00000001
CmdLine =16422,%PROG_DIR%,%PROG_1%
WorkingDir =16422,%PROG_DIR%
SubDir =%PROG_SDIR1%
InfoTip =%PROG_INFO%

[PROG.AddShortcut2]
аналогично

[PROG.AddShortcut3]
аналогично

[PROG.DelShortcut1]
Name =%SRTC_NAME1%,0x00000003
SubDir =%PROG_SDIR1%

[PROG.DelShortcut2]
аналогично

[PROG.DelShortcut3]
аналогично


Важно: Пока нет профиля реального пользователя (а его нет до первого входа в систему), ярлыки имеющие флаг 0x00000001 будут создаваться в дефолтном профиле. При установке на "живой" системе, ярлык с флагом 0x00000001 будет создан только у текущего пользователя. Соответственно 0x00000003 - Удалить пункт меню (ярлык) для текущего пользователя.

4.Флаги ProfileItems (опять Gosh).

Есть в руководстве по INF файлам, но по этому списку более понятна логика складывания флагов:

0x00000001 Создать пункт меню для текущего пользователя
0x00000002 Удалить пункт меню
0x00000003 Удалить пункт меню для текущего пользователя
0x00000004 Создать пункт меню для профиля All Users в папке Пуск\Все программы
0x00000005 Создать пункт меню для профиля Current User в папке Пуск\Все программы
0x00000006 Удалить пункт меню для профиля All Users в папке Пуск\Все программы
0x00000007 Удалить пункт меню для профиля Current User в папке Пуск\Все программы


7. Копирование одного и того же файла в разные папки.

[DestinationDirs]
File.Copy=16422,"Prog"
FileYet.Copy=16422,"Prog\Subdir"

[File.Copy]
filename.dll,,,4

[FileYet.Copy]
filename.dll,,,4

Предлагаю обсудить всем заинтересованным, до добавления в Руководство.
[hr]
А и еще JamesZero,
не мог бы ты прокомментировать мое высказвание :
Из выше приведенных примеров видно, что ярлык практически в любой локальной папке пользователя в "Documents and Settings" можно создать при помощи пути SubDir = "..\..\Путь к папке внутри "Documents and Settings".

А то я только по анологии понимаю действие "..\", может ты научными словами обьяснишь.

Black Babay
23-07-2008, 12:48
Хочу разобраться до конца.
Если приведен такой параметр:

[PROG.AddShortcut]
Name =%SRTC_NAME%


т.е ключ явно не прописан, установка проходит успешно, ярлык создается в All Users.
Считается ли ошибкой отсутствие ключа, или правильнее будет так:

[PROG.AddShort]
Name =%SRTC_NAME%,0x00000001

jameszero
23-07-2008, 12:58
Black Babay
есть ли возможность при установке на "живую" систему добавить ярлык дефолтному пользователю. »
Создать ярлык в профиле текущего пользователя, а затем скопировать его в дефолтный. К примеру, средствами модифицированного sfx модуля 7-zip.

Считается ли ошибкой отсутствие ключа, или правильнее будет так:
Ошибкой не считается. Второй вариант неравнозначен первому, он создаст ярлык в профиле Current User, а первый в All Users.


volk1234
Рабочей директорией для ProfileItems по умолчанию является папка Программы в меню Пуск или другими словами %профиль%\Главное меню\Программы
Конструкцией ..\..\ мы поднимается на два уровня вверх, т.е. в %профиль% и оттуда уже пляшем, хоть в %профиль%\Рабочий стол, хоть в %профиль%\SendTo

Vadikan
25-07-2008, 00:38
volk1234, только не забывай вести лог изменений - указывай те (под)разделы, которые подверглись изменениям, чтобы потом я мог перенести в оффлайн версию.

Stanner
25-07-2008, 17:44
Black Babay:

Я так создаю ярлыки пользователям по умолчанию:

[PROG.AddShortcut]
...
SubDir ="..\..\..\Default User\Рабочий стол"
...

DyadyaGenya
26-07-2008, 17:36
volk1234, доброго времени суток, давно здесь не был, смотрю масса изменений произошла, даже если не считать появление сп3 :-)
вот появилось время и немного решил позаниматься аддоностроительством, три дня мучался как добавить ярлык на рабочий стол, только хотел задать вопрос и сам случайно расколупал способ добавления, просто не заметил как вытер Documents and Settings после слэша, с ним не добавлялся, захотел предложить вам добавить в статью, там то этого нет, и случайно прочитал приложения :-) так что в этом вопрос отпал. Но возник другой, который я как раз собирался колупать следующим. Не все понял как добавить ярлык в контекстное меню, пока ни ваш способ не получился
[PROG.AddShortcut]
Name = "Send_To_Shortcut",0x00000008,9
CmdLine = 11,,prog.exe

[PROG.DelShortcut]
Name = "Send_To_Shortcut",0x0000000A,9

ни ..\..\Send To

и в дополнение, не смог найти информацию про ключи 0x00000008,9 и 0x0000000A,9 если можно подскажите где читать или дайте расшифровку тут

и последний вопрос, обратил внимание на то, что путь ..\..\Рабочий стол у меня стоит без кавычек и срабатывает, а в примере с кавычками (я то свои в сердцах что не получается случайно вытер) так как все же правильно? имеет ли это большое значение, и думаю если это принципиально, то можно было бы добавить в статью инфу и про эти кавычки, потому что с татье про инф файл там вроде жестко прописано с кавычками

стал дочитывать изменения в статье и увидел добавку про иконки, там имеется ввиду иконка в компонентах винды? потому что я сразу же решил попробовать и чо то не меняется, и если это значок в компонентах винды, то было бы прикольно прописывать туда свои иконки, но сперва хотел бы разобраться почему стандартные не меняет

volk1234
26-07-2008, 18:22
[PROG.AddShortcut]
Name = "Send_To_Shortcut",0x00000008,9
CmdLine = 11,,prog.exe »

Вы свой код приведите, а не из примера.

Black Babay
27-07-2008, 11:14
volk1234, наверное вопрос немного глупый, но... Можно ли создать ярлык "Мой Компьютер" в Quick Launch при помощи inf-файла?

DyadyaGenya
27-07-2008, 12:15
volk1234, в том то и дело, что наверно простое копирование примера не подходит, вот я и спрашивал, что за не смог найти информацию про ключи 0x00000008,9 и 0x0000000A,9 если можно подскажите где читать или дайте расшифровку тут »

и ещё, может кому пригодиться или даже получит одобрение и дальнейшее отображение в статье такая идея:
поскольку разным пользователям приходится ставить разные наборы программ, чтоб не собирать множество сборок которые будут отличаться друг от друга всего несколькими програмками, можно использовать свойство sysoc адонов попадать в список компонентов винды, и допустим делать мультизагрузку (как самый простой способ) с использованием разных вариантов winnt.sif где в секции [Components] указать какие интегрированые проги отключить, что то типа того:

[Components]
winamp=off

у меня так получилось, пока на большее не сподобился, хотя думаю можно при наличие времени и умения сделать даже графический интерфейсик, насколько я знаю у Boa Soft имеется подобный опыт (програмулина для выбора устанавливаемых прог)

volk1234
27-07-2008, 13:01
вот я и спрашивал, что за »

Почему именно так не скажу, пусть Jameszero колется. Впервые упоминается им здесь: http://forum.oszone.net/post-661398-216.html

[Components]
winamp=off »

Как способ автоустановки - неплохой вариант. Я даже както не задумывался об отключении аддонов через winnt.sif.
В любом случае, к написанию аддонов это не имеет отношения, скорее к пользователям UpdatePack.

DyadyaGenya
27-07-2008, 14:13
volk1234, спасибо за ссылку, давно читал начало той ветки форума, или не обратил в свое время внимание по далекости перспективы применения (все таки тогда токо начинал этим заниматься)
а по поводу автоустановки, если не в вашей статье, так скорее всего там где обсуждается файл ответов :-) хотя в вашей статье косвенно такая возможность упоминается в разделе про sysoc аддоны
Аддоны этого типа иcпользуют особый вид установки – установку дополнительных компонентов Windows- System optional components ( Sysoc ). Разработчики решили дать выбор – устанавливать необязательные приложения или нет. Например: Игры, WMP и т.д.

volk1234
27-07-2008, 17:45
Ок. Добавим строку:
Разработчики решили дать выбор – устанавливать необязательные приложения или нет. Это можно сделать путем правки sysoc.inf или секции [Components] в файле unnatend.txt(winnt.sif).

кстати если не в курсе есть спецальный аддон для реализации измененний в winnt.sif в процессе установки:http://forum.oszone.net/thread-87550.html

DyadyaGenya
27-07-2008, 20:00
volk1234, спасибо за ссылку, такого ещё не видел, думал сам подобное стряпать :-) теперь буду продолжать лениться :-)

да, и по моему, уж если добавлять в статью строки, то для таких как я (немного недалеких ламеров) помоему надобы добавить так Разработчики решили дать выбор – устанавливать необязательные приложения или нет. Это можно сделать путем правки sysoc.inf или секции [Components] в файле unnatend.txt(winnt.sif), где и можно указать какие из интегрированых аддонов устанавливать сразу, а какие пропустить. И даже сделать вариант с мультизагрузкой, если есть необходимость выбора комплекта устанавливаемых программ.

volk1234
28-07-2008, 01:57
DyadyaGenya
У нас снова получается n4- разговор ни о чем. Т.е. не по теме.
где и можно указать какие из интегрированых аддонов устанавливать сразу, а какие пропустить. И даже сделать вариант с мультизагрузкой, если есть необходимость выбора комплекта устанавливаемых программ. »

Это уже не относится к созданию аддонов. Поймите, нельзяже пихать все что касается win xp в это несчастное руководство :)

vserd
28-07-2008, 11:06
Это уже не относится к созданию аддонов. Поймите, нельзяже пихать все что касается win xp в это несчастное руководство
Пора писать новое руководство/KB/FAQ. "Как использовать аддоны не обычным способом". И в нем уже описывать маленькие и не маленькие хитрости и не очевидности.
ЛУчшее место для этого WIKI.
Для пользователя аддона читать внутренности устройства полезно, но не нужно, а вот "правильность" и "не правильность" использования обязательно, и это совершенно другой документ.

Способ с выбором Sysoc-аддонов в Winnt.sif явный пример что он должен быть именно в этом документе "Использование аддонов", т.к. относится и ко всем аддонам на этапе создания дистрибутива, и к способу установки уже готовой сборки, если мы знаем что в нее включено.

кстати если не в курсе есть спецальный аддон для реализации измененний в winnt.sif в процессе установки:http://forum.oszone.net/thread-87550.html »
и для развития кругозора, сошлюсь на свой аддон http://forum.oszone.net/post-862035.html

DyadyaGenya
28-07-2008, 18:16
volk1234, пожалуй да, просто хочется иметь много подсказок, и так ну просто огромнейшая работа проделана и собрано воедино столько всего, и сегодня в очередной раз хочется подчеркнуть этот труд, тем более что уже были попытки сделать подобное где то с год назад, (нашел запущеные ветки где уже больше года никто не был), так что конечно жаль что надоедаю со своими вопросами, но похоже vserd, прав, проект вырос и пора расширять смежными темами, хотелось бы чтоб кто то подхватил эту идею и довел её до конца, сам не берусь поскольку ни зниний ни времени не хватает

и конечно же опять вопрос :) как там с вопросом про иконки?
стал дочитывать изменения в статье и увидел добавку про иконки, там имеется ввиду иконка в компонентах винды? потому что я сразу же решил попробовать и чо то не меняется, и если это значок в компонентах винды, то было бы прикольно прописывать туда свои иконки, но сперва хотел бы разобраться почему стандартные не меняет »


vserd, спасибо за ссылку

Black Babay
28-07-2008, 23:54
0x00000003 - Удалить пункт меню для текущего пользователя
Его необходимо использовать в секции удаления ярлыка:
Код:
[PROG.DelShortcutQuick]
Name =%SRTC_NAME%,0x00000003
SubDir =%PROG_SDIR2% »
Возник законный вопрос: А как тогда удалить ярлык для дефолтного пользователя созданного вот так:
[PROG.AddShortcut]
...
SubDir ="..\..\..\Default User\Рабочий стол"

jameszero
29-07-2008, 09:34
Black Babay
Вопрос законный, но ответ очевидный :). Удаляется так же, как и создавался:
[PROG.DelShortcut]
Name =%SRTC_NAME%,0x00000003
SubDir =%PROG_SDIR%

[Strings]
SRTC_NAME ="Name"
PROG_SDIR ="..\..\..\Default User\Рабочий стол"

Black Babay
29-07-2008, 11:05
jameszero, но ведь с флагом
0x00000003 Удалить пункт меню для текущего пользователя
удаление из папки дефолтного юзера не произойдет, а только из папки текущего :not-me:

jameszero
29-07-2008, 11:21
Black Babay
А тут не важен флаг, главное, чтобы он означал удаление, а не создание ярлыка (0x00000002 и 0x00000003 сработают одинаково)
Целевой каталог для удаления ярлыка указывается в SubDir




© OSzone.net 2001-2012