Inno SetUp安装包:如何在程序安装时卸载驱动程序
阅读原文时间:2023年08月26日阅读:1

pnputil命令行方式卸载

如果您想通过命令行卸载.INF文件的驱动程序,您需要使用PnPUtil命令。以下是一个示例:

pnputil /delete-driver oem0.inf /uninstall

在这个示例中,oem0.inf应该被替换为您要卸载的驱动程序的.inf文件。使用pnputil /enum-drivers命令可以列出已安装驱动程序的列表。

请注意,你需要以管理员身份运行命令提示符窗口才能执行这个操作。

在使用这些方法之前,请确保备份您的数据,并且知道如何从系统恢复(例如,如果卸载了错误的驱动程序)。这些步骤可以在系统不稳定或无法启动的情况下造成问题。

集成到InnoSetUp:

[UninstallRun]

RunOnceId:"StopPS5Driver"; Filename:"{cmd}"; Parameters:"/C pnputil /delete-driver flydigigamemap.inf /uninstall > ""{app}\FlydigiUninstall.log"" 2>&1"; Flags:runhidden runascurrentuser

总结:这个命令集成到InnoSetUp后,最终没有卸载成功,原因未找到。

Devcon工具方式卸载

如果以上两点都确认无误但仍无法卸载,你可能需要考虑使用更底层的驱动管理工具,比如Devcon(Windows驱动开发套件(WDK)的一部分)。

Devcon工具提供了一个remove命令,它可以用来卸载设备和驱动程序。在这种情况下,你需要知道设备的硬件ID。在这里是一个使用Devcon来卸载驱动的示例:

[UninstallRun]
RunOnceId:"StopPS5Driver"; Filename:"{cmd}"; Parameters:"/C devcon remove @YourHardwareID > ""{app}\Uninstall.log"" 2>&1"; Flags:runhidden runascurrentuser

在这个示例中,你应该把YourHardwareID替换为你要卸载的设备的硬件ID。

请注意,devcon不是Windows操作系统的标准组成部分,因此如果你选择这种方法,你可能需要把devcon的可执行文件包含在你的安装包中,或者在你的卸载脚本中下载它。

最后,记住操作驱动和设备时应当小心,因为不正确的操作可能会导致系统不稳定。在执行任何这样的操作前,你应当确保已经备份了你的重要数据。

[UninstallRun]

RunOnceId:"StopPS5Driver"; Filename:"{cmd}"; Parameters:"/C pnputil /delete-driver @YOUInfFileName /uninstall > ""{app}\FlydigiUninstall.log"" 2>&1"; Flags:runhidden runascurrentuser


[Run]

Filename:"{app}\devcon.exe"; Parameters:"remove @YourHardwareID"; Flags:runhidden runascurrentuser; StatusMsg:"Removing old driver..."

总结:这种方式完美解决驱动卸载的问题。