Страница 6 из 12

Добавлено: Вт фев 01, 2011 10:33
CaptainFlint
Mellomann
Я пока не разбирался с SetupAPI, поэтому, к сожалению, не смогу в этом направлении ничего подсказать. Могу лишь предложить альтернативный способ установки: через копирование файла в нужную папку и импорт записей в реестр. Обе операции прекрасно автоматизируются.

PS: Собственно говоря, именно этот механизм был реализован изначально, INF я добавил лишь потом, для упрощения ручной установки.

Добавлено: Вт фев 01, 2011 11:37
ask-rus
CaptainFlint писал(а):Ладно, буду иметь в виду, что это важный аспект для некоторых пользователей.
Отношусь к этим некоторым пользователям. Для количества поддержу, что не рад перезагрузке. Аргумент? - Ну, допустим, делаю периодически образы диска с виндой - чистая идеальная винда со всеми обновками (вин) и драйверами под мою систему (эти работают и ладно). Тестируя что-либо, всяко хламлю систему и раз в месяц восстанавливаю, ну и потом надо что-то смонтировать, эх... перезагрузка... Почему однажды не запихнуть в образ? - А у меня всего, что касается TC, в винде нет, такой вот принцип (TC на [-d-], всё в портабл).

Добавлено: Вт фев 01, 2011 12:24
Rodny
ask-rus писал(а):Тестируя что-либо, всяко хламлю систему и раз в месяц восстанавливаю
:shock:
Виртуальные машины не?

Добавлено: Вт фев 01, 2011 12:44
ask-rus
Rodny писал(а):Виртуальные машины не?
[off]
Не, отказался. Система - дерево, тормоза - жуть.
[/off]

Добавлено: Вт фев 01, 2011 12:54
CaptainFlint
ask-rus писал(а):Для количества поддержу, что не рад перезагрузке.
Может, я не совсем ясно выразился. Я ни в коем случае не защищаю перезагрузку. Я тоже ей не рад, она мне тоже мешает, и я тоже очень не люблю лишний раз перезагружать компьютер. Просто в моём представлении это не является вселенским злом, и по сравнению, ну скажем, с отсутствием поддержки UDF (когда её ещё не было в драйвере), это становится ну настолько микроскопической проблемой, что я её каждый раз откладываю и откладываю в пользу более важных и насущных (на мой взгляд) задач.

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

Добавлено: Вт фев 01, 2011 13:00
Mellomann
CaptainFlint писал(а):<...> драйвер требуется не установить с нуля, а обновить, а это <...> можно выполнить без перезагрузки <...>
Как без неё? Поведать массам об этом надобно!
На днях как раз 1.33 накатывал "как положено" через inf'ик, так винда че-ть перезагрузку затребовала как положено.

Добавлено: Вт фев 01, 2011 13:33
Mellomann
CaptainFlint писал(а):альтернативный способ установки: через копирование файла в нужную папку и импорт записей в реестр.
пробовал (несколько раз) так делать на 1.33 в виртуалке на чистой винде ХП , даже перегрузил, но не выходит - не загружает винда дровишку.

Добавлено: Вт фев 01, 2011 14:07
CaptainFlint
Mellomann писал(а):Как без неё? Поведать массам об этом надобно!
Это рискованный способ, поэтому я о нём не пишу в ридми. Надо остановить драйвер (например, командой net stop vd_filedisk), заменить файл драйвера на новый, и снова запустить драйвер (net start vd_filedisk). Но, во-первых, обязательно перед этим отключить все подключённые образы: иначе драйвер намертво зависнет. Во-вторых, этот способ не всегда прокатывает (обновлённый драйвер может отказаться запускаться, пока не перезагрузишься).
Mellomann писал(а):На днях как раз 1.33 накатывал "как положено" через inf'ик, так винда че-ть перезагрузку затребовала как положено.
Потому что INF устанавливает стандартным способом. По сути, INF — это всего лишь автоматизированный способ сделать в точности то же самое, что раньше надо было делать ручками: скопировать файл драйвера, создать записи в реестре, предложить перезагрузку. Больше он ничего не делает.
Mellomann писал(а):пробовал (несколько раз) так делать на 1.33 в виртуалке на чистой винде ХП , даже перегрузил, но не выходит - не загружает винда дровишку.
Значит, делал что-то не так. Например, копировал в system32, а не в system32\drivers (частая ошибка была у пользователей, пока я INF не сделал, который сам копирует, куда надо). Или драйвер скопировал не той архитектуры, например, 64-битный вместо 32-битного или наоборот.

