Показать полную графическую версию : [решено] DriverX (программа установки драйверов) + исходники
Сидел и думал. сделал теоретический алгоритм коректного Бекапа дров..
1.Выбираем устроуство например PCI\VEN_8086&DEV_0042;
2.Узнаем Hard и Compatible Хвиды устройства. заносим их в BHWIDS;
3.Парсим секции MFG. Узнаем какие секции устройств есть;
[Manufacturer]
%Intel% = Intel.Mfg
4.Парсим секции где хвиды устройств. Ищем HWID из списка BHWIDS;
[Intel.Mfg]
%iCNTG0% = iCNT0, PCI\VEN_8086&DEV_2A42
%iCNTG1% = iCNT1, PCI\VEN_8086&DEV_2A43
%iEGLG0% = iEGL0, PCI\VEN_8086&DEV_2E02
%iEGLG1% = iEGL1, PCI\VEN_8086&DEV_2E03
%iEGLQ4G0% = iEGL0, PCI\VEN_8086&DEV_2E12
%iEGLQ4G1% = iEGL1, PCI\VEN_8086&DEV_2E13
%iEGLG4G0% = iEGL0, PCI\VEN_8086&DEV_2E22
%iEGLG4G1% = iEGL1, PCI\VEN_8086&DEV_2E23
%iEGLGVG0% = iEGL0, PCI\VEN_8086&DEV_2E32
%iEGLGVG1% = iEGL1, PCI\VEN_8086&DEV_2E33
%iEGLGB0% = iEGL0, PCI\VEN_8086&DEV_2E42
%iEGLGB1% = iEGL1, PCI\VEN_8086&DEV_2E43
%iEGLGBU0% = iEGL0, PCI\VEN_8086&DEV_2E92
%iEGLGBU1% = iEGL1, PCI\VEN_8086&DEV_2E93
%iILKGM0% = iILKM0, PCI\VEN_8086&DEV_0046
%iILKG0% = iILKD0, PCI\VEN_8086&DEV_0042
5.Если нашли останавливаем поиск и берем секцию из которой ставится драйвер
например
%iILKG0% = iILKD0, PCI\VEN_8086&DEV_0042
Его секция iILKD0.
6.дальше ищем
[iILKD0]
DelFiles=CUI.DelFiles
CopyFiles=ialm.Miniport, ialm.Display, Copp.Copy, MedKrnG575.Copy, CUI.Copy,Resource.Copy,CUISDK.Copy , OpenGL.Copy.Gen4
AddReg = CUI.AddReg , OpenGL.AddReg.Gen4, CUISDK.AddReg
DelReg = CUI.DelReg , OpenGL.DelReg, CUISDK.DelReg
Выдираем оттуда значения CopyFiles;
7.Парсим секции на предмет нахождения файла;
ialm.Miniport, ialm.Display,
Copp.Copy, MedKrnG575.Copy,
CUI.Copy,Resource.Copy,
CUISDK.Copy , OpenGL.Copy.Gen4
8. Также не забываем о CoInstallers, находим секцию iILKD0.CoInstallers;
[iILKD0.CoInstallers]
AddReg = CoInst.AddReg
CopyFiles = CoInst.CopyFiles
Выдираем отуда значение параметра CopyFiles;
9. Ищем секцию CoInst.CopyFiles.
[CoInst.CopyFiles]
igfxCoIn_v5179.dll,igxpco32.dll,,0x00000010
Парсим ее. ВСЕ Бекап сделан.
правда есть еще 1 вариантец ...
собранные файлы могут лежать в разных подпапках в каторые при установке драйвера заглядывает система и они четко прописаны к примеру
[SourceDisksNames.x86]
1 = %DiskId%,,,.\B129978
[SourceDisksNames.ia64]
1 = %DiskID%,,,.\B129978
[SourceDisksFiles]
ati2cqag.dll=1
ati2dvag.dll=1
ati2edxx.dll=1
ati2erec.dll=1
ati2evxx.dll=1
ati2evxx.exe=1
ati2mdxx.exe=1
ati2mtag.sys=1
ati3duag.dll=1
atiadlxx.dll=1
atiapfxx.blb=1
atiapfxx.exe=1
atibtmon.exe=1
aticalcl.dll=1
aticaldd.dll=1
aticalrt.dll=1
atiddc.dll=1
atidemgx.dll=1
atiicdxx.dat=1
atiiiexx.dll=1
atikvmag.dll=1
atimpc32.dll=1
atiodcli.exe=1
atiode.exe=1
atiogl.xml=1
atioglxx.dll=1
atiok3x2.dll=1
atipdlxx.dll=1
atitvo32.dll=1
ativcoxx.dll=1
ativva5x.dat=1
ativva6x.dat=1
ativvamv.dll=1
ativvaxx.cap=1
ativvaxx.dll=1
oemdspif.dll=1
а также есть еще и вторая проблема
часть файлов (в основном библиотек и маркеров ) "зажаты" в CAB архивы при установке которых происходит их распаковка выглядет это так :
oemdspif.dl_ => oemdspif.dll
после бекапа и последующей установки таких драйверов срывается электронная подпись (размер и контрольная сумма вбита в каталог безопасности ) и кроме того для видео драйверов от AMD на моделях 4ххх и выше драйвера как правило не ставятся из за распаковки CAB для более старых моделей проблем не обнаруживалось
[CoInst.CopyFiles] ..вот тут происходит переименование файла, в следствие чего без парсинга это секции не обойтись !!
igfxCoIn_v5179.dll,igxpco32.dll,,0x00000010
[Resource.Copy]
igfxrara.lrc ; Arabic language resource file
igfxrchs.lrc ; Simplified Chinese language resource file »
Обойтись можно, ибо в данном случае я обхожусь, хотя парсить ее может и стоит. Единственный недостаток - это лишний файл в папке - igfxCoIn_v5179.dll (естественно речь о конкретном примере) Все файлы перечислены в секции SourceDiskFiles
Алгоритм безусловно достоин внимания, но начинать нужно с секции [Version] параметр CatalogFile. Совсем не лишнее будет учет параметров Include и Needs, встречающихся в стартовых секциях. А вообще-то нужно пересмотреть не один десяток inf-файлов, и не только от Intel.(У интел они слишком правильные) Найдете много интересного и лишний раз убедитесь, что стандарты соблюдаются далеко не всеми производителями драйверов. ;) Да и SourceDisksNames имеет не последнюю роль - пути сохранения файлов...
sLiDeR-X
16-03-2012, 08:29
SOLON7, уважаю твой труд.
Но есть одна просьба: может стоит сначала зафинальить то, что сейчас есть по установке драйверпаков, а потом уже заниматься добавлением бекапа и прочего?
На данный момент есть много недочетов в версии, выложенной в шапке.
С уважением.
Slider-X
Каких именно пунктов не хватает ,какие недочеты ??
1.Мультиязычность не буду пока делать, слишком сложно, придется менять среду на DELPHI XE ( и еще визуальные компоненты ).
2.Установка не подписанных драйверов. (Будет сделано, сейчас думаю над этим).
3. Синтаксиксические недочеты не существенны.
ЧТО ЕЩЕ , пишите подробно, не в приемной телепата находимся
1.Мультиязычность не буду пока делать, слишком сложно, придется менять среду на DELPHI XE ( и еще визуальные компоненты ). »А для чего среду менять и компоненты. Достаточно менять Captıon компонентов
romeo91, VCL delphi 7 не поддерживает Unicode. у него только АНСИ.
а мульти-язычность делать с АНСИ немного абсурдно.... тут уже надо действительно использовать всю Unicod'ную среду. Тем более не факт что те компоненты которые я использую тоже поддерживают юникод.
На платформе delphi 7 я сижу с момента ее выпуска, но требования повышаются и соответственно для дальнейшего развития необходимо поддержка юникода как такового.
для Unicode используются 2 байта для хранения символа. тогда как для АНСИ всего 1.
Прошу сначала дочитать первый пост. Прежде чем голосовать.
Привет уважаемые форумчане.
Хотелось бы провести голосование.
На предмет того использует кто либо ос 2000 как серверный вариант или рабочуюю станцию..
С усложнением проекты связано то что многие фичи и функции были добавлены в XP и выше ос.
А win2000 как была и осталась ненавороченной.
Например групировка Драйверпаков не работает коректно на 2000 винде.
И не работает много недокументированных функции.
Так как я перешел с 98 сразу на XP. особо не использовал 2000 как рабочую так и серверный вариант.
Оставить ли поддержку 2000 винды в DriverX.
Оставить ли поддержку 2000 винды в DriverX. »
Думаю не нужно
Каких именно пунктов не хватает ,какие недочеты ?? »
1. Предусмотреть изменение размеров формы при работе в разрешении 640-480 актуально если дрова на видео не встали. Например - минимальная ширина окна, разворот на полный экран по умолчанию, и правка ширины таблицы. Может еще что-то упустил
2. Ну и то, что уже говорили, предусмотреть если ни многоязычность, то хотя бы корректную работу программу например на английской винде. Для этого юникод не требуется
Оставить ли поддержку 2000 винды в DriverX. »
Сичтаю что оставить нужно, на моей практике еще очень много встречается систем 2000, особенно серверных. А рабочие станции 2000 держат иногда, из за неподдержки специализированным софтом более новых версий операционок
то хотя бы корректную работу программу например на английской винде. Для этого юникод не требуется »
конструктивно...
TERMINAL
22-03-2012, 15:09
SOLON7, На заметку-хочу сказать, что был у меня комп на свежеустановленной ХР и Ваша оболочка нашла недостающий драйвер на сетевую плату от NVidia, но после установки система резко ребутнулась (как будто на ресет нажал), после загрузки-драйвер так и не установился, выбрал другую оболочку с теми же базами драйверпаков и установка прошла на ура без всяких перезагрузок... Предоставить сведения о сетевой плате немогу, так как компа этого у меня уже нет. Версия была от последнего релиза SamLab.
hobbit25
22-03-2012, 17:47
SOLON7, а будет ли поправлено http://forum.oszone.net/post-1859044-431.html
TODO LIST
3.Из-за багов с меню. Удалю компонент красивой отрисовки меню.
5.Исправление бага http://forum.oszone.net/attachment.php?attachmentid=77339&d=1329117512
1.Добавить возможность установки неподписанных драйверов (нажатие Да на всплывающем окне, поддерживатся будут не все ОС, в виду сложности реализации). для Windows7 RUS уже сделано
2.Переход на Virtualtreeview. (скорость и кошерность компонентов списка возрастет).
4.Мультиязычность Англ и рус, Еще думаю над тем переходить ли на DELPHI XE.
6. Нужно еще пару DELPHI программистов которые смогут помочь в дальнейшем развитии проекта. (так как в виду сложности проекта без каких либо дотаций не вижу смысла продолжать проект)
Beckmanos
29-03-2012, 16:54
Хорошая сборка, очень быстро грузится. Спасибо автору.
Есть пара вопросов по сборке, возможно ли добавление своих драйвер паков, возможно ли добавление своих отсутствующих драйверов в этой сборке. Если такое возможно как эти паки индексировать при помощи вашей системы.
Хорошая сборка, очень быстро грузится. Спасибо автору.
Есть пара вопросов по сборке, возможно ли добавление своих драйвер паков, возможно ли добавление своих отсутствующих драйверов в этой сборке. Если такое возможно как эти паки индексировать при помощи вашей системы. »
Конечно качаем нужный пак и ложим в папку DRV.
Паки качаем у Сема или Кварка...
Beckmanos
30-03-2012, 17:31
Паки качаем у Сема или Кварка В принципе я на форуме недавно и ещё не в курсе кто такие Сема или Кварк , есть ли на них прямые ссылки. Заранее спасибо за ответ.
При установке дров развернул на полный экран и названия еще не установленных драйверов обрезались
http://savepic.net/2667436.png
сделал обычное окно и опять развернул на полный экран и теперь обрезались уже все названия
http://savepic.net/2662316.png
Windows 7 x64 SP1
Этот баг давно присутсвует это иза того что сам отрисовываю текст.
Когда переду на virtualtreeviev тогда будет НОРМ. и кошернее и быстрее...
Сема или Кварк »
Они здесь есть :) : Сема=Samlab, а Кварк=quarq. Оба уважаемые авторы драйверпаков, так что смотри и пользуйся с благодарностью.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC