Войти

Показать полную графическую версию : DIT - Driver Install Tools


Страниц : 1 [2] 3 4 5

quarq
09-09-2012, 15:14
Boa Soft, выбор из драйверов от висты 6.0 / семерки 6.1 и восьмерки 6.2 »

хотелось бы усугубить вопрос предыдущего оратора!,а именно : учитывается ли совместилось 6.х => 6.2 и 6.0 => 6.1

Boa Soft
10-09-2012, 01:40
Boa Soft, выбор из драйверов от висты 6.0 / семерки 6.1 и восьмерки 6.2 по каким критериям идет по версии Windows или нет? например самая известная оболочка DPS в этом плане выбирает чисто 5.x или 6.x и на семерку может поставить дрова от висты или восьмерки, что соответственно ведет к неработоспособности драйверов »


Выбираются по степени совпадения секции.

Для 7 32бит например Ntx86.6.1 - Ntx86.6.0 - Ntx86.6 - Ntx86 - Nt - секция без экстендера.

К тому же, для 64 бит игнорируются все 32 бит секции, а для 32 64.

Драйвера сортируются по такому критерию - степень совпадения HWID, при несовпадении Compatible ID, сопоставимость секции, дата драйвера - все от самого лучшего до самого наихудшего. Драйвера непригодные для системы отсекаются.

Есть ньюанс. Некоторые драйвера содержат секции и 6.0 и 6.1 но, в одном из файлов секция с экстендером 6.0 пустая а секция 6.1 - рабочая и наоборот. В программе это учитывается и если пустая секция совподает с текущей версией системы - то драйвер игнорируется, ибо не встанет все равно.

Точно сверять екстендер тоже нельзя. Драйвера для USB 3.0 от AMD содержат экстендер NTx86.5.1.1, но при этом прекрасно ставятся на виндовс старше и включая XP. Для меня это было откровением, но Mr dUSHA просветил, что подобная ситуация нормальна.

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

Boa Soft
10-09-2012, 01:57
Хочется еще добавить вот что. Программа в основном ориентирована для установки драйверов в процессе автоустановки системы. Поэтому, можно вручную вычистить файлы индексов от несовместимых драйверов.

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

С новой организацией пакетов можно отбросить неподходящие драйвера по имени папок.

Но, идеально сделать невозможно, так как очень много драйверов без экстендера вообще.
К тому же, есть драйвера с generic hwid типа PCI\CC_XXXX. Такого типа драйвера помечаются как только для ручной установки. Например, матроксовский мост Matrox Extio PCI Standard PCI-to-PCI Bridge имеет HWID PCI\CC_0604 и ставится на любой чипсет - что интел что нв. Эта проблема не решаема в принципе. Если будет GUI версия, то в ней драйвер будет предлагаться для ручного выбора. Теоретически, можно проверить наличие других компонентов матрокса с уникальным HWID (к примеру) и установить из финиша этот драйвер. Но, я с этим пока не заморачивался.

К стати, пример финиша с ошибками - я не подумал, что для составного устройства надо проверять наличие родительского и потом ставить детей (пример - все USB 3.0, нетмосовские портовки). А я в нем забил проверку детей. В настоящей версии кофигурация железа читается один раз после в самом начале, и появившиеся "дети" составного родительского устройства в лог не попадут.

quarq
10-09-2012, 10:57
спасибо за столь развернутый ответ но все же я не получил ответа на свой вопрос, пробую его перефразировать

известно что драва от 6.0 и от 6.1 ставятся на 6.2 (win8) учитывает ли прога или будет ли она учитывать эти особенности в противном случае на win8 на данный момент будут игнорироваться почти все драйвера и ставить будет нечего
а также на win7 не будут ставиться драйвера от win vista коих огромное множество и многие производители вообще не делают различий между данными системами и шлепают драйвера по старинке лишь заявляя полную совместимость с новыми системами также обстоят дела и с системой nt5.0 => nt5.1 при этом тоже в "отвал уйдут" процентов 30% драйверов

далее интересно как себя поведет ваша прога в следующем случае:

[Manufacturer]
%MfgName%=NVIDIA,NTx86,NTx86.6.0,NTamd64.6.0,NTamd64,NTx86.6.1,NTamd64.6.1,NTx86.6.2,NTamd64.6.2

[NVIDIA]
%NVIDIA.DeviceDesc%=NVHDA322CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTx86]
%NVIDIA.DeviceDesc%=NVHDA322CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTamd64]
%NVIDIA.DeviceDesc%=NVHDA642CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTx86.6.0]
%NVIDIA.DeviceDesc%=NVHDA32V2CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTamd64.6.0]
%NVIDIA.DeviceDesc%=NVHDA64V2CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101

