PDA

Показать полную графическую версию : DriverPack Solution - установка драйверов


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 [67] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

Jekson07
04-08-2010, 13:02
BadPointer, осталась самая малость и после этого можно зафиналить, как DriverPack Solution 11.0 Professional. :)

добавить отображение флагов в панель "Настройки";
в окне "Выбор и установка драйверов" добавить дополнительную вкладку, как это реализовано в версии 10.6 R43 "Установка" и "Обновление", с возможностью скрытия отображения деталей;
интегрировать новый скин W7Elegant;
ArtXGroup отправить на "пенсию", а вас сделать автором темы. :gigi:

vovansa
04-08-2010, 16:33
.....Исправлено в R149. »
http://rghost.ru/2267182

BadPointer
04-08-2010, 19:03
Я покинул проект 6 месяцев назад и это окончательно. Я решил уделить два дня чтобы исправить баг, который по моим оценкам оказался достаточно критичным и заодно
исправить несколько других багов.

Jekson07, Я думаю это было бы некрасиво захватывать этот проект, как ты описал. Правильно было бы отпочковать новый проект с новым
названием на основе текущей кодовой базы(R149 и т.п.), независимо от DPS и выпускать его в соответсвии с лицензий GPL. Но это не то что
я собираюсь сделать.




Начинка программы.
Процесс индексации, подбора драйверов и правильность установки не так легко сравнить как например интерфейс, поэтому я
расскажу об отличиях DriverPack Solution 10 и Drivers Installer Assistant (2.7.29 Final от 29.07.2010) в этом плане. DPS везде будет подразумеваться R145(6 месячной давности), если не сказано по другому. Я хотел также включить указания в каких ревизиях и датах появился конкретный функционал, но это не так просто, ведь правильная
реализация многих функций удавалась не всегда с одной ревизии и не за один день.



Индексация 13 драйверпаков
DIA: 138 секунд. Размер индексов: 1.010.622 байта.
DPS: 108 секунд. Размер индексов: 7.943.759 байта.
При этом DPS заносит в индексы больше и более полную информацию. Помните времена DPS 9, когда индексация длилась вечность? Теперь DPS не уступает DIA в этом.


Время старта программы.
DPS имеет в 10 раз большие индексы и проверяет примерно в 3 раза больше HWID(поскольку учитывает совместимые HWIDы). DIA ищет драйверы только в паках
рассчитанных на текущую ОС, DPS ищет по всем драйверпакам.
DPS применяет hash-таблицы чтобы ускорить подбор драйверов, и к моему большому сожалению эта оптимизация дает всего лишь жалкое 4-х кратное ускорение подбора драйверов из-за ограниченности JavaScript.
Время DPS: 5 секунд.
Время DIA: 7 секунд.
DIA осуществлял подбор драйверов по 13 башратовским пакам для XP.
DPS осуществлял подбор по 101 паку от различных сборок(их объем: 3.4 ГБ)

DPS при индексации собирает полные HWID не урезая их, а также собирает названия секций (чтобы подбирать драйвер к нужной версии ОС).
DIA укорачивает их чтобы увеличить шансы совпадения HWID и уменьшить размер индексов. Драйверпаки должны быть разложены по папкам для разных систем.

DPS начиная с R146 использует полный HWID устройства и подбирвает наиболее совместимый HWID из списка HardwareID и CompatibleID(чем выше в списке, тем лучше).

DeviceInfo
Name: PCI standard host CPU bridge
Status: DRIVER IS RUNNING.
Manufacturer: (Standard system devices)
HWID_reg PCI\VEN_1022&DEV_1100&SUBSYS_00000000&REV_00\3&2411E6FE&0&C0
Class: System
Location: PCI bus 0, device 24, function 0
ConfigFlags: 0
Capabilities: 64
DriverInfo
Name: PCI standard host CPU bridge
Provider: Microsoft
Date: 7-1-2001
Version: 5.1.2600.5512
HWID: PCI\CC_0600
inf: machine.inf,NO_DRV
HardwareID
PCI\VEN_1022&DEV_1100&SUBSYS_00000000&REV_00
PCI\VEN_1022&DEV_1100&SUBSYS_00000000
PCI\VEN_1022&DEV_1100&REV_00
PCI\VEN_1022&DEV_1100
PCI\VEN_1022&DEV_1100&CC_060000
PCI\VEN_1022&DEV_1100&CC_0600
CompatibleID
PCI\VEN_1022&CC_060000
PCI\VEN_1022&CC_0600
PCI\VEN_1022
PCI\CC_060000
PCI\CC_0600


