原文NSIS:判断程序是否运行并进行卸载

今天在评论里看到网友说要一个这样的功能,就简单写了一个,本来想做360杀手来着,但遗憾的是我从来不用360的东西,所在电脑上也没有360相关的软件进行测试,所以就写了一个“金山杀手”,代码是通用的,稍稍进行一下修改就成“360杀手”啦,哈哈~~

代码未作详细测试,但应该没有太大的问题,这里只是提一个思路,如有问题,大家有兴趣的自行修改吧。

代码附上:

01 SetCompressor /SOLID lzma
02 SetCompress force
03 XPStyle on
04  
05 OutFile "unkis.exe"
06 Name "金山杀手"
07 BrandingText "WwW.Flighty.CN"
08  
09 ;以下为检测运行文件方式,有一定局限性,不推荐。
10 Section "卸载金山卫士"
11   FindProcDLL::FindProc "kxetray.exe"
12     Pop $R0
13     IntCmp $R0 1 0 no_run
14     MessageBox MB_ICONQuESTION|MB_YESNO "安装程序检测到 金山卫士 正在运行,您必须将其卸载才能进行下一步安装,是否现在进行卸载?" IDYES keep IDNO none
15   keep:
16     ExecWait 'C:\Program Files\Kingsoft\KSafe\uninst.exe'
17   none:
18     Quit
19     no_run:
20 SectionEnd
21  
22 ;以下为注册表检测方式,两种方式可以选其一,不过,推荐使用注册表检测方式。
23 Section "卸载金山卫士2"
24 ReadRegStr $R2 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\金山卫士" "UninstallString"
25   StrCmp $R2 "" NO YES
26     YES:
27     MessageBox MB_ICONQuESTION|MB_YESNO "安装程序检测到 金山卫士 正在运行,您必须将其卸载才能进行下一步安装,是否现在进行卸载?" IDYES keep IDNO none
28   keep:
29     ExecWait $R2
30   none:
31     Quit
32     NO:
33 SectionEnd

NSIS:判断程序是否运行并进行卸载的更多相关文章

  1. C# WINFORM判断程序是否运行,且只能运行一个实例(转)

    判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面记录两种, 方法1:线程互斥 static class Program { private static System.Threading. ...

  2. winform判断程序是否运行,且只能运行一个实例

    前言 判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面记录两种. 目前使用的是第一种方法. 方法1:线程互斥 static class Program { private static S ...

  3. [转]判断程序是否运行在 Windows x64 系统下

    以下功能代码判断是否运行在 Windows x64 下.本例使用 Windows API 函数 IsWow64Process,具体请参考MSDN文档:http://msdn.microsoft.com ...

  4. winfrom判断程序是否运行,并给提示

    在Program.cs文件中修改为: private static System.Threading.Mutex mutex; /// <summary> /// 应用程序的主入口点. / ...

  5. C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)

    #region//开机自动运行        private void CB_Auto_CheckedChanged(object sender, EventArgs e)        {//CB_ ...

  6. C#判断程序是否以管理员身份运行,否则以管理员身份重新打开

    /// <summary> /// 判断程序是否是以管理员身份运行. /// </summary> public static bool IsRunAsAdmin() { Wi ...

  7. 判断程序是否在VMWare内运行

    现在有许多用户都喜欢用虚拟机来测试他们的软件,以避免对真实机器环境造成损害.但是在虚拟机中,有些功能是受限,甚至不可能完成的,因此,需要在程序中判断虚拟机的环境,如果程序在虚拟机内运行,则就要把虚拟机 ...

  8. WinForm判断程序是否已经在运行,且只允许运行一个实例

    我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错. 为了更便于使用,笔者整理了一段自己用的代码,可以判断程序是否在运行,只运行一个实 ...

  9. 【WinForm】使用NSIS发布程序

    简介 NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能 使用 以下是 ...

随机推荐

  1. poj 3250 Bad Hair Day (单调栈)

    Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14883   Accepted: 4940 Des ...

  2. Windows Phone开发(27):隔离存储A

    原文:Windows Phone开发(27):隔离存储A 在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储& ...

  3. java中途强制跳出递归

    有些时候我们需要在中途强制跳出递归,而且还是需要一步跳出,而不一层一层的跳出,这时,我们可以采用抛异常的方法来实现. class Test { static class StopMsgExceptio ...

  4. Eclipse中为什么创建DynamicWebProject后没有默认的web.xml文件?

    在Eclipse中新建DynamicWebProject的时候不要直接点"完毕",在下一步有个勾选项(Generate web.xml deployment descriptor) ...

  5. centos安装和卸载软件

    ==如何卸载: 1.打开一个SHELL终端 2.因为Linux下的软件名都包括版本号,所以卸载前最好先确定这个软件的完整名称. 查找RPM包软件:rpm -qa ×××* 注意:×××指软件名称开头的 ...

  6. 关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }

    异常{ 无法将 匿名方法 转换为类型"System.Delegate",因为它不是委托类型 } 委托实际上是把方法名作为参数,但是若有好多个方法时,就要指明是哪个参数  查看如下代 ...

  7. Android - 设置ImageView为全屏显示

    设置ImageView为全屏显示 本文地址: http://blog.csdn.net/caroline_wendy ImageView默认会适应屏幕大小, 假设想使用全屏填充, 则须要使用: and ...

  8. ZOJ - 3822 Domination (DP)

    Edward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess ...

  9. 北邮iptv用WindowsMediaplayer打不开的解决的方法

    前言:之前我的iptv能够用,可是有次我安装了realplayer,它就偷偷把iptv文件的默认打开方式给篡改了,卸载了                  realplayer之后,iptv不能直接用 ...

  10. web项目启动,运行方法

    1.显示器(Listener) web文件加入 <listener>      <listener-class>cn.ro.common.InitListener</li ...