[NVIDIA.NTx86.6.1]
%NVIDIA.DeviceDesc%=NVHDA32V2CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTamd64.6.1]
%NVIDIA.DeviceDesc%=NVHDA64V2CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTx86.6.2]
%NVIDIA.DeviceDesc%=NVHDA32V2CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


[NVIDIA.NTamd64.6.2]
%NVIDIA.DeviceDesc%=NVHDA64V2CHAPO,HDAUDIO\FUNC_01&VEN_10DE&DEV_0001&SUBSYS_10DE0101


тоесть это все находится в одном инфе и сам драйвер действительно универсальный для всех систем

Boa Soft
10-09-2012, 11:14
далее интересно как себя поведет ваша прога в следующем случае: »

Ваш драйвер установится на любую систему начиная от XP и заканчивая 8.

[NVIDIA] допустима для ЛЮБОй 32 бит и для xp 64 бит

[NVIDIA.NTx86] допустима для ЛЮБОй 32 бит

[NVIDIA.NTamd64] для любой 64 бит

[NVIDIA.NTx86.6.0] - для висты и старше

[NVIDIA.NTamd64.6.0] для 64 бит висты и старше

[NVIDIA.NTx86.6.1] - для 7 и старше


[NVIDIA.NTx86.6.2] - для 8 и старше


На 7 драйвера от висты будут ставится, если нет пустой секции для 7 в этом дравере.
Например, в драйверах ати.

7 на висту не станут, если явно задано что они для 7 - одна секция NTx86.6.1 или .NTamd64.6.1.

Все зависит от производителя дравера. Отобрать идеально невозможно - у половины драйверов у секции нет экстендеоа - значит они формально подходят для любой ситемы.

Единственный способ - иметь разные индексы для каждой системы. и РУКАМИ удалять несовместимые драверы из индекса.
В новых пакетах разделили на общие для висты и для 7. При индексации можно настроитьигнорирование папок, например, висты.

SamLab
10-09-2012, 11:19
Boa Soft, Судя по описанию в вашей программе учтено много того, чего нет у конкурентов, осталось надеяться, что вы ее не забросите и сделаете хотя бы начальный интерфейс для нее

quarq
10-09-2012, 11:59
РУКАМИ удалять несовместимые драверы из индекса »

удалять ни чего ненадо надо вводить новые критерии тоесть если секция [Manufacturer] толком не определена,смотреть название пака , если название не определено,то определять по названию папки внутри пака

В новых пакетах разделили на общие для висты и для 7 »

идея хорошая но порочная проверял я эти папки порой полная бредятина заявлено win7 на самом деле vista
в универсальных драйверах (all) просто навал инфов и длл от разных систем (да драйвер действительно универсальный но секции [Manufacturer] там определены конкретно)
именно по этому я пиши :
удалять ни чего ненадо надо вводить новые критерии тоесть если секция [Manufacturer] толком не определена,смотреть название пака , если название не определено,то определять по названию папки внутри пака

жесткая привязка как это делают большинство авторов прог приводит к написанию новых (с теме же граблями)

Makemd
10-09-2012, 17:27
В логе пишет "bad index signature" и на этом процесс завершается

Boa Soft
10-09-2012, 23:16
В логе пишет "bad index signature" и на этом процесс завершается »
Пересоздайте индексы заново каталогизатором из текущего комплекта. С начальной версии поменялся формат индексов.

Boa Soft
10-09-2012, 23:41
идея хорошая но порочная проверял я эти папки порой полная бредятина заявлено win7 на самом деле vista
в универсальных драйверах (all) просто навал инфов и длл от разных систем (да драйвер действительно универсальный но секции [Manufacturer] там определены конкретно) »
Согласен полностью. НАФИГА из универсального атишного дравера для 7 и висты делать два не универсальных?
Неправильный inf все равно не установится - там есть блокирующая секция для неиспользуемой системы.

Вот и не особо хочется делать фильтр по именам папок. В принципе, программа сожрет все что ей дать, а вот индексы в сложных случаях можно поправить руками.

Как я уже говорил - назначение данной версии - тихая установка. Драйвера желательно отфильтровать до применения. В GUI нужна универсальность. Поэтому, возможно придется делать в индексах дополнительное поле, четко определяющее системы, для которых пригоден дравер.

В настоящее в время для 7 я пока не встречал проблемы с установкой непоходящего вистовского дравера при наличии подходящего 7. С вистой пока проверить не на чем - ну нету ее у меня.

