通过 pnputil 安装驱动程序

mac*_*ine 6 windows nsis driver inf

我正在尝试通过 NSIS 之类的(在 NSIS 脚本中安装驱动程序)安装 .inf 文件。

安装本身运行顺利,但 Windows 会使用其内部发布的名称(递增数字 oemxxx.inf)安装驱动程序。

我怎样才能让 pnputil.exe 给我发布的名称作为返回值(供以后使用)?

mac*_*ine 3

我为在 nsis 中获取已发布的驱动程序名称所做的就是这个地狱般的解决方法:

  1. 将已安装驱动程序的列表放入文本文件中pnputil /e > driverlist_before.txt
  2. 通过安装新驱动程序pnputil /i /a mydriver.inf
  3. 将已安装驱动程序的列表放入文本文件中pnputil /e > driverlist_after.txt
  4. 将以下代码放入 .cmd 文件中并通过以下方式执行nsExec

内容GetPublishedDrivername.cmd

@echo off
:: look at differences between files and just keep the line with the oem info
fc mydriverlist_before.txt mydriverlist_after.txt | findstr /C:"oem" > diff.txt
:: cut result and keep second part               "           oem##.inf"
for /f "tokens1,2 delims=:" %%a in (diff.txt) do (
  if "%%a"=="Published name " set info=%%b
)
:: get rid of leading spaces                     "oem##.inf"
for /f "tokens=* delims= " %%a in ("%info%") do set info=%%a
:: split "oem##.inf" and keep first part         "oem##"
for /f "tokens=1,2 delims=." %%a in ("%info%") do set info=%%a 
:: get of the oem part                           "##"
set info=%info:oem=%
:: convert string into int value
set /a info=%info%
del diff.txt
:: return number as result
exit /b %info%
Run Code Online (Sandbox Code Playgroud)

这个脚本肯定可以优化,欢迎每一个输入。