DIA использует только один HWID устройства и укорачивает его чтобы можно было сопоставить с укороченным HWID из индексов.


DPS начиная с R146 использует devcon для установки драйверов, который запускает установщик Windows.

DIA использует DPInst. DPinst сам ищет драйверы во всем распакованном каталоге и сам решает что ставить, не зависимо от того что выбрала оболочка. DPInst содержит глюки что я описал в коментарии к R146. DPInst не выбирает оптимальный драйер, он просматирвает все inf, и ставит все подходящие по его усмотрению драйверы в том порядке в катором он обрабатыает эти файлы.

Таким образом это означает DPS находит какие драйверы ставить и дает указания их ставить по полному HWID.
DIA находит драйверы которые имеют похожие на нужные HWID и скармливает эти папки DPInst, который уже дейсвтвует по своему усмотрению.

DPS не поддерживает установку PhysX, ATI_TOOLS, finisher(ini файлы в корне). DIA поддерживает. Это единственное упущение DPS, которое мне известно.


Интерфейс.
Я недавно разговаривал с Samlab, и он сказал что предпочитает интерфейс DIA. Поэтому я здесь поговорю о интерфейсе.

Немного истории. Вы, наверное, помните какой он был в DPS 9. Этот интерфейс был сделан вокруг драйверпаков, и на определенном этапе я решил перейти на интерфейс ориентированный на драйверы, так как это позволит сразу видеть все драйверы, которые доступны в драйверпаках, не наводя мышью на них, также за одним драйверпаком могут стоять несколько драйверов и у каждого свой статус актуальности/установленности. Также драйверы ищутся по всем драйверпакам, а не только по тем которые предназначены для определенной ОС: если делать как у DIA, то кнопки драйверпаков заняли бы не один экран.
Еще перед тем как изменять интерфейс, я нарисовал blueprint(прототип) в Paint и вы можете посмотреть как я задумывал, и что в результате мы имеем сейчас.
http://code.google.com/p/driverpacksolution/issues/detail?id=10&can=1
Я помню первую реакцию ArtX, QuarQ и других на это. Мне тогда пришлось каждому объяснять что это за списки и отстаивать необходимость каждого из них. В результате, пришлось добавить подсказки к спискам и ввести "режим эксперта", чтобы можно было скрывать "продвинутые" списки и настройки.

Вы, наверное, заметили что названия драйверов обрезаются справа, хотя место еще есть. Механизм, который подгоняет размер названия под ширину экрана пришлось отключить чтобы программу можно было использовать с Internet Explorer 6.0(это стоит изначально на свежеустановленном XP). Обеспечение совместимости с IE6 часто было значительной проблемой и например R130 на официальном сайте выдает скриптовую ошибку на IE6.

Кстати я бы хотел спросить: как вы думаете, стоит ли отображать название драйверпака в котором был найден драйвер(тот что отображается синим цветом)?
Это я спрашиваю поскольку ArtX считает, что лучше это скрывать и в его сборках эти надписи не отображаются.
Изменить эту опцию можно в tools\config.js:
var showPackNames = true; // показывать
var showPackNames = false; // скрывать

Возвращаясь к дискуссии об интутивности интерфейса. Помните ли вы как было ваше первое знакомство с интерфейсом R130, R145, 10.6 R43.
Насколько сложно было разобраться? Какие действия выполняются более наглядно, интуитивней, проще в каждом из
интерфейсов DIA и DPS?
Хотелось бы также узнать конкретные примеры использования, где интерфейс DIA превосходит DPS.

И на последок рубрика: "А знаете ли вы, что..."
Если DPS не может найти драйверпаки в папке DRP, то он пытается найти и использовать драйверпаки на CD или DVD. Эта фича задумывалась чтобы те пользователи, кто получил диск с прогой(или сами записали на болванку), могли продолжать использовать драйверпаки с диска, даже в том случае если программа на диске или индексы на диске становятся устаревшими или выяснится что прога содержит критические баги.

