NSIS 单实例运行安装包
Function .onInit
;uac提权
!insertmacro UAC_RunElevated
# 禁止多个安装程序实例 Begin
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "Raysync Client") i .r1 ?e' #注意最后的?e
Pop $R0 #保存LastError返回值
;System::Call 'kernel32::CloseHandle(i r1) i.s' #此处不能关闭句柄,否则可以同时运行多个安装程序,注意r1 != R1,区分大小写
StrCmp $R0 0 L_Run
;MessageBox MB_ICONEXCLAMATION|MB_TOPMOST "发现安装程序正在运行" /SD IDOK
Quit
# 禁止多个安装程序实例 End
L_Run:
...
FunctionEnd