Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Наборы обновлений для Windows XP/2003/Windows 7 » Инфо - Руководство по созданию аддонов (текущая версия)

Ответить
Настройки темы
Инфо - Руководство по созданию аддонов (текущая версия)

Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: volk1234
Дата: 24-09-2010
Описание: новая версия на сайте

Руководство перенесено в статью на сайте, но его обсуждение не закончилось. Любой может добавить в него что- нибудь новенькое.

Предлагаю сосредоточиться пока на двух разделах, которые будут дорабатыватся в ветке и только потом переносится в Руководство.

Сейчас обсуждается статья: - новое приложение 9.
===============
*Если вы заметили орфографические ошибки, пишите, пожалуйста, в личку

Отправлено: 19:19, 27-02-2008

 

Аватара для Drinko

Советник


Moderator


Сообщения: 2259
Благодарности: 530

Профиль | Сайт | Отправить PM | Цитировать


volk1234,
Вот более точная информация по этапам установки:
Код: Выделить весь код
Первый этап в текстовом режиме:

1. Запуск загрузчика установочного диска boot/ntboot.bin.
2. Запуск i386/bootfix.bin.
3. Запуск i386/setupldr.bi.
4. Чтение и интерпретация i386/txtsetup.sif, i386/winnt.sif и других *.sif.
5. Загрузка драйверов оборудования.
6. Запуск system32/ntdll.dll и system32/smss.exe.
7. Копирование файлов с дистрибутивного диска.
8. Обновление hive*.inf в реестр.
9. Перезагрузка.

Второй этап продолжается в графическом режиме.

1. 39 минут – запуск setup.exe/syssetup.dll (syssetup.inf).
2. Загрузка nt5.cat и *.cat.
3. Выполнение *.inf.
4. Запуск ocmanage.dll.
5. Определение оборудования (machine.inf).
6. 37 минут – установка драйверов устройств.
7. Запуск intl.cpl (intl.inf).
8. Запрос CD-KEY.
9. Установка компонентов ОС (sysoc.inf).
10. 32 минуты – установка поддержки сети.
11. 29 минут – копирование всех необходимых файлов ОС.
12. 25 минут – завершение установки.
13. 22 минуты – установка меню «Пуск» (shell.inf).
14. 18 минут – регистрация компонентов (OLE regsrv).
15. 13 минут – запуск $OEM$/Cmdlines.txt.
16. 9 минут – сохранение параметров.
17. 8 минут – сохранение настроек (sfc.dll сканирует все системные файлы для создания базы WFP).
18. Создание signhash Hardware ID.
19. Удаление временных файлов.
20. Перезагрузка.

Третий этап продолжается в графическом режиме:

1. Включение oobeinfo, активация копии системы.
2. Добавление пользовательских бюджетов.
3. Применение установок.
4. Настройка пользовательских профилей.
5. Запуск команд из секции GuiRunOnce.
6. Загрузка рабочего десктопа.

-------
Форум Цифровое изображение | Windows 8.1 | Windows 10
-------
Во имя ALTа, CTRLа и святого DELETE
Enter

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:50, 07-03-2008 | #61



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Drinko,
пропустили в п 13-17
(по вашей же ссылке)
4.Setup installs Start menu items and makes changes to the registry.

5. Setup sets file and folder permissions to protect the new operating system, for example, for files in the root directory, the system root folder, and the registry.

-------

Ю-ху!

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:29, 07-03-2008 | #62


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Чуток подкорректировал статью про txtsetup
в варианте gosh небыло флагов.
Добавил флаги копирования в шаблон.
Добавил неизвестный параметр, скорее всего тоже флаг.(1,,,,,,,20,0,0,newname,4,22)

-------

Ю-ху!


Отправлено: 00:15, 08-03-2008 | #63


Старожил


Автор проектов


Сообщения: 304
Благодарности: 135

Профиль | Отправить PM | Цитировать