Таким образом пользователи могут запускать новую версию программы(с винта или флешки) и использовать драйверпаки c CD/DVD.

Jekson07
04-08-2010, 19:42
Я думаю это было бы некрасиво захватывать этот проект, как ты описал. »Не нужно всерьёз воспринимать всё написанное, это же была шутка (см. смайлик), хотя на практике такое практикуется и не запрещено правилами форума. Если автор темы долгое время не появляется на форуме и не поддерживает свою тему в актуальном состояние, то авторство на тему передаётся другому участнику из числа наиболее активных и знающих суть дела. В конкретном случае, я бы поступил так:
Правильно было бы отпочковать новый проект с новым названием на основе текущей кодовой базы(R149 и т.п.), независимо от DPS и выпускать его в соответствии с лицензий GPL. »

P.S. Я своё дело сделал, расшевелил этот муравейник, :) а что дальше будет решать уже вам. Надеюсь, что тема продолжит своё существование в рамках этой или уже другой новой темы и больше не зачахнет.

Комсомолец
04-08-2010, 19:58
BadPointer, несомненно, Вы отлично знаете механизм и код данного сабжа. Но я от него отказался в пользу DIA по двум основным причинам:
1. JAVA-скрипт часто глючит на ровном месте.
2. После смены фейса программы стало совсем непонятно что куда и как.
Хотя плюсы есть у обех программ и немалые.

Может вам стоит объединится с Romeo и сделать одну программу, но превосходящюю все остальные?

BadPointer
04-08-2010, 20:18
Комсомолец, не я выбирал платформу, так было когда подключился к проекту. Смесь JavaScript+VBScript+cmd конечно не самая оптимальная. Я подключился к проекту DPS, поскольку он был на лицензии GPL. Мне самому приходится терпеть лишения этой платформы, низкую производительность, неэффективность использования ресурсов, зависимость от IE. Если сам JavaScript работает еще более менее везде предсказуемо, то интерфейс может глючить на разных версиях IE, если сделать что-то по особому.

Romeo делает прогу на Visual Basic, насколько я знаю. На мой взгляд тоже не настолько полноценный язык программирования как например C/C++, хотя все-таки лучше чем то что в DPS и имеет больший потенциал по скорости работы. Его программа имеет проприетарную лицензию, которая довольно далеко от GPL, а значит я в этом не заинтересован.

А насчет интерфейса желательно поконкретней. Конечно следовало раньше проводить исследование по юзабельности интерфейса среди пользователей, но даже сейчас можно рассчитывать что ArtX будет его изменять, а значит замечания по интерфейсу могут быть полезными.

SamLab
04-08-2010, 22:41
vovansa, Мог бы включить новые версии CPU-Z и Double Driver заодно т.к. в твоем наборе старые

quarq
05-08-2010, 00:46
http://moemesto.ru/quarq/file/8741770/driverpacksolution_R149Q.7z

данная версия сделана на основе R149 и имеет некоторые отличия :
1) изменен цвет всплывающей подсказки , изменены некоторые иконки и картинки(из стиля 10.6)
2) добавлена заставка в виде белого тигра
3) изменено название кнопки Выбрать все на Выбрать все (on\off)
4) добавлена кнопка устоновки аудио види кодеков (переработано)
5) добавлен fix_dll.exe в корне программы , для тех случаев кагда из виндовс удалены некоторые службы и длл ,
необходимые для правельной работы программы

vovansa
05-08-2010, 00:46
SamLab, это не мой набор. Обновления берутся с публичного SVN (http://code.google.com/p/driverpacksolution/source/list) в оригинальном виде. Не более того. Double Driver присутствует только в твоем драйверпаке и DriversInstaller Romeo91. ))
....На мой взгляд тоже не настолько полноценный язык программирования как например C/C++ »
Если начать "новую жизнь"? Новый проект. Свое виденье функционала.... "Новая" среда разработки.
С тестированием проблем не будет, как показывает форум, "зубры" ( в хорошем смысле слова) не дадут расслабится))))))).
Понятно конечно, если есть желание и наличии свободного времени.

