首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何要求用户使用NSIS卸载以前的版本

您可以通过以下步骤要求用户使用NSIS卸载以前的版本:

  1. 在安装程序界面中,添加一个按钮或调用一个函数,以让用户选择是否要卸载以前的版本。例如,您可以使用以下代码:!include nsis.nsh Function Uninstall ; 提示用户输入需要卸载的版本 MessageBox MB_YESNO "您想要卸载以前的版本吗?" /SD IDYES ; 如果用户选择是,则执行卸载操作 If IDYES ; 执行卸载操作 ; 这里可以添加实际的卸载代码 EndIf FunctionEnd!include nsis.nsh Function Uninstall ; 提示用户输入需要卸载的版本 MessageBox MB_YESNO "您想要卸载以前的版本吗?" /SD IDYES ; 如果用户选择是,则执行卸载操作 If IDYES ; 执行卸载操作 ; 这里可以添加实际的卸载代码 EndIf FunctionEnd; 导入NSIS API函数 Import "C:\Program Files (x86)\NSIS\src\lib\nsis.dll" ; 定义卸载函数 Function Uninstall ; 获取当前安装目录 Push "C:\Program Files (x86)\NSIS\bin" Call GetProgramFolder Pop $0 ; 获取注册表键值 Push "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" Call GetRegKey Pop $0 ; 删除注册表键值 Push $0 Call DeleteRegKey Pop $0 ; 删除目录 Push $0 Call DeleteFolder Pop $0 EndFunction ; 导入NSIS API函数 Import "C:\Program Files (x86)\NSIS\src\lib\nsis.dll" ; 定义卸载函数 Function Uninstall ; 获取当前安装目录 Push "C:\Program Files (x86)\NSIS\bin" Call GetProgramFolder Pop $0 ; 获取注册表键值 Push "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" Call GetRegKey Pop $0 ; 删除注册表键值 Push $0 Call DeleteRegKey Pop $0 ; 删除目录 Push $0 Call DeleteFolder Pop $0 EndFunction!include nsis.nsh
  2. 在安装程序界面中,添加一个按钮或调用一个函数,以让用户选择是否要卸载以前的版本。例如,您可以使用以下代码:
  3. 在实际卸载操作中,您需要使用NSIS提供的API函数来完成以前版本的卸载操作。您可以参考以下代码:
  4. 最后,您可以将卸载按钮的代码与卸载函数连接起来,以形成完整的卸载流程。例如,您可以使用以下代码:

; 导入NSIS API函数

Import "C:\Program Files (x86)\NSIS\src\lib\nsis.dll"

; 定义卸载函数

Function Uninstall

代码语言:txt
复制
; 获取当前安装目录
代码语言:txt
复制
Push "C:\Program Files (x86)\NSIS\bin"
代码语言:txt
复制
Call GetProgramFolder
代码语言:txt
复制
Pop $0
代码语言:txt
复制
; 删除目录
代码语言:txt
复制
Push $0
代码语言:txt
复制
Call DeleteFolder
代码语言:txt
复制
Pop $0

EndFunction

; 导入NSIS API函数

Import "C:\Program Files (x86)\NSIS\src\lib\nsis.dll"

; 定义卸载函数

Function Uninstall

代码语言:txt
复制
; 获取当前安装目录
代码语言:txt
复制
Push "C:\Program Files (x86)\NSIS\bin"
代码语言:txt
复制
Call GetProgramFolder
代码语言:txt
复制
Pop $0
代码语言:txt
复制
; 获取注册表键值
代码语言:txt
复制
Push "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS"
代码语言:txt
复制
Call GetRegKey
代码语言:txt
复制
Pop $0
代码语言:txt
复制
; 删除注册表键值
代码语言:txt
复制
Push $0
代码语言:txt
复制
Call DeleteRegKey
代码语言:txt
复制
Pop $0
代码语言:txt
复制
; 删除目录
代码语言:txt
复制
Push $0
代码语言:txt
复制
Call DeleteFolder
代码语言:txt
复制
Pop $0