Народ! нет аддонов SYSOS, есть SYSOС и файл называется sysoc.inf поправьте статью

Отправлено: 16:41, 08-03-2008 | #64


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


IDDQDesnik
Исправил 2 опечатки

-------

Ю-ху!


Отправлено: 17:13, 08-03-2008 | #65


Аватара для Anakin

Старожил


Автор проектов


Сообщения: 345
Благодарности: 64

Профиль | Отправить PM | Цитировать


Vadikan, вы планируете включить в учебник по автоустановке новый материал о процессе по минтуам, который предоставил Drinko?

-------
Dark Side of The Force is a pathway to many abilities, some considered to be unnatural...


Отправлено: 14:04, 09-03-2008 | #66


(*.*)


Сообщения: 36555
Благодарности: 6693

Профиль | Сайт | Отправить PM | Цитировать


Цитата Anakin:
Vadikan, вы планируете включить в учебник по автоустановке новый материал о процессе по минтуам, который предоставил Drinko? »
Где? Я не читаю все темы и сообщения форума. Еще раз повторяю, все предложения по улучшению сайта/оффлайн версии следует направлять в тему Оффлайн версия сайта (6.0)

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 18:33, 10-03-2008 | #67


(*.*)


Сообщения: 36555
Благодарности: 6693

Профиль | Сайт | Отправить PM | Цитировать


Цитата Drinko:
Вот более точная информация по этапам установки: »
В списке не указано, на каком этапе выполняются команды из svcpack.inf.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 19:48, 10-03-2008 | #68


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Обновлена инструкция.
+Мелкие исправлния
+Файл Sysoc.inf. Собрал что смог. Размещена в этом посте, поскольку в тот уже не влазит
+Сделал учебный аддон для "чайников" с описанием. В следующем посте


Файл Sysoc.inf
читать дальше »


SYSOC.INF

Здесь немногое что удалось собрать.
Sysoc - System Optional Components - диспетчер установки дополнительных компонентов ОС.
В процессе выполнения программы установки выполняется файл sysoc.inf, посредством библиотеки ocgen.dll и других.
Состоит в основном из секций [Components] где указываются устанавливаемые дополнительные компоненты.

Синтаксис:
WGA= ocgen.dll, OcEntry, Pck_WGA.inf, HIDE, 7

WGA- имя исполняемой секции
ocgen.dll- библиотека обработчик sysoc
OcEntry- команда ocgen.dll (нечто вроде точки входа)
Pck_WGA.inf- название inf файла устанавливаемого компонента
Hide- скрыть компонент
7- флаг (неизвестно) для ocgen.dll всегда равен 7

-Для интеграции установки через Sysoc в ваш inf-файл необходимо добавить секцию:
Код: Выделить весь код
[Optional Components]
Имя исполняемой секции
-Для размещения вашего приложения устанавливаемого через Sysoc в группе 3rdParty (Программы сторонних разработчиков)
добавьте в исполняемую сециюParent=NonMS и удалите из Sysoc параметр HIDE.
[/code]

-Параметр Modes=0,1,2,3
точное значение не известно, однако разместить его в исполняемой секции можно 2 способами:
Код: Выделить весь код
Modes=0,1,2,3     ;аддон будет установлен по умолчанию
;Modes=0,1,2,3    ;аддон не будет установлен по умолчанию, его доустановка возможна из "Установки компонентов Windows"
Без параметра Modes аддон не будет установлен.

-------

Ю-ху!


Последний раз редактировалось volk1234, 19-04-2008 в 22:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:43, 18-03-2008 | #69


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Пример создания аддона из утилиты Netlook (для начинающих)
читать дальше »

Для примера я выбрал программку Netlook. Причина: желание совместить приятное с полезным, такого аддона еще нет, программка не очень большая,записей в реестр не делает(то есть практически портэйбл), и лично мне пригодится.
Сознательно не использовались средства автоматизации создания аддона (смотрите во втором примере), дабы пример был более наглядным.
Аддон можно скачать здесь и подробно изучить.