BadPointer
05-08-2010, 01:41
....На мой взгляд тоже не настолько полноценный язык программирования как например C/C++ »
Если начать "новую жизнь"? Новый проект. Свое виденье функционала.... "Новая" среда разработки.
С тестированием проблем не будет, как показывает форум, "зубры" ( в хорошем смысле слова) не дадут расслабится))))))).
Понятно конечно, если есть желание и наличии свободного времени. »
Такой вариант не исключен. Это подразумевает написание всей проги с нуля и это требует время чтобы сделать первую полностью функциональную версию. В таком случае, объявление о новом проекте не появится до тех пор проект не будет достаточно зрелым и готовым к первому релизу.

vovansa
05-08-2010, 01:54
В таком случае, объявление о новом проекте не появится до тех пор проект не будет достаточно зрелым и готовым к первому релизу. »
Главное "ввязатся в драку" )))) Если серьезно, то насколько могу догадываться, решения и алгоритм давно уже есть, осталось воплотить в жизнь ))).

romeo91
05-08-2010, 06:20
Romeo делает прогу на Visual Basic, насколько я знаю. На мой взгляд тоже не настолько полноценный язык программирования как например C/C++, хотя все-таки лучше чем то что в DPS и имеет больший потенциал по скорости работы. Его программа имеет проприетарную лицензию, которая довольно далеко от GPL, а значит я в этом не заинтересован. »
Да на VB, к сожалению это то на чем я хоть как-то умею писать. Далеко не лучший язык :)
поэтому я
расскажу об отличиях DriverPack Solution 10 и Drivers Installer Assistant (2.7.29 Final от 29.07.2010) »
Спасибо за сравнение и критику. Подчерпнул много полезной информации. Но к сожалению я не профи (вы я так понимаю знаете не один язык, и на довольно хорошем уровне), а лишь любитель, поэтому мой код далек от совершенства, а следовательно и быстродействия. Некоторые аспекты я познавал в процессе написания программы. В том числе и regexp....
Я всегда за увеличение быстродействие программы, но если кто натолкнет на нужные мысли то это будет очень хорошо.
DRP изначально для создания БД использовал regexp, но поковырявшись с ним я понял, что он не обеспечивает нужного быстродействия (хотя похоже я ошибался), я переделал создание БД на основе работы с inf файлом - как с ini-файлом (хотя есть и отличия от ini). Но скорость выросла на порядок. Также мне интересно, могу ли я еу себя реализовать некие hash- таблицы? или это плюс java-script.
Хотя скорость индексации, это не самая главная часть программы, но все же...
А вот скорость запуска и надежность установки это да...
Надо получше проанализировать DRP, может найду для себя полезные алгоритмы.

А вообще это очень хорошо когда проект пишет (писал) не один человек, а несколько. Одному порой очень сложно....

Такой вариант не исключен. Это подразумевает написание всей проги с нуля и это требует время чтобы сделать первую полностью функциональную версию. В таком случае, объявление о новом проекте не появится до тех пор проект не будет достаточно зрелым и готовым к первому релизу. »
Если возметесь, то буду очень рад увидеть... Зная возможности С/С++ а также если будут писаться на самых свежих релизах, то следовательно будет оптимизация по новые процессоры (VB к сожалению очень ограничен), а следовательно и лучшее быстродействие программы.
Да и конкуренция дело очень хорошее....

BadPointer, Кстати, я еще знаю одно отличие , DRP поддерживает Unicode. А DIA нет. по крайней мере я к этому стремлюсь, но программно реализовывать крайне сложно. Так как VB не поддерживает Unicode. И для реализации необходимо писать все свои контролы, или использовать чужие...

dead_wolf
05-08-2010, 07:12
Было бы неплохо увидеть совместную работу BadPointer и romeo91 ( одна голова хорошо а две лучше :) ) .

romeo91
05-08-2010, 07:18
dead_wolf, для идей возможно! :)
Хотя если это будет по лицензии GPL, да еще и с открытым кодом, то почему бы не поучаствовать....
Хотя в любом случае свой проект буду развивать, это скажем - мое хобби. :)

BadPointer
05-08-2010, 11:19
DRP изначально для создания БД использовал regexp, но поковырявшись с ним я понял, что он не обеспечивает нужного быстродействия (хотя похоже я ошибался), я переделал создание БД на основе работы с inf файлом - как с ini-файлом (хотя есть и отличия от ini)

