Показать полную графическую версию : Авторам аддонов
jameszero
17-08-2007, 09:47
gora
Нужно так
[IE7Pr_.Register]
16422,"IE7Pro",IE7Pro.dll,1
Using Dirids (http://msdn2.microsoft.com/en-us/library/ms790174.aspx)
11 - System32
16422 - Program Files
jameszero
20-08-2007, 16:56
Как и обещал (http://forum.oszone.net/post-628092-179.html), написал небольшой мануал, для тех, кто желает разобраться в структуре аддонов sysoc типа.
Материал представляет собой пример изготовления конкретного аддона - Punto Switcher и основывается на использовании скрипта для создания секций копирования/удаления файлов (http://forum.oszone.net/post-434018-30.html) от XXXler (http://forum.oszone.net/member.php?userid=34346)
Рассмотрены:
секции копирования/удаления файлов
секции добавления/удаления записей в реестр
секции добавления/удаления ярлыков
секции регистрации/дерегистрации библиотек
Кто захочет повторить все шаги описанные в инструкции, архив с исходной папкой программы и тем что должно получиться, выложил здесь (http://tools.oszone.net/jameszero/doc/help_sysoc_example.7z) (в inf файл добавлены необходимые комментарии)
Саму инструкцию можно скачать здесь (http://tools.oszone.net/jameszero/doc/help_sysoc.7z) (формат - Word, объём - 6 листов)
Предложенный мануал рекомендуется к прочтению совместно с материалами по ссылкам в шапке данной темы
--
Инструкцию выложил "как есть", если будут замечены опечатки, неточности или просто возникнет желание, что то дополнить - моё PM (http://forum.oszone.net/private.php?do=newpm&userid=38952) открыто для любых конструктивных замечаний.
jameszero, скачал (только сегодня, видимо подписка слетела) и внимательно прочитал. Замечания есть, но наверное когда соберусь напишу в ПМ.
Начну свой FAQ.
1 Параметр SizeApproximation=502755. Каково его назначение и насколько критично несоответствие истинного размера файлов, тому, которое указано в этом параметре? (Актуально при обновлении аддона, когда просто перезаписываются файлы в cab архиве).
2 Написание файлов в секции [SourceDisksFiles]. ps.dat=1, что означает эта единица?
3 Написание файлов в секции [punto_sw.Copy]. ps.dat,,,4, что означают запятые и их количество, а так же цифра 4 в конце? "ChooseLayouts.exe",ChooseLa.exe,,4, почему первый параметр в кавычках, а второй нет?
4 Написание файлов в секции [punto_sw.Del]. "ps.dat", почему здесь кавычки и всегда ли они нужны?
5 Как из cab архива несколько файлов скопировать в директорию, отличную от основной директории распаковки программы (например, ini файлы в в папку расположенную профиле пользователя)? Как создать эту папку?
6 Как запустить cmd или bat файл после распаковки всех файлов программы в нужную папку, для возможности проведения каких то операций (копирование, удаление файлов и т.д.)?
7 Где должен располагаться этот cmd или bat файл в аддоне (в cab архиве или рядом с ним)?
8 Параметр TickCount=500. Что это такое?
Пока остановлюсь, а то еще выгонят со всеми моими "почему" :)
jameszero
05-09-2007, 15:17
gora,
1. SizeApproximation не критичный и не обязательный параметр. Он отображает размер программы в "Установке компонентов Windows", а равен он значению в байтах (если открыть "Свойства" папки с программой, там увидите размер в килобайтах и байтах, вот последний и нужен)
2. Единица в секции [SourceDisksFiles] соответствует следующей секции [SourceDisksNames][SourceDisksNames]
1="Дистрибутив Windows XP SP2 с интегрированным аддоном Punto Switcher",punto_sw.cab,,"I386"Можно включить в аддон несколько cab файлов, тогда будет так
[SourceDisksNames]
1="Описание первого каба",ехаmрle1.саb„"I386"
2="Описание второго каба",example2.cab„"I386"
и если, например, файл file1.exe находится в первом кабе, а file2.exe во втором, то секция [SourceDisksFiles] будет такая
[SourceDisksFiles]
file1.exe=1
file2.exe=23. Значения запятых и флагов посмотрите здесь (http://msdn2.microsoft.com/en-us/library/ms794560.aspx)
Вкратце, между запятыми проставляются имена файла, в том случае, если имя конечного файла отличается от того, что в cab, т.е. в архиве файл example3.exe (формат 8.3) а в систему он должен скопироваться под именем example 333.exe. В таком случае будет так:
"example 333.exe",example3.exe,,4перед последней запятой ставится имя временного файла, на случай если файл уже существует и занят системой (т.е. будет заменён после перезагрузки), но это актуально только для win9x, NT системы сами генерируют имя временного файла
4. По поводу кавычек - они обязательны, если в имени файла или папки есть пробел или символы не английского алфавита, в остальных случаях они желательны, но не обязательны. В примере аддона я оставил кавычки там, где их проставил Скрипт для создания секций копирования/удаления файлов (http://forum.oszone.net/post-434018-30.html)
5. Папки назначения для файлов задаются в секции [DestinationDirs]. К примеру, так можно скопировать file1.exe в Program Files\Folder, а file2.exe в System32
[Install Section]
OptionDesc="Название программы"
Tip="Описание программы"
CopyFiles=file1.exe.Copy,file2.exe.Copy
[DestinationDirs]
file1.exe.Copy=16422,"Folder"
file2.exe.Copy=11
[SourceDisksNames]
1="Произвольное описание архива с файлами file1.exe и file2.exe",cab_name.cab,,"I386"
[SourceDisksFiles]
file1.exe=1
file2.exe=1
[file1.exe.Copy]
file1.exe,,,4
[file2.exe.Copy]
file2.exe,,,4Если папка назначения не существует, она будет создана.
6. Запуск файла из inf можно осуществить так (на примере аддона DrWeb)
[SpiderNT]
OptionDesc="DrWeb Spider Guard"
<skip>
Run=Spider.Run
<skip>
[Spider.Run]
Commandline="%16422%\DrWeb\spidernt.exe /install:auto /quiet"
TickCount=500
файл может быть любым исполняемым - exe, cmd..., так же можно запустить и функцию из dll-ки или секцию из inf-а (с помощью rundll32.exe)
[Spider.Init]
Commandline="""%11%\rundll32.exe"" advpack,LaunchINFSection ""%17%\DrWeb.inf"",Spider.Reboot,4"
TickCount=500
7. Файл запускается из той директории, куда он скопирован директивой CopyFiles из cab-а аддона.
8. TickCount - затрудняюсь ответить.
Выберу свободное время - добавлю небольшой FAQ в мануал
Запуск файла из inf можно осуществить так »Имелась ввиду возможность запуска временного bat файла (т.е. его не желательно куда либо копировать или потом нужно удалять) через файл Run в корне аддона как это делалось в IE7Pro версии 0.9.20.
jameszero
05-09-2007, 19:53
gora, аддоны, которые содержат файл run относятся к так называемому SVCPACK типу, а я расписал, как запусить файл из аддона SYSOC типа.
В принципе, аддоны SVCPACK на несколько порядков проще, они обычно содержат тихий инсталлятор какой либо программы, но можно использовать и bat/cmd файлы. Исполняемый файл помещается в папку Files\ForceCopy\SVCPACK аддона, а в файл run пишется его имя (можно запустить несколько файлов из одного run - каждый файл пишется с новой строчки, но run обязательно должен заканчиваться пустой строкой)
Аддоны могут быть комбинированные, как тот же DrWebSP (с автоустановкой Spider Guard) - установка проходит из SYSOC, а затем из SVCPACK срабатывает тихий архив, который подменяет inf аддона в системе. Подмену можно было сделать и из inf-а, через HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager","PendingFileRenameOperations", как в аддоне IE7_Reload, но я об этом способе узнал, после того, как сделал DrWeb Или аддон AVZ - из SYSOC устанавливается ядро программы, а из SVCPACK в папку с программой копируются антивирусные базы. Поковыряете аддоны DrWebSP и AVZ и поймёте, что к чему.
jameszero, я продолжу с вашего позволения.
9 Какие типы аддонов существуют? Их принципиальное отличие и плюсы/минусы каждого типа.
10 Какова структура аддонов? Название папок и их назначение (назначение файлов в корне аддона я нашел) ?
11 Файл i386.lst, как я понял, содержит список имен файлов недопустимых для использования в аддонах во избежании коллизии. Он должен обновляться/пополняться в связи с выходом новых паков? А кто следит, чтобы не было коллизии между именами файлов из разных аддонах или ее там быть не может?
12 Синтаксис строк и чем определяется их количество в файлах txtsetup, sysoc, dosnet?
13 Файлы Sysoc и Run должны заканчиваться пустой строкой., а разве к addon.nfo это не относиться? Так отсутствие ее в аддоне WinRar 3.70 "моршит" текст в файле Addons.txt.
14 Параметр Modes=0,1,2,3. Что это такое?
15 Как прописать путь для копирования файлов, если его нет в dirids, например, %USERPROFILE%\Application Data\my_folder и будет ли создана такая папка, если ее нет? Можно ли использовать абсолютный или относительный путь и переменные среды в нем?
jameszero
06-09-2007, 12:03
gora,
9. Скриптом Update Pack предусмотрены два типа аддонов для интеграции программ в WINDOWS - аддоны SYSOC и SVCPACK типов.
SYSOC аддоны при интеграции используют файлы txtsetup, sysoc, dosnet и состоят из cab архива с файлами программы, и установочного inf файла. SVCPACK аддоны содержат тихий инсталлятор и файл run (могут содержать обычный инсталлятор, в таком случае, в файл run пишется имя инсталлятора с параметрами тихого запуска)
SYSOC аддоны, являются более сложными, в изготовлении и тестировании, и требуют более профессионального подхода. Если в inf файле SYSOC аддона будет ошибка, то дальнейшая установка всей системы пойдёт с ошибками.
SVCPACK самый простой способ внедрить программу (аддон эконом класса :))
Плюсы/минусы я затрагивать не буду - сколько людей столько мнений, если всё сделано грамотно и без ошибок, то разницы в аддонах нет, однако аддон SYSOC типа, может косвенно показать хороший уровень подготовки автора.
10. В папку Files помещаются файлы в не сжатом виде, которые уже есть в дистибутиве WINDOWS. Скрипт Update Pack сжимает их, помещает в папку Compressed, а затем перезаписывает в дистрибутиве. В папку ForceCopy помешаются файлы, которые должны быть добавлены в дистрибутив в чистом виде, без дополнительной обработки (сжатия). Все файлы из ForceCopy необходимо прописать в txtsetup и dosnet аддона, эти записи добавляются в txtsetup.sif и dosnet.inf дистрибутива во время интеграции. Папка SVCPACK аддона копируется в I386 в чистом виде
11. Это вопрос к XXXler - автору Скрипта для создания секций копирования/удаления файлов (http://forum.oszone.net/post-434018-30.html) В принципе, можно самостоятельно обновлять файл i386.lst
12. Частично ответил в п.10. За описание синтаксиса не берусь, это материал на отдельную статью, посмотрите здесь (http://gosh.msfn.org/txtsetup.htm)
13. Файл addon.nfo опционален и каждый автор пишет его по своему, я в своих всегда пробиваю три пустых строчки, что бы было визуальное разделение аддонов.
14. Параметр Modes в аддонах можно использовать в двух вариантах
Modes=0,1,2,3 ;аддон будет установлен по умолчанию
;Modes=0,1,2,3 ;аддон не будет установлен по умолчанию, его доустановка возможна из "Установки компонентов Windows"
jameszero, 11.1А кто следит, чтобы не было коллизии между именами файлов из разных аддонах или ее там быть не может? »
15 Как прописать путь для копирования файлов, если его нет в dirids, например, %USERPROFILE%\Application Data\my_folder и будет ли создана такая папка, если ее нет? Можно ли использовать абсолютный или относительный путь и переменные среды в нем? »
jameszero
06-09-2007, 19:08
gora, файлы аддона обрабатываются в рамках одного inf-а и соответствующего ему cab-а, в разных cab-ах могут быть одинаковые файлы. Если не ставить несколько аддонов в одну и ту же папку, то проблем с совпадением имён не будет. Впрочем, за этим никто не следит)) пока нестыковок не было.
%USERPROFILE% ещё не существует во время установки аддонов, можно сделать через All Users
[DestinationDirs]
file1.exe.Copy=16419,"my_folder"
или даже так
[DestinationDirs]
file1.exe.Copy=24,"Documents and Settings\All Users\Application Data\my_folder"Папка my_folder будет создана если её нет.
В inf-ах путь должен быть в транскрипции dirids (http://msdn2.microsoft.com/en-us/library/ms790174.aspx), переменные среды не используются.
%USERPROFILE% ещё не существует во время установки аддоновТогда разъясните как это работает.
По этому пути IE7Pro\Files\ForceCopy\SVCPACK\ лежит файл install_.cmd следующего содержания@echo off
mkdir "%USERPROFILE%\Application Data\IE7pro"
copy /y "%PROGRAMFILES%\IE7Pro\conf.ini" "%USERPROFILE%\Application Data\IE7pro"
copy /y "%PROGRAMFILES%\IE7Pro\plugin.ini" "%USERPROFILE%\Application Data\IE7pro"
del "%PROGRAMFILES%\IE7Pro\conf.ini"
del "%PROGRAMFILES%\IE7Pro\plugin.ini"
exit и запускается из файла Run командой install_.cmd. И это реально работает! После установки системы файлы таки оказываются в указанном месте.
в разных cab-ах могут быть одинаковые файлыА если файлы расположены не в cab-ах, а как в описанном выше случае в папках Svcpack. В этом случае тоже не будет коллизии имен?
jameszero
06-09-2007, 22:26
gora, я почему то решил, что вас интересует копирование файлов в рабочий, а не в дефолтный профиль.
В вашем примере, переменная %USERPROFILE% = профилю Default User, пока не будет создан реальный профиль.
из inf задача реализуется так
[DestinationDirs]
file.Copy=53,"Application Data\IE7pro"
--
Если в папках SVCPACK будут файлы с одинаковыми именами, то естественно, ничего хорошего не получится. Один файл будет перезаписан другим.
Сделал адднон HTMLINFO (http://forum.oszone.net/thread-90061.html) который формирует в корневой папке вашего дистрибитива файл ADDONS.HTM вместо ADDONS.TXT.
- Импортируется CSS стиль, взят из файла README.HTM дистрибутива
- Автоматически создается "Содержание", работают переходы к разделу и назад к содержанию
- Добавляются разделы "Ведение", "OEM информация" и "Благодарности"
- Добавляеются *.NFO файлы из всех установленных аддонов
- Если есть HTML.NFO из него берется заголовок и текст с HTML разметкой
- txt формат (ADDON.NFO) добавляется как преформатированная секция
Вопрос на засыпку. Можно ли патчить наборами аддонов 64-разрядную XP?
Можно ли патчить наборами аддонов 64-разрядную XP »
IMHO, Общий ответ НЕТ. Т.к. обновления от х86, а тебе нужны х64. Если их заменить на х64, то ДА. Ну и программы можно попробовать ставить.
Всем
как можно в аддоне в Required задать условие OR (или)?
т.е. требуется аддон А или аддон Я. В текущей реализации идет объедененеие по И.
asmol, идея ничего, но для полной крутизны надо бы ещё (или уже есть?) вставлять ссылку на твой файл где-нибудь в самом начале "официального" readme.htm
jameszero
08-10-2007, 10:31
Добавил в пост с утилитами контекстного меню (http://forum.oszone.net/post-599580-153.html) набор CAB Tool. Описание там же.
Описание там же. »Считаю необходимым/крайне_желательным добавить описание в виде ридми в указанный архив - будет удобнее. А то потом вспоминай, что там и для чего.
И про ключ /REMOVE для 3_SendTo_CAB_Tool.exe тоже бы не плохо упомянуть.
jameszero
08-10-2007, 13:27
gora, учтено.
Для удаления CAB Tool из системы, нужно извлечь из архива файл INSTALL.VBS и выполнить его с параметром /REMOVE Можно и не извлекать! можно просто указать 3_SendTo_CAB_Tool.exe /REMOVE и модуль старательно передаст незнакомый ключ в строку RunProgram="hidcon:\"cscript.exe\" INSTALL.VBS" ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC