Я покинул проект 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(чем выше в списке, тем лучше).
читать дальше »
Код:
![Выделить весь код](images/misc/selectcode.png)
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/driverpacks...il?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.