使用NSIS编译安装包的时候经常碰到需要结束相关进程才能安装的情况,比如我修改的QQ或者其他安装包会出现下图中的提示,用户可选择确认来立即结束当前运行程序来继续安装,也可取消。这么做只是为了让当前运行的QQ程序结束掉以便更新一些使用中的文件。

NSIS 编译之检测当前运行的程序

实现代码如下:

Function .onInit
InitPluginsDir
Push $R2
CheckProc:
Push "iexplore.exe"
ProcessWork::existsprocess
Pop $R2
IntCmp $R2 0 Done
MessageBox MB_OKCANCEL|MB_ICONINFORMATION "安装程序检测到 IE浏览器 正在运行,请退出IE后重试。$\r$\n$\r$\n点击“确定”立即结束进程继续安装,点击“取消”退出。" IDCANCEL Exit
Push "iexplore.exe"
Processwork::KillProcess
Sleep 1000
Goto CheckProc
Exit:
Abort
Done:
Pop $R2
FunctionEnd

完。