Показать полную графическую версию : DIT - Driver Install Tools
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, нетмосовские портовки). А я в нем забил проверку детей. В настоящей версии кофигурация железа читается один раз после в самом начале, и появившиеся "дети" составного родительского устройства в лог не попадут.
спасибо за столь развернутый ответ но все же я не получил ответа на свой вопрос, пробую его перефразировать
известно что драва от 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. При индексации можно настроитьигнорирование папок, например, висты.
Boa Soft, Судя по описанию в вашей программе учтено много того, чего нет у конкурентов, осталось надеяться, что вы ее не забросите и сделаете хотя бы начальный интерфейс для нее
РУКАМИ удалять несовместимые драверы из индекса »
удалять ни чего ненадо надо вводить новые критерии тоесть если секция [Manufacturer] толком не определена,смотреть название пака , если название не определено,то определять по названию папки внутри пака
В новых пакетах разделили на общие для висты и для 7 »
идея хорошая но порочная проверял я эти папки порой полная бредятина заявлено win7 на самом деле vista
в универсальных драйверах (all) просто навал инфов и длл от разных систем (да драйвер действительно универсальный но секции [Manufacturer] там определены конкретно)
именно по этому я пиши :
удалять ни чего ненадо надо вводить новые критерии тоесть если секция [Manufacturer] толком не определена,смотреть название пака , если название не определено,то определять по названию папки внутри пака
жесткая привязка как это делают большинство авторов прог приводит к написанию новых (с теме же граблями)
В логе пишет "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
Вот и не особо хочется делать фильтр по именам папок. »
Поддерживаю.
ИМХО привязка к именам папок и файлов - это и есть порочная идея. Программа должна быть максимально универсальна и независима от "псевдостандартов" придуманных драйверособирателями и активно используемых "сборщиками сборок". И лучше пусть "сборщики сборок" повышают свой уровень интеллектуального развития в процессе сортировки драйверов, чем программа скатывается до того, что будет пытаться автоматически разбирать кучу накиданного ей мусора, применяя логику этих самых псевдостандартов.
ВСЕМ
Идея конечно хорошая.
НО
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), может быть и помогу , сам пишу на дельфях... »
Интересно бы было посмотреть.
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, и т.д.....)
Короче говоря я думаю, что это все проще разгребать непосредственно при индексировании драйверов и создавать сабжевый список динамически.
Boa Soft, вообще было замесательно обьеденить всех программеров..
и пилить прогу для установки дров...
Так ведь то, что драйверописатели не соблюдают Микрософт-овых стандартов в ИНФах, совсем не означает, что прога не должна придерживаться этих самых стандартов в поиске драйвера, согласно которых сама Windows и работает. »
Лучше не стоит дальше тему поднимать. это Риторический вопрос а не технический..
Мне мс не даст исходники своего ядра....
Mr dUSHA
12-09-2012, 22:10
Мне мс не даст исходники своего ядра.... »
Дык зачем исходники, если все стандарты расписаны вдоль и поперек в документации?
Дык зачем исходники, если все стандарты расписаны вдоль и поперек в документации? »
чушь там написана... причем два стандарта до висты и после, а также куча дополнительных поправок к примеру
если секция мануфактуры не определена то по старому стилю это 2000 винда по новому это виста !
если nt написано в секции то это одно значение если кроме него прописано nt5.1(или любое другое или куча других) то значение параметра резко уменьшается
а главное что майкрасофт сама не придерживаться своих стандартов
и при всем при этом они же глубоко умалчивают как сама винда при этом бардаке отделяет мух от котлет...
Mr dUSHA
17-09-2012, 00:39
если секция мануфактуры не определена то по старому стилю это 2000 винда по новому это виста ! »
А можно в студию ссылку на МСДН, где видно это самое деление на два стандарта (до Висты и после)?
и при всем при этом они же глубоко умалчивают как сама винда при этом бардаке отделяет мух от котлет... »
Если есть сомнения в точности документации, то как раз для этого случая есть IDAPro.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.