EndFunction

; 卸载按钮代码

Button

代码语言:txt
复制
Caption := '卸载'
代码语言:txt
复制
Font := 'Arial'
代码语言:txt
复制
FontSize := 12
代码语言:txt
复制
FontColor := clBlack
代码语言:txt
复制
BackColor := clBtnFace
代码语言:txt
复制
Size := 240
代码语言:txt
复制
Left := 
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在 UWP 使用 wpf Trigger 安装 Behaviors以前代码UWP 使用 Trigger

本文需要告诉大家,如何使用 Behaviors 做出 WPF Trigger ,需要知道 UWP 不支持 WPF Trigger 。...下载 他官网在 Behaviors 以前代码 在 WPF 开发,可以写出下面代码 <Style TargetType...需要知道是 DataTriggerBehavior 是 Behaviors 一个东西,所以需要安装之后才可以使用。请看下面的代码。...,需要先添加命名空间和寻找一张图片,因为图片使用是Assets/动漫.jpg ,所以需要把他修改为你图片所在,如何写参见win10 uwp 访问解决方案文件 命名空间 xmlns:Interactivity...按钮无法使用图片 ? 请使用 DataTriggerBehavior Binding 连到需要修改属性,在 Value 判断他值。

2.2K00
  • 如何看待50多家组织致信谷歌要求允许用户卸载所有Android预装应用程序?将带来哪些影响?

    现在谷歌安卓系统统治力还在不断加强,现在具备全球生态能力企业前五企业都是美国几个头部玩家,像苹果,微软,谷歌,亚马逊,脸书都是具备全球生态能力科技公司,中国两个排头兵阿里巴巴和腾讯公司仅仅跟在后边...,在科技领域欧洲也是非常忌惮美国科技公司,对于谷歌安卓系统现在很多人不是很理解,既然安卓代码开源为什么还能控制安卓生态,在这点上谷歌玩了一个花样,虽然代码开源但是谷歌全家桶服务却是要以来...GMS框架,所以只要通过不了谷歌认证手机厂家就没法使用谷歌全家桶,所以预装谷歌自家产品也是顺理成章事情。...而且现在谷歌全家桶已经能够影响全球老百姓,现在几乎离开谷歌全家桶就不能正常使用,对于全球老百姓影响还是非常大,在全球范围内美国科技实力还是非常强大,而且依然改变了世界上很多规则,美国对于全球影响力还是第一位...虽然很多企业联合起来抵制谷歌安卓,但对于大形势而言只是杯水车薪,毕竟用户行为习惯以及被培养起来了,几乎所有的应用开发都基于安卓和苹果来完成,除非出现新技术革命或者变革,否则短时间内还是谷歌安卓天下

    43530

    使用Nsis打包安装程序》

    文章目录 1、使用HM VNISEdit打包 1.1、配置 1.2、打包 2、编写Nsis脚本打包 3、引用 NSIS(Nullsoft Scriptable Install System...它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出那样,NSIS 是通过它脚本语言来描述安装程序行为和逻辑。...NSIS 脚本语言和通常编程语言有类似的结构和语法,但它是为安装程序这类应用所设计[1]。...1、使用HM VNISEdit打包 当前HM VINISEdit版本为2.0.3是2005年发布,年纪比较大,可以点击这里下载,也可以下载我从轻狂志大佬博客下载这个插件集成版本。...< 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    1.1K30

    如何选择合适 django 版本使用

    首先,是不是需要一个地方来查看 django 有没有新版本发布呢,请看: https://www.djangoproject.com/download/ 然后,该如何选择一个合适版本,是一股脑装最新版...(很肯能存在一些小问题,如:与其他库兼容性问题)还是有方法可寻呢,请看:     一般来说我们都选择在长期维护中 django 版,即 LTS(Long Term Support) 版本。...官网有个图,很明显看到某些版本标记了 LTS: 从上图可以看出目前在维护中 只有两个版本,3.2 版本(还没发布)将要加入 LTS: 1.11(Last version to support Python...2.7.) 2.2(我们 python3 就用 2.2 了,跟 1.11 语法上有些变化,比如:路由匹配模式) 安装时候指定版本安装就可以安装 LTS 版本(pip install django=

    3K40

    【C++】Qt:基于windeployqt+nsis程序打包和发布

    1.windeployqt和nsis介绍 windeployqt是一个Qt提供非常有用命令行工具,用于将Qt应用程序所需所有依赖项自动复制到应用程序构建目录中,以便在没有Qt安装计算机上运行应用程序...它还会自动解析应用程序依赖关系,确保所有依赖库文件都正确复制到目标目录中,以便应用程序能够正确运行。 使用windeployqt非常简单。...nsis我用版本是: nsis-3.02.1(最新版nsis是包含了下面的nisedit) 2.用nisedit制作脚本 1.新建向导脚本 2.填写应用信息 3.设置图标、语言等 4.设置目录与授权信息...5.选择打包程序文件 6.设置快捷方式 7.安装后运行方式(只有一个.exe就默认) 8.设置卸载提示 9.完成向导 生成脚本如下,可自定义更改: 比如要在安装开始时候选择语言,可以添加以下脚本...LangDialog "Installer Language" "Please select the language of the installer" ;显示语言选择对话框 Pop $LANGUAGE ;获得用户对于语言选择结果

    50210

    记联软 UniAccess 导致 NSIS 安装包启动进程失效

    且给出 NSIS 安装包脚本规避方法 特别感谢 lsj 定位到此问题,我只是帮助他记录问题工具人 联软 UniAccess 是一款监控电脑设备应用,在很多公司都会使用。...遇到此问题时最佳做法是卸载如何卸载请参阅以下博客 卸载联软UniAccess,删除UniAccess Agent记录 - Never_Await_Victory - 博客园 最新彻底删除联软uniaccessAgent_zhangxl2000...博客-CSDN博客_uniaccessagenttray.exe 卸载 UniAccessAgent 软件_ITPUB博客 如果无法卸载或好奇联软 UniAccess 是如何投毒,请继续阅读本文 我...NSIS 脚本是使用以下代码进行启动进程 nsExec::Exec "${PATH_MAIN}\lindexi.exe install" 这里 ${PATH_MAIN} 在运行时候大概是 D:\...,记录日志也都是完成启动进程 其实以上 NSIS 脚本还是有一刀,那就是传入参数是没有给带空格路径加上引号。

    2.3K30

    如何优雅使用Git版本控制工具

    使用 git config 时用 --system 选项,读写就是这个文件。 ~/.gitconfig 文件:用户目录下配置文件只适用于该用户。...~]# git config --global user.email xxxxxxxx@qq.com 如果用了 --global 选项,那么更改配置文件就是位于你用户主目录下那个,以后你所有的项目都会默认使用这里配置用户信息...Git 为你每一个提交都记录你名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。...如果远程主机版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。...git push --force origin  上面命令使用--force选项,结果导致远程主机上更新版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。

    1.3K40

    NSIS 打包 Electron 项目的注意事项(拖拽、权限、兼容性等)

    我自己本人不做 Electron 开发,但有一位合作伙伴在使用 NSIS 打包 Electron 应用时候遇到了一些问题,主要问题有以下几个,先记录下来,然后追个击破。...打包后应用在 Windows 7 无法直接运行,需要修改兼容性为 Windows 7 才可以使用 打包后安装或者卸载时应用在运行会安装或者卸载失败,无法替换或删除应用(这个与 Electron 无关但也介绍一下...) 打包后应用第一次启动无法使用拖拽功能 脚本设置启动程序兼容性 设置程序兼容性有两种方式,一种是手动右键修改,但这种方式明显不可能让用户自己去操作,所以我们需要另外一种方式就是在安装程序后自动写入一个注册表...安装或卸载前结束应用 需要两个插件,一个是 KillProcDLL.dll,另一个是 FindProcDLL.dll,这两个插件均可以从 NSIS 官网下载。...经过排查发现,NSIS 打包后安装包程序默认是以管理员身份启动,第一次安装完成后自动启动应用时会继承安装包权限(管理员)导致拖拽功能无法使用了,而直接从桌面运行快捷方式是没问题

    1.4K20

    将独立 Python 网络应用程序分发给非技术用户

    该应用程序将在托管网站上运行,但我们也希望用户能够下载一个自包含应用程序,以便他们可以在本地安装,以获得更好性能或他们根本无法在教室中使用互联网连接。...我们已经查看了以前问题,但似乎没有一个相关问题。...我们不担心源代码安全性(我们应用程序将是开源,我们将销售与之匹配内容),我们只需要非技术 Windows 用户能够下载并使用我们应用程序而不会出现任何问题。...解决方案方法一使用 NSIS 是一个好主意,但我们建议使用诸如 pyinstaller(我们个人最喜欢,其他选择是 bb_freeze 和 py2exe)这样“打包器”来在使用 NSIS 之前创建...pyinstaller 允许您指定要包含在 exe 中依赖项,这样您就不必担心用户没有安装正确 Python 版本或其他依赖项。

    9810

    NSIS

    NSIS (Nullsoft Scriptable Install System)是一个Open SourceWindows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。...这如其名字所指出那样,NSIS是通过它脚 本语言来描述安装程序行为和逻辑NSIS脚本语言和通常编程语言有类似的结构和语法,但它是为安装程序这类应用所设计。...NSIS (Nullsoft Scriptable Install System)是一个Open SourceWindows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。...这如其名字所指出那样,NSIS是通过它脚本语言来描述安装程序行为和逻辑NSIS脚本语言和通常编程语言有类似的结构和语法,但它是为安装程序这类应用所设计。...    支持网络安装、补丁    支持无人值守安装模式    此外,NSISlicense允许任何用途免费使用

    1.3K60

    NSIS 打包 Electron 生成exe安装包

    每次文章都从0开始 从搭建开始 使用是electron-vue 毕竟方便一点 如果只想安装electron 请参见我另一个文章https://segmentfault.com/a/11......如何访问外国网站请参加另一个文章(好像被和谐了 那就+我们交流群 814270669 吧!)...编写一个页面 使用IDE打开随便编写一个页面 使用npm 构建安装包 npm run build 安装程序制作 下载NSIS软件,安装 下载地址:https://...安装程序检测360是否运行 如果在运行就禁止安装 其中使用到一个dll插件 (FindProcDLL.dll) 官方下载地址:http://nsis.sourceforge.net/F......: 一个是un.onInit ->卸载程序 一个是un.onUninstSuccess -> 卸载成功提示 .onInit 安装程序初始化 # 检测360杀毒软件是否在运行 Function .onInit

    2K31

    windows nsis安装包制作

    3.06.1/nsis-3.06.1-setup.exe 使用方式 NSIS EDIT:使用向导创建打包脚本 菜单栏: 文件 -> 新建脚本:向导 下一步 NSIS_1.png ------ 填写对应安装包信息...英语) NSIS_3.png ------ 选择对应许可证文件 下一步 许可证文件: BOM-UTF-8格式TXT NSIS_4.png ------ 选择安装包需要添加文件、文件夹 下一步...文件:右侧第一个图标 文件夹:右侧第二个图标 NSIS_5.png ------ 选择需要生成快捷方式(默认即可) 下一步 NSIS_6.png ----- 选择安装包启动参数(如果没有,...默认即可) NSIS_7.png ------ 卸载程序相关(如非特殊需要,默认即可) 下一步 NSIS_8.png ------ 保存脚本信息 完成 NSIS_9.png ------ 保存安装包脚本到磁盘...NSIS_10.png ------ 保存完成之后会自动打开刚刚创建脚本 菜单栏: NSIS(N) -> 编译脚本 编译完成之后,底部输出框显示编译结果及保存位置 NSIS_11.png

    2.9K00

    程序员修炼The Pragmatic Starter Kit

    CruiseControl是用于持续构建过程框架 包括EMail通知、Ant集成,以及各种源代码控制工具插件 提供了一个查看当前和以前构建细节Web界面 LuntBuild http://LuntBuild.sourceforge.net...是一套JUnit Test Decorator,用于帮助测量系统中有JUnit测试部分性能和伸缩性 MockObjects http://www.mockobjects.com 给Java程序员使用核心...CVS http://www.cvshome.org 一个使用广泛开源版本控制系统 Subversion http://www.subversion.org 一个准备颠覆CVS开源版本控制系统 Cygwin...Java日志记录框架 NSIS http://nsis.sourceforge.net Nullsoft公司出品可脚本化安装系统(Nullsoft Scriptable Install System)...,Windows下免费安装/卸载程序生成器 Mac OS X开发工具PackageMaker,可以生成安装包.pkg文件 ESP Package Manager http://www.easysw.com

    45020

    【企业架构框架】如何使用 TOGAF 版本 10

    我们退后一步,从从业者角度看待在组织中开展企业架构工作。但是,本文区分了不同 TOGAF 10 受众和用例,并认为组织内已经有正在进行企业架构活动。本文有助于了解如何使用全新版本。...使用 TOGAF 版本,组织总是不得不删减一些零碎东西来补充他们现有的流程和工件。TOGAF 10 模块化结构使这变得更加容易。Open Group 将此称为“主题支持”。...它们取决于一般参数,例如 - 公司规模 - 行业 - 安全要求 - 合规性要求 它们还取决于业务模型和竞争优势参数,例如 - 客户前端 - 数据集成 - 数据货币化策略 - 产品生命周期 - 发布周期...除了上述参数之外,架构师工作角色和用例对于决定是否和如何使用标准。例如,The Open Group 提到了与 TOGAF 10 相关四个角色。...- TOGAF 领导者建立和发展 EA 能力指南 - 信息架构:Cus前主数据管理 (C-MDM) - 架构项目管理 如何使用 TOGAF 10 示例 让我们考虑一些人可能想要使用 TOGAF 10

    82430

    如何使用WindowSpy实现对目标用户行为监控

    关于WindowSpy WindowSpy是一个功能强大Cobalt Strike Beacon对象文件,可以帮助广大研究人员对目标用户行为进行监控。...该工具主要目标是仅在某些目标上触发监视功能,例如浏览器登录页面、敏感文件、vpn登录等。目的是通过防止检测到重复使用监视功能(如屏幕截图)来提高用户监视期间隐蔽性。...除此之外,该工具还能够大大节省红队研究人员在筛选用户监控数据时所要花费时间。 工具运行机制 每次检测到Beacon之后,BOF都会在目标上自动运行。...工具安装 首先,广大研究人员需要使用下列命令将该项目源码克隆至本地: git clone https://github.com/CodeXTF2/WindowSpy.git 接下来,将项目中WindowsSpy.cna...工具使用 加载完成之后,每当检测到Beacon时该工具都会自动运行,并相应地触发对应操作。

    25010

    如何使用WLANSSID提取用户凭证数据

    因为我们现在主要目标就是提取出用户凭证数据,因此我们脚本使用了Invoke-CredentialsPhish脚本实现逻辑来提示用户输入凭证信息,并捕获到凭证明文数据。...最后,我们要将计算得出编码值以“Domain:用户名:密码”这样格式设置为热点SSID。...如果我们离目标距离比较近的话,我们将可以看到如下图所示界面: ? 现在,我们就可以使用Invoke-SSIDExfil.ps1脚本解码选项来解码用户凭证数据了,整个过程也非常简单。 ?...我添加了该后门对PowerShellv3支持,并且使用ROT13对SSID进行编码。...那么一个无线网络热点到底是如何向后门发送控制命令呢?

    1.6K80
    领券