Этап один.

После изучения структуры самой программки, я скопировал ее в отдельную папку для экспериментов и распотрошил, извлек все файлы в одну папку. Их оказалось не много не мало, 32 штуки.
Наступило время создать inf файл собственно. Создаем заголовок.
Код: Выделить весь код
[Version]
Signature="$WINDOWS NT$"
SetupClass=BASE
WINDOWS NT стоит использовать вместо CHICAGO, мы же не делаем аддон для win95? Кроме указания на базовый класс установки больше в заголовке ничего не пишем, пока и не нужно.
Затем создаем самую главную секцию нашего inf-файла - исполняемую

Код: Выделить весь код
[DefaultInstall]
CopyFiles=CopyMain, CopyConfig, CopyHelp, CopyHist, CopyLang, CopySkin, CopySound, CopyTools, CopyInf, RenToolsLang
ProfileItems=NL.AddShortcut
Эта секция не обязательно должна иметь такое скучное имя, но поверьте от того, что она есть вам хуже не будет.
Разбираем по строчкам: CopyFiles копирует файлы попутно создавая нужные папки, ProfileItems добавляет ярлык программы. В моем случае ( хороший стиль написания inf-файла ) я воспользовался уже кем-то созданной папкой по адресу Пуск\Все программы\Утилиты.
Вроде, все выглядит просто. Но, для того чтобы создать секции копирования, которые так красиво смотрятся в строке CopyFiles=, придется попотеть- создать все эти секции с перечислением файлов вручную. Вам никто не мешает проявить смекалку и используя специальные утилитки получить на руки в текстовом виде список файлов из папки куда вы их "распотрошили".
Секции я поименовал в соответствии с названием папок аддона Copymain - корневая и тд.
Далее прописываем будущую структуру папок в секции [DestinationDirs]
Не буду вас утомлять просто приведу ее
Код: Выделить весь код
[DestinationDirs]
CopyMain=16422, "Netlook"
CopyConfig=16422, "Netlook\Config"
CopyHelp=16422,"Netlook\Help"
CopyLang=16422,"Netlook\Languages"
CopySkin=16422,"Netlook\Skin"
CopySound=16422,"Netlook\Sound"
CopyTools=16422,"Netlook\Tools\Configurator"
RenToolsLang=16422,"Netlook\Tools\Configurator\Languages"
Здесь поясню почему так называется последняя секция. Оказалось, что создатель программы Netlook, ничего не слышал про хороший стиль программирования и присвоил двум файлам в своей программе одинаковое имя. Вот и пришлось один из них переименовать (файлы то лежат вместе), с тем чтобы далее, в секции RenToolsLang при копировании в отдельную папку вернуть все обратно.
Код: Выделить весь код
[RenToolsLang]
"russian.lng",russian2.lng,,4
И последняя секция, указывающая откуда копировать [SourceDisksNames]. Я запаковал все файлы из одной папки в cab-архив с
гордым именем netlook.cab и прописал его в inf-файле:

Код: Выделить весь код
[SourceDisksNames]
1="NetLook Files","netlook.cab",0
Создал секцию добавления ярлыка:
Код: Выделить весь код
[NL.AddShortcut]
Name= "Netlook 2.3"
CmdLine= 16422,"Netlook",NetLook.exe
WorkingDir= 16422,"Netlook"
SubDir= "Утилиты"
Infotip= "Netlook 2.3"