Проблемы могут быть, если отсутствует дравер для 7 а есть дравер для висты, нормально не работающий на 7, у которого отсутствует блокирующая секция.

На счет 7 драверов с точно заданной и единственной секцией для 7, на висту такой дравер не станет.

Mr dUSHA
11-09-2012, 02:06
Вот и не особо хочется делать фильтр по именам папок. »
Поддерживаю.
ИМХО привязка к именам папок и файлов - это и есть порочная идея. Программа должна быть максимально универсальна и независима от "псевдостандартов" придуманных драйверособирателями и активно используемых "сборщиками сборок". И лучше пусть "сборщики сборок" повышают свой уровень интеллектуального развития в процессе сортировки драйверов, чем программа скатывается до того, что будет пытаться автоматически разбирать кучу накиданного ей мусора, применяя логику этих самых псевдостандартов.

SOLON7
11-09-2012, 09:03
ВСЕМ

Идея конечно хорошая.
НО
1.Идея использовать Апи аля DifxApi и UpdateDriverForPlugAndPlayDevices не очень хорошая, так как для установки 64 битной винде сам скомпиленная прога должна быть 64 битной.
Поэтому я пришел к выводу что лучше использовать devcon


2.[NVIDIA] допустима для ЛЮБОй 32 бит и для xp 64 бит
[NVIDIA.NTx86] допустима для ЛЮБОй 32 бит
[NVIDIA.NTamd64] для любой 64 бит
[NVIDIA.NTx86.6.0] - для висты и старше
[NVIDIA.NTamd64.6.0] для 64 бит висты и старше
[NVIDIA.NTx86.6.1] - для 7 и старше
[NVIDIA.NTx86.6.2] - дл

Не стандарт, мы сами с кварком долго мучались, но в итоге оказалось что не все производители работают как положено. в итоге в DriverX отображаются дрова несовместимые с системой.
С этим вопросом лучше обратится к Кварку и Семлабу, они более авторитетны в ЭТОМ СЛОЖНОМ ВОПРОСЕ.
Лучше не брать на себя ответственность выявления стандарта , как оказалось очень нестабильная тема. Потом будет тысяча нареканий, как впрочем и на форуме DPS.

3. Спасибо Боа за интересную прогу, если хотите можете взять мои наработки (исходники DRiverX), может быть и помогу , сам пишу на дельфях...

на тему подписался....

Mr dUSHA
11-09-2012, 10:01
так как для установки 64 битной винде сам скомпиленная прога должна быть 64 битной. »
Так а что Вам то мешает скомпилировать два варианта проги для двух платформ? :)

Не стандарт, мы сами с кварком долго мучались, но в итоге оказалось что не все производители работают как положено. »
Так ведь то, что драйверописатели не соблюдают Микрософт-овых стандартов в ИНФах, совсем не означает, что прога не должна придерживаться этих самых стандартов в поиске драйвера, согласно которых сама Windows и работает.

Boa Soft
11-09-2012, 17:35
1.Идея использовать Апи аля DifxApi и UpdateDriverForPlugAndPlayDevices не очень хорошая, так как для установки 64 битной винде сам скомпиленная прога должна быть 64 битной.
Поэтому я пришел к выводу что лучше использовать devcon »

Подход оправдан только при отсутствии компилятора на 64 бит. При правильном написании две версии делаются только переключение платформы в среде разработки При небольшом размере программы мне проще сделать две версии для разной битности, чем мучатся с парсингом вывода devcon и обработкой ошибок. И, девкона или в дпинст тоже надо два. В гуи версии, возможно, будет та же технология. что и в BS-post - 32 бит прога и переходник 64 бита.

Кроме того, есть одно но. Если мы ставим дравера из папки а потом ее удаляем, то имеем проблему с тем, что при втыкании аналогичного устройства система ищет, откуда ей взять дравер. И не находит.
DPInst предварительно делает установку пакета в хранилище через DriverPackagePreinstall. Девкон этого не умеет. А я хочу попробовать реализовать это, может опционально, у себя в программе.

Поддерживаю.
ИМХО привязка к именам папок и файлов - это и есть порочная идея. Программа должна быть максимально универсальна и независима от "псевдостандартов" придуманных драйверособирателями и активно используемых "сборщиками сборок". И лучше пусть "сборщики сборок" повышают свой уровень интеллектуального развития в процессе сортировки драйверов, чем программа скатывается до того, что будет пытаться автоматически разбирать кучу накиданного ей мусора, применяя логику этих самых псевдостандартов. »

