正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /************************
- CheckMutex.nsi
- ************************/
- ;NSIS 安装程序与卸载程序互相检查互斥的例子
- ;编写:zhfi
- #定义自己的互斥名称:#
- #注意安:装程序不能与卸载程序相同!#
- !define MyMutex_Install "MyMutex_Install"
- !define MyMutex_UnInstall "MyMutex_UnInstall"
- ;--------------------------------
- ;Include Modern UI
- !include "MUI.nsh"
- !include "LogicLib.nsh"
- ;--------------------------------
- ;General
- ;Name and file
- Name "Mutex Test"
- OutFile "Mutex.exe"
- ;--------------------------------
- #添加安装页面:#
- !insertmacro MUI_PAGE_Welcome
- !insertmacro MUI_PAGE_InstFiles
- !insertmacro MUI_PAGE_Finish
- #添加卸载页面:#
- !insertmacro MUI_UNPAGE_Welcome
- !insertmacro MUI_UNPAGE_InstFiles
- !insertmacro MUI_UNPAGE_Finish
- ;--------------------------------
- ;加入语言文件
-
- !insertmacro MUI_LANGUAGE "SimpChinese"
- ;--------------------------------
- ;安装程序部分
- Function .onInit
- InitPluginsDir
- Call CreateMutex
- FunctionEnd
- Function CreateMutex
- #检查安装互斥:#
- ReCheck:
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${MyMutex_Install}") i .R1 ?e'
- Pop $R0
- System::Call 'kernel32::CloseHandle(i R1) i.s'
- #检查卸载互斥:#
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${MyMutex_UnInstall}") i .R3 ?e'
- Pop $R2
- System::Call 'kernel32::CloseHandle(i R3) i.s'
- #判断安装/卸载互斥的存在#
- ${If} $R0 != 0
- MessageBox MB_RetryCancel|MB_ICONEXCLAMATION "安装程序已经运行!" IdRetry ReCheck
- Quit
- ${ElseIf} $R2 != 0
- MessageBox MB_RetryCancel|MB_ICONEXCLAMATION "卸载程序已经运行!" IdRetry ReCheck
- Quit
- ${Else}
- #创建安装互斥:#
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${MyMutex_Install}") i .R1 ?e'
- Pop $R0
- StrCmp $R0 0 +2
- Quit
- ${EndIf}
- FunctionEnd
- Section Install
- SetOutPath $EXEDIR
- WriteUninstaller "$EXEDIR\Uninstall.exe"
- SectionEnd
- ;--------------------------------
- ;卸载程序部分
- Function un.onInit
- InitPluginsDir
- Call un.CreateMutex
- FunctionEnd
- Function Un.CreateMutex
- #检查安装互斥:#
- ReCheck:
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${MyMutex_Install}") i .R1 ?e'
- Pop $R0
- System::Call 'kernel32::CloseHandle(i R1) i.s'
- #检查卸载互斥:#
- CheckUnInstall:
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${MyMutex_UnInstall}") i .R3 ?e'
- Pop $R2
- System::Call 'kernel32::CloseHandle(i R3) i.s'
- #判断安装/卸载互斥的存在#
- ${If} $R0 != 0
- MessageBox MB_RetryCancel|MB_ICONEXCLAMATION "安装程序已经运行!" IdRetry ReCheck
- Quit
- ${ElseIf} $R2 != 0
- MessageBox MB_RetryCancel|MB_ICONEXCLAMATION "卸载程序已经运行!" IdRetry ReCheck
- Quit
- ${Else}
- #创建卸载互斥:#
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${MyMutex_UnInstall}") i .R1 ?e'
- Pop $R0
- StrCmp $R0 0 +2
- Quit
- ${EndIf}
- FunctionEnd
- Section Uninstall
- SetOutPath $EXEDIR
- Delete "$EXEDIR\Uninstall.exe"
- SectionEnd
- #脚本结束!#
复制代码
|