Как я могу упаковать драйвер libusbK в Windows 10 для распространения?

892
philshem

Я работаю со спортивным логгером GPS, для которого Windows 10 по умолчанию устанавливает usbser.sysдрайвер. Этот стандартный драйвер не поддерживает API WebUSB . По этой причине на моем локальном компьютере с Windows 10 я успешно использую Zadig (v2.4) для установки драйвера libusbK .

Поскольку я открыл исходный код WebUsb-mtk, специфичный для этого спортивного регистратора GPS (и других регистраторов с GPS-модулем MTK 3329), я хотел бы также распространить этот подписанный драйвер среди других пользователей Windows 10 аналогичного оборудования.

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


ps С Mac OS X WebUSB для этого оборудования работает "из коробки".

2

1 ответ на вопрос

2
harrymc

Согласно libusbK - Создание клиентских установщиков С помощью InfWizard установщик выполняет практически все свои операции с помощью установщика пакетов драйверов (DPInst), который является стандартной функцией в Windows.

В соответствии с использованием DPInst для удаления пакетов драйверов, синтаксис для удаления драйвера:

DPInst.exe /u path-to-inf-file 

Драйвер для usbser.sysя нашел в папке C:\Windows\WinSxS\amd64_dual_usbser.inf_31bf3856ad364e35_10.0.17134.1_none_8281fb62ec80df7e, поэтому удалить его можно с помощью такой команды:

DPInst.exe /u C:\Windows\WinSxS\amd64_dual_usbser.inf_31bf3856ad364e35_10.0.17134.1_none_8281fb62ec80df7e 

Конечно, было бы лучше, если бы ваш установщик мог сначала проверить, существует ли этот файл, а если нет, то найти его.

Следующим шагом будет установка libusbK с помощью команды:

DPInst.exe libusbK.inf 

Поскольку вы установили libusbK, у вас должны быть .sysи .inf файлы, которые к нему относятся. Вы должны иметь их обоих в одной папке, а затем вызвать DPInst для .inf файла.

(Поскольку у меня нет этих файлов, этот ответ в основном теоретический.)

Спасибо! так что инсталлятор на самом деле просто скрипт для душ? Могу ли я удалить usbser.sys только для этого устройства, а не для потенциально всех устройств? philshem 5 лет назад 0
Вероятно, это было сделано в установщике с помощью программы, а не сценария, но может быть возможно из сценария. Из `usbser.inf` я понял, что это универсальный драйвер, который в целом связан с USB-устройствами и не указывает идентификаторы устройств. У меня нет файлов для libusbK, поэтому я не могу их проверить. harrymc 5 лет назад 0
Я читаю немного больше. Кажется, одним из способов является использование Visual Studio для создания пакета драйвера https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/creating-a-driver-package Также кажется, что DPInst теперь DIFX philshem 5 лет назад 0
Также кажется, что Zadig.exe может создавать файлы, необходимые для совместного использования в качестве пакета установки драйвера. Я буду продолжать пытаться, но большое спасибо за толчок в правильном направлении. philshem 5 лет назад 0
DPInst все еще там и используется установщиками libusbK, поэтому он все еще работает как всегда. Если будет доступен libusbK.inf / sys, я сравню с usbser.inf. harrymc 5 лет назад 0
[Вот файл .inf] (https://pastebin.com/raw/KrA8WEBh). Достаточно ли этого для сравнения? philshem 5 лет назад 0
Сравнивая два файла, `usbser.inf` - это современный драйвер, работающий с классом USB-устройств. `libusbK.inf` - более старый формат, предшествовавший Windows 8, определяющий собственный класс устройств, а не новые стандарты. Об этом говорится в [одном сообщении] (https://sourceforge.net/p/libusb/mailman/message/34481429/) от 2015 года, в котором рекомендуется перейти на новый стандарт, но может быть подсказка о том, что Zadig может внести дополнительные изменения в реестр чтобы это работало. Единственный способ - это проверить DPInst, а в случае проблем - зафиксировать изменения в реестре, сделанные Zadig (для этого есть продукты). Лучше использовать виртуальную машину для тестирования. harrymc 5 лет назад 0
Есть ли способ заставить usbser.inf работать с [WebUSB] (https://github.com/WICG/webusb)? Или это другой вопрос? philshem 5 лет назад 0
Я не очень хорошо разбираюсь в «usbser», так что не знаю, возможно ли это, но я сомневаюсь, что эти две разные платформы могут работать вместе. Если бы это было легко, libusbK был бы написан таким образом. harrymc 5 лет назад 0
Да, я слишком занят этим драйвером;) - прочтите этот ответ на мой комментарий к проблеме Github, касающейся окон https://github.com/WICG/webusb/issues/143#issuecomment-440348384 philshem 5 лет назад 0
Хорошо, они сейчас на правильном пути. harrymc 5 лет назад 0

Похожие вопросы