Второй этап.
Поместив inf и cab файлы рядом я проверил как устанавливается приложение. Хорошо устанавливается, клещами не вытянешь.
На этом этапе мы и будем изобретать клещи - секции для удаления нашего приложения (uninstall).
Сразу скажу, мне это далось не легко. В теории (учебнике по INF файлам) все выглядело просто. Указав в исполняемой секции AddReg= Секция добавления строк в реестр мы еще при установке приложения добавляем его в список установки\удаленимя программ.
Сама секция незамысловата и подробно описана в Учебнике. Самая важная строка это
Код: Выделить весь код
HKLM,"%Key%","DisplayName",,"Netlook 2.3"
HKLM,"%Key%","DisiplayIcon",,"16422,"Netlook",0"
HKLM,"%Key%","UninstallString",,"rundll32.exe advpack,LaunchINFSectionEx %17%\netlook.inf,NL.Uninstall"
, нижняя запись указывает какую секцию выполнить в inf файле при удалении программы.
Наблюдательный человек сразу заметит, что путь к netlook.inf необычный, %17% = Windows\INF\
Для корректной отработки нам необходимо скопировать наш файл именно в эту директорию. Добавляем в секции копирования
Код: Выделить весь код
[CopyInf]
netlook.inf

и добавляем в 
[DestinationDirs]
CopyInf=17(Знаки процента в этой секции использовать нельзя)
Вот так вот.
Собственно секция которая отвечает за удаление должна выглядеть так: удаление файлов, удаление директорий, удаление записей в реестре, удаление ярлыков программы. У вас, наверняка, как и у меня сразу мелькнула мысль, а может просто удалить всю папку с файлами и подпапками, и дело с концом? Сразу огорчу, не получилось. Оговорюсь, не получилось методами описанными в учебнике. Есть гораздо более действенные способы.
В результате консультаций на форуме, пришлось создавать отдельные секции удаления файлов (по сути дубляж секций COPY). Зато результат был налицо - файлы удалялись.
Дальше я создал секции удаления записей в реестре(сразу после удаления программы она исчезала из списка удаления программ), удаления ярлыка и удаления директорий. Все работало замечательно. Огорчало только, то что директории не удалялись.
Учебник однозначно говорит, что вызвать DelDirs проще простого:
1)Вызвать из секции деинсталяции
Код: Выделить весь код
Commandline="""%11%\rundll32.exe"" advpack,LaunchINFSection ""%17%\netlook.inf"",NL.DD,4"
2)затем указать саму комманду
Код: Выделить весь код
[NL.DD]
DelDirs=dirs
3)и уже в секции [dir] указать директорию, которую необходимо прибить.

Не буду вас мучить, мне помогли добрые люди на форуме, и средства автоматизации создания аддонов, которые мы решили здесь не рассматривать.
Оказалось, во-первых DelDirs необходимо запускать только через RunPostSetupCommands, т.к. команда Run, которую я упорно мучил, принадлежит setupapi, а DelDirs запускается через advapi; во-вторых необходимо было прибить всю структуру папок снизу. Только после этого мой скрипт заработал как надо.

Секции деинсталяции аддона
Код: Выделить весь код
[NL.Uninstall]
DelFiles=DelCopyMain, DelCopyConfig, DelCopyHelp, DelCopyHist, DelCopyLang, DelCopySkin, DelCopySound, DelCopyTools, DelCopyInf, DelRenToolsLang
DelReg=Dreg
ProfileItems	=	ShortcutD
RunPostSetupCommands=NL.AdinfCall

[NL.AdinfCall]
Commandline="""%11%\rundll32.exe"" advpack,LaunchINFSection ""%17%\netlook.inf"",NL.DD,4"

[NL.DD]
DelDirs=dirs

[dirs]
"%16422%\Netlook\Tools\Configurator\Languages"
"%16422%\Netlook\Tools\Configurator"
"%16422%\Netlook\Tools"
"%16422%\Netlook\Sound"
"%16422%\Netlook\Skin"
"%16422%\Netlook\Languages"
"%16422%\Netlook\Help"
"%16422%\Netlook\Config"
"%16422%\Netlook"

[Dreg]
HKLM,"%Key%"