В каталогизаторе можно задать исключаемые папки. Таким образом исключить обход папок с несовместимыми дровами. Но, вся ответственность на сборщике пакета и на том, кто запускает программу.
Попутно, есть небольшая идея - внести в список устанавливаемых вручную все драйвера со стандартными PCI\CC_ ACPI\PNP *PNP ибо такие дравера невозможно установить автоматически.
Очень яркий пример из этой серии - дравер pci-e ATI - он садится на любую платформу и приводит к неработоспособности системы.
Где бы только взять точный список стандартных HWID? В DDK может быть?

Не стандарт, мы сами с кварком долго мучались, но в итоге оказалось что не все производители работают как положено. в итоге в DriverX отображаются дрова несовместимые с системой.
С этим вопросом лучше обратится к Кварку и Семлабу, они более авторитетны в ЭТОМ СЛОЖНОМ ВОПРОСЕ.
Лучше не брать на себя ответственность выявления стандарта , как оказалось очень нестабильная тема. Потом будет тысяча нареканий, как впрочем и на форуме D »Так ведь то, что драйверописатели не соблюдают Микрософт-овых стандартов в ИНФах, совсем не означает, что прога не должна придерживаться этих самых стандартов в поиске драйвера, согласно которых сама Windows и работает. »
Вот и стараюсь отобрать хотя бы примерно совместимые драйвера. Все равно - последний вердикт за системой. Если не использовать ForceInstallDriver, то система не установит явно несовместимый дравер.


Подход с индексами намного интереснее тупой распаковки всего в папку и прогонкой девконом или dpInst - тут на основе своего опыта и знаний можно исключить многие конфликты драверов без правки INF и сопутствующей потери подписей. Я к этой теме шел больше года, была идея но не было времени и желания на реализацию.


3. Спасибо Боа за интересную прогу, если хотите можете взять мои наработки (исходники DRiverX), может быть и помогу , сам пишу на дельфях... »
Интересно бы было посмотреть.

RStorm
11-09-2012, 21:52
Boa Soft, ошибка в названии файла sources\$OEM$\$$\OEM\Tools думаю должно быть DIT_xx86.exe

Mr dUSHA
12-09-2012, 02:16
Попутно, есть небольшая идея - внести в список устанавливаемых вручную все драйвера со стандартными PCI\CC_ ACPI\PNP *PNP ибо такие дравера невозможно установить автоматически. »

Вот здесь http://msdn.microsoft.com/en-us/library/windows/hardware/ff544997(v=vs.85).aspx и дальше по подкатегориям по типам шин смотри описалово по идентификации устройств на них.

Кроме того из этой заглавной странички линк http://go.microsoft.com/fwlink/?LinkId=49039 на скачку файла с таблицами типов устройств, а в частности "DEVICE TYPE CODES" для расшифровки только по одному \CC_ предназначения драйвера.
Единственное, чего там нет, так это подробного описания третьего опционального байта "Interface Type" для разных типов устройств. Но это уже при большой надобности можно нагуглить в других источниках, поскольку вообще идентификация устройств относится не к микрософтовским выдумкам, а к спецификациям шин (PCI, USB, SCSI, и т.д.....)

Короче говоря я думаю, что это все проще разгребать непосредственно при индексировании драйверов и создавать сабжевый список динамически.

SOLON7
12-09-2012, 21:49
Boa Soft, вообще было замесательно обьеденить всех программеров..
и пилить прогу для установки дров...

Так ведь то, что драйверописатели не соблюдают Микрософт-овых стандартов в ИНФах, совсем не означает, что прога не должна придерживаться этих самых стандартов в поиске драйвера, согласно которых сама Windows и работает. »

Лучше не стоит дальше тему поднимать. это Риторический вопрос а не технический..
Мне мс не даст исходники своего ядра....

Mr dUSHA
12-09-2012, 22:10
Мне мс не даст исходники своего ядра.... »
Дык зачем исходники, если все стандарты расписаны вдоль и поперек в документации?

quarq
16-09-2012, 01:19
Дык зачем исходники, если все стандарты расписаны вдоль и поперек в документации? »

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

Mr dUSHA
17-09-2012, 00:39
если секция мануфактуры не определена то по старому стилю это 2000 винда по новому это виста ! »
А можно в студию ссылку на МСДН, где видно это самое деление на два стандарта (до Висты и после)?

и при всем при этом они же глубоко умалчивают как сама винда при этом бардаке отделяет мух от котлет... »
Если есть сомнения в точности документации, то как раз для этого случая есть IDAPro.




© OSzone.net 2001-2012