如果我们要安装或升级的程序正在运行,文件肯定会替换失败,以下代码可以提示用户结束正在运行的程序,需要使用插件FindProcDLL.dll和KillProcdll。
FindProcDLL下载链接:https://pan.baidu.com/s/1AfgyXBkyr2XZTIFi3-1EXg
提取码:u6bf
下载之后,解压出来。拷贝ANSI和Unicode目录下的FindProcDLL.dll到NSIS安装目录下的 Plugins对应目录中。
KillProcdll下载链接: https://pan.baidu.com/s/1pu3E8ejDkG6kDh-1k1Y1Ow
提取码:8fcn
下载之后,解压出来。拷贝KillProcdll.dll到NSIS安装目录下的 Plugins对应目录中。
Function .Oninit
FindProcDLL::FindProc "Template.exe"
Pop $R0
IntCmp $R0 1 0 no_run
MessageBox MB_ICONSTOP "安装程序检测到 Template 正在运行,请退出程序后重试"
Quit
no_run:
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
Abort
FindProcDLL::FindProc "Template.exe"
Pop $R0
IntCmp $R0 1 0 no_run
MessageBox MB_ICONSTOP "安装程序检测到 Template正在运行,请退出程序后重试"
Quit
no_run:
FunctionEnd