[ShortcutD]
Name		=	"Netlook 2.3",0x00000002
SubDir		=	"Утилиты"
Этап третий.
Создание собственно аддона. Все что мы делали до этого - создание собственного инсталлятора для программы.
Инсталлятор готов, можно использовать его на здоровье. Вспомним структуру аддонов и приступим.
Копируем откуда-нибудь скелет аддона (хороший стиль, это чужой стиль, незабываем ). Сразу же переименовываем главную папку аддона
своим именем, правим файл Addon.nfo где пишем информацию, которую все равно никто не будет читать. Копируем в папку Files\Forcecopy
cab и inf -файлы. Оттуда их проинтегрирует в i386 скрипт Petya V4sechkin.
Важный момент! Так как мы все делаем вручную, надо проверить папку i386 на предмет совпадений с нашими файлами, дабы не перезаписать что-нибудь важное или просто принадлежащее системе, в любом случае при совпадениях имен система копирует свой родной файл из дистрибутива, а не "чужой". К счастью, я нашел только нечто, с именем NETLOOP.inf.

Теперь нам необходимо создать в корневой папке аддона 3 файла. Начнем по порядку. Сначала наш аддона будет скопирован из дистрибутива
посредством txtsetup.sif при помощи dosnet.inf и только позднее будет обнаружен и установлен через sysoc.inf. В такой последовательности
я и предлагаю создавать файлы, незабывая, что в UpdatePack эти файлы без расширений.
Здесь же в приложениях есть статья про txtsetup . Поверьте, совсем не лишняя в багаже знаний.

txtsetup
Код: Выделить весь код
[SourceDisksFiles]
Netlook.inf	= 100,,,,,,,20,0,0
Netlook.cab	= 100,,,,,,_x,,3,3
Комментировать нечего, inf файл при установке копируется в Windows\INF\, а cab архив не копируется, так как это наш дистрибутив.

dosnet

Код: Выделить весь код
[Files]
d1,Netlook.inf
d1,Netlook.cab
*здесь d1 это папка i386.

Ну и собственно,

Sysoc
Код: Выделить весь код
Netlook=ocgen.dll,OcEntry,Netlook.inf,,7
Вроде бы все готово. Однако если подумать, то в файле txtsetup мы не скопировали наш cab -файл. Обязательно надо переделать секцию указывающую
на источник копирования, дабы сообщить где искать cab.
Код: Выделить весь код
[SourceDisksNames]
1="Netlook Files","netlook.cab",,"I386"
Но еще не все, я как все новички споткнулся на файле sysoc. Запись Netlook=ocgen.dll,OcEntry,Netlook.inf,,7 означает, что будет исполнена
секция [netlook] в файле netlook.inf. А моя исполняемая секция называлась DefaultInstall. Естественно ничего не установилось...
Кроме того, необходимо добавить в наш установочный файл секцию указывающую sysoc, что это "его" компонент и команду для автоустановки аддона:
Код: Выделить весь код
[Optional Components]
Netlook    (указатель для sysoc на исполняемую секцию)
.....
[Netlook]
...
Modes=0,1,2,3
Также после проверки работоспособности установщика, удаляются записи о копировании inf-файла, так как txtsetup.sif скопирует его самостоятельно.
Теперь аддон готов к интеграции в дистрибутив. Интегрируем, проверяем аддон, проверяем журнал событий и выполняем qfecheck на отсутствие наличия ошибок.

-------

Ю-ху!


Последний раз редактировалось volk1234, 07-04-2008 в 16:53.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:17, 18-03-2008 | #70



Компьютерный форум OSzone.net » Автоматическая установка Windows » Наборы обновлений для Windows XP/2003/Windows 7 » Инфо - Руководство по созданию аддонов (текущая версия)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как определить какая версия XP Корпоративка или Oem версия? Rock Microsoft Windows 2000/XP 2 10-01-2008 11:18
Текущая настройка безопасности ActiveX Motto Защита компьютерных систем 1 26-12-2004 19:05
Что такое текущая директория? Guest Программирование и базы данных 11 24-07-2004 00:19




 
Переход