Добавлено: Вт фев 01, 2011 14:33
GGS
CaptainFlint
При установке драйвера через INF-файл создаётся запись в реестре, которая отсутствует в Вашем REG-файле. У меня так:

Код: Выделить всё

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VD_FILEDISK]
"NextInstance"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VD_FILEDISK\0000]
"Service"="VD_FileDisk"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000000
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="VD_FileDisk"
"Capabilities"=dword:00000000
"Driver"="{8ECC055D-047F-11D1-A537-0000F8753ED1}\\0041"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VD_FILEDISK\0000\LogConf]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VD_FILEDISK\0000\Control]
"ActiveService"="VD_FileDisk"

Добавлено: Вт фев 01, 2011 14:51
CaptainFlint
GGS писал(а):При установке драйвера через INF-файл создаётся запись в реестре, которая отсутствует в Вашем REG-файле.
Нет, это не при установке драйвера через INF. Это при любой установке драйвера, после перезагрузки данные записи создаются системой автоматически (иногда — после второй перезагрузки).

Добавлено: Вт фев 01, 2011 15:10
Flasher
CaptainFlint писал(а):Ну ты нашёл, блин, источничек…
Источник - самое то.
CaptainFlint писал(а):Надо остановить драйвер (например, командой net stop vd_filedisk), заменить файл драйвера на новый, и снова запустить драйвер (net start vd_filedisk). Но, во-первых, обязательно перед этим отключить все подключённые образы: иначе драйвер намертво зависнет.
Можешь попробовать прикрутить InUse.

Добавлено: Вт фев 01, 2011 15:48
CaptainFlint
Flasher писал(а):Можешь попробовать прикрутить InUse.
Проблема не в отсутствии доступа к файлу, а в том, что драйвер зависает при запросе останова. Это надо в нём что-то исправлять, а что — я разобраться не смог. Bo Branten сказал, что есть у него кое-какие мысли по этому поводу, но дальше этого не пошёл.

Добавлено: Вт фев 01, 2011 15:56
Flasher
CaptainFlint писал(а):Проблема не в отсутствии доступа к файлу
Я то понял. Проблема в замене без отключения, что и делает указанная утилита.

Добавлено: Вт фев 01, 2011 16:34
Mellomann
CaptainFlint писал(а):Значит, делал что-то не так. Например, копировал в system32, а не в system32\drivers (частая ошибка была у пользователей, пока я INF не сделал, который сам копирует, куда надо). Или драйвер скопировал не той архитектуры, например, 64-битный вместо 32-битного или наоборот.
как раз это я несколько раз перепроверял и ложил правильно и куда надо. видать, винда такая голимая...

Добавлено: Вт фев 01, 2011 17:38
CaptainFlint
Flasher писал(а):Проблема в замене без отключения, что и делает указанная утилита.
Она перезагрузку требует. А сделать замену с перезагрузкой INF-установщик и сам умеет без всяких InUse.
Mellomann писал(а):как раз это я несколько раз перепроверял и ложил правильно и куда надо. видать, винда такая голимая...
Извини, не верю. Если бы я сам, своими ручками не писал этот INF, ещё можно было бы предположить, что я в чём-то недоразобрался. За время существования плагина уже многократно были репорты от пользователей, утверждавших, что всё делали вот прям точно-точно, как надо, что всё проверяли и перепроверяли, и всё равно не работало. А потом выяснялось, что всё-таки где-то ошиблись: кто-то не в тот каталог записал, другой скопировал не ту версию драйвера (решил, что раз у него 64-битный проц, то и драйвер нужен 64-битный, несмотря на 32-битную систему), третий забыл, что в 64-битной винде обращения в system32 редиректятся в syswow64, четвёртый импортировал reg-файл в 64-битной винде из Тотала, забыв, что реестр тоже виртуализируется для 32-битных приложений…

Если хочешь, можем связаться через какой-нибудь IM. Будешь делать шаг за шагом, а я — контролировать. Если интересно разобраться — пиши в личку.