Тот парсер в DRP тогда был очень неэффективен и он при обработке не учитывал структуру inf файлов, собирал много мусора и пропускал HWIDы. Обработка текущим парсером быстрее возможно по тому что текущий парсер на регэкспах однопроходный, а при использовании функций работы с inf, эти функции вынуждены делать одни и те же подготовительные операции для извлечения каждого HWIDа. Стоит заметить что скорость движка регэкспов и поддержка фич, которые позволяют создавать более эффективные регэкспы в JavaScript и VBScript сильно уступает другим движкам регэкспов.

Также мне интересно, могу ли я еу себя реализовать некие hash- таблицы? или это плюс java-script

Это скорее минус JavaScript'а, так как 4 кратное ускорение просто не серьезно. Это довольно стандартный и распространенный алгоритм, я его выбрал поскольку он оптимален для данной задачи. Но поскольку JavaScript не умеет работать с бинарными файлами hash'ы вдвое большего размера чем могли быть и это также накладывает пенальти за преобразование из текстово-шестнадцетиричного в бинарный вид. JavaScript не имеет произвольного доступа к файлам и вынуждена проглатывать все хеши и индексы, хотя в этом нет необходимости. Например: из проглоченных 44 мегабайтов в папке индексов, достаточно было загрузить всего 2.7 мегабайта.
VB умеет работать с бинарными файлами и имеет произвольный доступ и я оцениваю что это ускорит подбор драйверов как минимум в 100 раз.

Коротко объясню принцип hash-таблиц на простом примере.
Задача: найти слово в списке из 100 000 слов. Слова не повторяются, а значит после нахождения слова можно прекращать поиск.

При решении в лоб, при наихудшем раскладе придется проверить все 100 000 слов, в среднем для нахождения приходится проверять около половины из этих слов. Если слова повторяются, то придется не останавливаться при нахождении первого совпадения и всегда проходить через все 100 000 слова.

Реализация с помощью hash-таблиц.
В среднем слово можно найти проверив всего 2 слова из этого списка, если ни одно из них не оказалось искомым, то значит что слова нет в списке: проверять оставшиеся 999 998 слова не нужно. При наихудшем раскладе приходится проверить 10 слов. Это число примерное и так случается редко. Вообще-то говоря, при целенаправленной hash-атаке хакера на сервера, наихудший расклад становится таким плохим что это может вызвать перегрузки серверов и отказ системы. DPS не содержит защиты от hash-атак. Если производители драйверов начнут целенаправленно создавать специальные inf'ы чтобы замедлить подбор драйверов с помощью DPS, то у меня будет возможность сменить hash-функцию, которая не будет давать наихудший возможно расклад на такие inf'ы. Но, надеюсь, до этого не дойдет. :)

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

Я вообще-то не работал и не работаю программистом по профессионально, по работе я чиню компы. Знание многих языков и умение в короткие сроки освоить новый язык - обычное явление у программистов.

Да на VB, к сожалению это то на чем я хоть как-то умею писать. Далеко не лучший язык

Для новичков это, пожалуй, хороший язык. Я увлекся программированием на денди-совместимой приставке Subor. Это приставка сделана в виде клавиатуры и там был как раз Basic. На нем можно делать программы для вычислений и создавать графические игры(там есть средства для рисования спрайтов и считывания нажатий кнопок с джойстика). К сожалению программы нельзя было сохранить и их приходилось набирать заново, а также приставка зависала из-за слишком длинного кода.

Комсомолец
05-08-2010, 14:37
romeo91, BadPointer, объедините усилия. GPL - это ещё лучше-каждый сможет посоветовать или помочь. И придем к наилучшему варианту реализации установки драйверов..

vovansa
05-08-2010, 23:38
Пауза затянулась )))) Видать проекту быть? :yahoo: или рано радоваться :cry:

BadPointer
06-08-2010, 00:07
Я не против работать с romeo91(и не только с ним) совместно в рамках проекта под лицензией GPL. Что касается моего нового возможного проекта на С/C++, то объявлений никаких пока не было, если вы этого ждете.

Комсомолец
06-08-2010, 08:42
BadPointer, Я не против работать с romeo91 »
это уже замечательно)

vovansa
06-08-2010, 11:19
Хотя если это будет по лицензии GPL, да еще и с открытым кодом, то почему бы не поучаствовать.... »
да и romeo91 не против. По крайней мере так понял из фразы ))))))




© OSzone.net 2001-2012