Inno SetUp安装包:如何在程序安装时卸载驱动程序
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..."
总结:这种方式完美解决驱动卸载的问题。
Inno SetUp安装包:如何在程序安装时卸载驱动程序的更多相关文章
- Inno Setup入门(十一)——完成安装后执行某些程序
Inno Setup入门(十一)——完成安装后执行某些程序 2011-02-16 16:24:23| 分类: Inno Setup | 标签:inno setup |举报 |字号 订阅 ...
- [转]Visual Studio 2017各版本安装包离线下载、安装全解析
Visual Studio 2017各版本安装包离线下载.安装全解析 2017-3-10 11:15:03来源:IT之家作者:寂靜·櫻花雨责编:晨风评论:165 感谢IT之家网友 寂靜·櫻花雨的投 ...
- Linux下一键安装包的基础上安装SVN及实现nginx web同步更新
Linux下一键安装包的基础上安装SVN及实现nginx web同步更新 一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install sub ...
- Android监听应用程序安装和卸载
Android监听应用程序安装和卸载 第一. 新建监听类:BootReceiver继承BroadcastReceiver package com.rongfzh.yc; import android. ...
- WinForm使用Setuo Project打包安装包 (附带vs2019 InstallerProjects安装程序)
vs2019 InstallerProjects安装程序地址: 链接:https://pan.baidu.com/s/1K5iDuQT4CBBw2dJjRLqhjg提取码:dfhy 转载至https: ...
- Inno Setup入门(十一)——完成安装后执行某些程序
有些时候我们的程序虽然能够很好的完成安装,但是程序的配置工作可能需要其他的一些程序来辅助完成,如果不执行这些程序,主程序就不能很好的完成工作,甚至不能完成工作,一个很明显的例子是,目前许多程序是通过N ...
- (转)Inno Setup入门(十一)——完成安装后执行某些程序
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250901 有些时候我们的程序虽然能够很好的完成安装,但是程序的配 ...
- Inno Setup入门(九)——修改安装过程中的文字显示
前面说到过可以使用不用的语言文件实现不同的显示方式,方便与国际接轨,事实上即使没有语言文件也可以实现修改.[Messages]段用于定义安装程序和卸载程序中显示的消息.一般不需要创建 [Message ...
- Visual Studio 2017各版本安装包离线下载、安装全解析
关于Visual Studio 2017各版本安装包离线下载.更新和安装的方法以及通过已下载版本减少下载量的办法 微软最近发布了正式版Visual Studio 2017并公开了其下载方式,不过由于V ...
- Inno Setup入门(九)——修改安装过程中的文字显示
前面说到过可以使用不用的语言文件实现不同的显示方式,方便与国际接轨,事实上即使没有语言文件也可以实现修改.[Messages] 段用于定义安装程序和卸载程序中显示的消息.一般不需要创建 [Messag ...
随机推荐
- Django4全栈进阶之路20 项目实战(三种方式开发部门管理):方式一:FBV
1.模型 from django.db import models from django.contrib.auth.models import User # Create your models h ...
- vue全家桶进阶之路46:Vue3 Axios拦截器
在Vue.js 3中,使用Axios与Vue.js 2.x中类似,但是需要进行一些修改和更新,下面是Vue.js 3中Axios的定义和使用方式: 首先,你需要安装Axios和Vue.js 3.x,可 ...
- # 代码随想录算法训练营Day4|24.两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题02.07.链表相交 142.环形链表Ⅱ
24.两两交换链表中的节点 题目链接:24.两两交换链表中的节点 总体思路: 两两交换链表中的节点使用虚拟头节点可以更方便地进行交换,这样头节点和普通节点可以以同一种方式进行. 虚拟头结点的建设代码: ...
- dockder 学习第一篇
1 docker安装 1 yum包的更新到最新 yum update 2 安装需要软件包,yum-util [root@localhost ~]# yum install -y yum-utils d ...
- tar 命令压缩时报错 Removing leading `/' from member names 解决方法
原文:https://www.cnblogs.com/operationhome/p/9802554.html 在使用tar命令进行压缩打包的时候我们常常会遇到下面的错误.虽然它不会影响我们最后的压缩 ...
- Apple、AWS 这些科技巨头,已悄然入局隐私计算
随着数字化时代的到来,数据已经成为企业竞争的重要资源.然而,与此同时,数据隐私泄露的风险也在不断增加,这已经成为了公共安全和个人权利保护的重要问题.为了解决这个问题,科技巨头谷歌.苹果.亚马逊纷纷入局 ...
- Java求数组元素的最大值和最小值
代码如下: public static void main(String[] args) { int [] a = {1,2,3,88,2,90}; int max = a[0]; int min = ...
- 如何在docker中创建postgresql数据库并使用prisma进行连接
在docker中创建postgresql # docker 创建 postgres docker pull postgres # 创建容器 # ~/study/db/postgres 是本地的文件映射 ...
- Python 学习路线图
Python 学习路线图 在这个系列笔记中,我将陆续整理自己在学习 Python 编程语言及其框架的过程中留下的笔记和代码,目的是掌握如何在生产环境中利用各种领域的第三方框架来快速开发应用程序.和大多 ...
- 如何将Maven项目快速改造成一个java web项目(方式一)
因为实际需要,需要将一个maven项目改造成原生的java-web项目,写这边博客 来记录整个改造的过程.原始的maven项目,使用IDEA打开后,目录结构如下所示 直接通过文件夹查看项目结果如下 首 ...