当前位置: > 部署 >

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

  • 部署
  • 2013-09-05 22:46

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

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


代码附上:

SetCompressor /SOLID lzma
SetCompress force
XPStyle on

OutFile "unkis.exe"
Name "金山杀手"
BrandingText "WwW.Flighty.CN"

;以下为检测运行文件方式,有一定局限性,不推荐。
Section "卸载金山卫士"
  FindProcDLL::FindProc "kxetray.exe"
    Pop $R0
    IntCmp $R0 1 0 no_run
    MessageBox MB_ICONQuESTION|MB_YESNO "安装程序检测到 金山卫士 正在运行,您必须将其卸载才能进行下一步安装,是否现在进行卸载?" IDYES keep IDNO none
  keep:
    ExecWait 'C:\Program Files\Kingsoft\KSafe\uninst.exe'
  none:
    Quit
    no_run:
SectionEnd

;以下为注册表检测方式,两种方式可以选其一,不过,推荐使用注册表检测方式。
Section "卸载金山卫士2"
ReadRegStr $R2 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\金山卫士" "UninstallString"
  StrCmp $R2 "" NO YES
    YES:
    MessageBox MB_ICONQuESTION|MB_YESNO "安装程序检测到 金山卫士 正在运行,您必须将其卸载才能进行下一步安装,是否现在进行卸载?" IDYES keep IDNO none
  keep:
    ExecWait $R2
  none:
    Quit
    NO:
SectionEnd

猜你喜欢

最新评论

说点什么吧
  • 全部评论(0