2

我使用 Inno Setup 安装程序来安装我的 Win32 应用程序,它主要安装在 Windows 10 上。有一些 USB 加密狗(基本上是 USB 串行端口)的驱动程序要与我的应用程序一起安装。驱动程序由文件和目录组成:

amd64 (folder)
x86 (folder)
dfu.cat
dfu.inf
usbserial.cat
usbserial.inf

我将dpinst32.exeand添加dpinst64.exe到驱动程序的文件夹中,然后从我的安装程序中调用dpinst32or dpinst64(基于 Windows 版本)。

但是,在某些 PC 上,我以未安装驱动程序结束。

通过我的安装程序安装驱动程序的正确方法是什么?

编辑:这是来自的日志dpinst64.exe /Q /c

INFO:   Option set: dumping log info to console.
INFO:   Current working directory: 'F:\windrv'
INFO:   Running on path 'F:\windrv'
INFO:   No valid 'dpinst.xml' file provided.
INFO:   Install option set: Running in quiet mode. Suppressing Wizard and OS popups.
INFO:   Found driver package: 'F:\windrv\dfu.inf'.
INFO:   Found driver package: 'F:\windrv\usbserial.inf'.
INFO:   Preinstalling 'f:\windrv\dfu.inf' ...
INFO:   ENTER:  DriverPackagePreinstallW
INFO:   RETURN: DriverPackagePreinstallW  (0xE0000242)
INFO:   Preinstalling 'f:\windrv\usbserial.inf' ...
INFO:   ENTER:  DriverPackagePreinstallW
INFO:   RETURN: DriverPackagePreinstallW  (0xE0000242)
INFO:   Returning with code 0x80020000
4

1 回答 1

2

/S选项Dpinst完全隐藏了与操作系统的所有交互。您遇到的问题是您的操作系统还不信任制造商并且没有完成安装。例如,如果您使用参数运行 Dpinst,/SW您将看到此窗口。

这就是安装在某些计算机上有效而在其他计算机上无效的原因。

一种解决方案是为您的驱动程序提取证书,certmgr.msc从控制台调用并在“受信任的发布者”下检查,您应该找到制造商并通过右键单击能够将证书导出为yourCert.cer文件。然后,您可以在调用目标系统certutil.exe -addstore "TrustedPublisher" yourCert.cer之前从控制台作为管理员调用。Dpinst /S

由于您已经为操作系统提供了证书,因此该窗口不应再弹出,您可以dpinst完全静默运行。

于 2020-02-19T09:31:30.430 回答